From 62ea9facc5b831212c40d971a66487fb98020aa9 Mon Sep 17 00:00:00 2001 From: AlanMoonbase Date: Thu, 10 Jul 2025 17:20:31 -0700 Subject: [PATCH] Implement Getting Single Items From Store Bug Fixes --- .gitignore | 2 +- qtc-net-server/Controllers/StoreController.cs | 71 +++++++++++++++---- .../Services/StoreService/StoreService.cs | 18 +++-- .../Services/UserService/UserService.cs | 1 + qtc-net-server/qtc-net-server.csproj | 4 -- 5 files changed, 73 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 53845b1..a4dd873 100644 --- a/.gitignore +++ b/.gitignore @@ -367,4 +367,4 @@ FodyWeavers.xsd /qtc-net-server/run.Development.bat /qtc-net-server/appsettings.json /qtc-net-server/user-content/ -/qtc-net-server/Properties/launchSettings.json +/qtc-net-server/Properties/launchSettings.json \ No newline at end of file diff --git a/qtc-net-server/Controllers/StoreController.cs b/qtc-net-server/Controllers/StoreController.cs index da957b3..10c36d7 100644 --- a/qtc-net-server/Controllers/StoreController.cs +++ b/qtc-net-server/Controllers/StoreController.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using qtc_api.Models; using qtc_api.Services.StoreService; using System.Security.Claims; @@ -24,10 +25,16 @@ namespace qtc_api.Controllers return Ok(_storeService.GetStoreItems()); } - [HttpPost] - [Route("buy-item")] - [Authorize] - public async Task>> BuyStoreItem(int id) + [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; @@ -38,17 +45,55 @@ namespace qtc_api.Controllers if (userId != null) { - var user = await _userService.GetUserById(userId); - if(user != null && user.Success && user.Data != null) - { - var result = await _storeService.BuyStoreItem(user.Data.Id, id); - return Ok(result); - } - else return Ok(new ServiceResponse { Success = false, Message = "User Not Found In Auth Header" }); + 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 UserId In Auth Header" }); } - else return Ok(new ServiceResponse { Success = false, Message = "No 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" }); } } } diff --git a/qtc-net-server/Services/StoreService/StoreService.cs b/qtc-net-server/Services/StoreService/StoreService.cs index 2a29a22..368560a 100644 --- a/qtc-net-server/Services/StoreService/StoreService.cs +++ b/qtc-net-server/Services/StoreService/StoreService.cs @@ -25,6 +25,14 @@ namespace qtc_api.Services.StoreService return new ServiceResponse> { Success = true, Data = StoreItems }; } + public ServiceResponse GetStoreItem(int id) + { + var item = StoreItems.FirstOrDefault(e => e.Id == id); + if (item != null) + return new ServiceResponse { Success = true, Data = item }; + else return new ServiceResponse { Success = false, Message = "Item Not Found" }; + } + public ServiceResponse GetBoughtStoreItemFromUser(string userId, int itemId) { // find item owned by user @@ -43,7 +51,7 @@ namespace qtc_api.Services.StoreService else return new ServiceResponse> { Success = false, Message = "User Owns No Items" }; } - public async Task> BuyStoreItem(string userId, int id) + public async Task> BuyStoreItem(string userId, int id) { // find item in store var item = StoreItems.FirstOrDefault(e => e.Id == id); @@ -70,13 +78,13 @@ namespace qtc_api.Services.StoreService await _ctx.SaveChangesAsync(); // return successful service response - return new ServiceResponse { Success = true, Data = ownedStoreItem }; + return new ServiceResponse { Success = true, Data = true }; } - else return new ServiceResponse { Success = false, Message = "Insufficient Currency" }; + else return new ServiceResponse { Success = false, Message = "Insufficient Currency" }; } - else return new ServiceResponse { Success = false, Message = "User Not Found" }; + else return new ServiceResponse { Success = false, Message = "User Not Found" }; } - else return new ServiceResponse { Success = false, Message = "Item Not Found" }; + else return new ServiceResponse { Success = false, Message = "Item Not Found" }; } } } diff --git a/qtc-net-server/Services/UserService/UserService.cs b/qtc-net-server/Services/UserService/UserService.cs index ac648a8..7eb7e7e 100644 --- a/qtc-net-server/Services/UserService/UserService.cs +++ b/qtc-net-server/Services/UserService/UserService.cs @@ -206,6 +206,7 @@ dbUser.Username = request.Username; dbUser.Bio = request.Bio; dbUser.DateOfBirth = request.DateOfBirth; + dbUser.ActiveProfileCosmetic = request.ProfileCosmeticId; await _dataContext.SaveChangesAsync(); diff --git a/qtc-net-server/qtc-net-server.csproj b/qtc-net-server/qtc-net-server.csproj index e297e34..6488c48 100644 --- a/qtc-net-server/qtc-net-server.csproj +++ b/qtc-net-server/qtc-net-server.csproj @@ -39,8 +39,4 @@ - - - -