using API.BusinessLogic; using API.Models.ShoppingListModels; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace API.Controllers { [ApiController] [Route("api/[controller]")] public class ShoppingListController : Controller { private readonly ShoppingListLogic _shoppingListLogic; public ShoppingListController(ShoppingListLogic shoppingListLogic) { _shoppingListLogic = shoppingListLogic; } [HttpGet("get")] public async Task ReadShoppingList() { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _shoppingListLogic.ReadShoppingList(userId); } [HttpPost("add")] public async Task AddItem([FromBody] ShoppingListItemDTO listItemDTO) { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _shoppingListLogic.AddItemToShoppingList(listItemDTO, userId); } [HttpPut("check")] public async Task CheckItem(int itemId) { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _shoppingListLogic.CheckItemInShoppingList(userId, itemId); } [HttpPut("update")] public async Task UpdateItem([FromBody] ShoppingListItemDTO listItemDTO, int itemId) { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _shoppingListLogic.UpdateItemInShoppingList(userId, itemId, listItemDTO); } [HttpDelete("delete")] public async Task DeleteItem(int itemId) { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _shoppingListLogic.DeleteItemInShoppingList(userId, itemId); } [HttpPost("recipeadd")] public async Task AddARecipesItems(int recipeId) { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _shoppingListLogic.AddRecipeToShoppingList(userId, recipeId); } } }