using qtc_api.Services.StoreService; using System.Security.Claims; namespace qtc_api.Controllers { [Route("api/store")] [ApiController] public class StoreController : ControllerBase { private readonly StoreService _storeService; public StoreController(StoreService storeService) { _storeService = storeService; } [HttpGet] [Route("all-items")] public ActionResult>> GetAllItems() { return Ok(_storeService.GetStoreItems()); } [HttpGet] [Route("item")] public ActionResult> GetItem(int id) { return Ok(_storeService.GetStoreItem(id)); } [HttpGet] [Route("bought-items")] public ActionResult>> GetBoughtStoreItems() { var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { IEnumerable claims = identity.Claims; var userId = claims.First().Value; if (userId != null) { var result = _storeService.GetBoughtStoreItemsFromUser(userId); return Ok(result); } else return Ok(new ServiceResponse> { Success = false, Message = "No UserId In Auth Header" }); } else return Ok(new ServiceResponse> { Success = false, Message = "No Auth Header" }); } [HttpGet] [Route("bought-item")] public ActionResult> GetBoughtItem(int id) { var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { IEnumerable claims = identity.Claims; var userId = claims.First().Value; if (userId != null) { var result = _storeService.GetBoughtStoreItemFromUser(userId, id); return Ok(result); } else return Ok(new ServiceResponse> { Success = false, Message = "No UserId In Auth Header" }); } else return Ok(new ServiceResponse> { Success = false, Message = "No Auth Header" }); } [HttpPost] [Route("buy-item")] [Authorize] public async Task>> BuyStoreItem(int id) { var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { IEnumerable claims = identity.Claims; var userId = claims.First().Value; if (userId != null) { var result = await _storeService.BuyStoreItem(userId, id); return Ok(result); } else return Ok(new ServiceResponse { Success = false, Message = "No UserId In Auth Header" }); } else return Ok(new ServiceResponse { Success = false, Message = "No Auth Header" }); } } }