easyeat/backend/API/Controllers/ShoppingListController.cs
2025-04-29 12:31:40 +02:00

75 lines
3.0 KiB
C#

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<IActionResult> 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<IActionResult> 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<IActionResult> 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<IActionResult> 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<IActionResult> 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<IActionResult> 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);
}
}
}