using API.BusinessLogic; using API.Models.RecipeModels; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace API.Controllers { [ApiController] [Route("api/[controller]")] public class RecipeController :Controller { private readonly RecipeLogic _recipeLogic; public RecipeController(RecipeLogic recipeLogic) { _recipeLogic = recipeLogic; } [Authorize] [HttpGet("getall")] public async Task ReadPrefereredRecipes() { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _recipeLogic.GetPrefereredRecipes(userId); } [Authorize] [HttpGet("get/{recipeId}")] public async Task ReadRecipe(int recipeId) { return await _recipeLogic.GetRecipe(recipeId); } [Authorize] [HttpPost("create/{prefereredRecipesId}")] public async Task CreateRecipe([FromBody] RecipeDTO recipe, int prefereredRecipesId) { return await _recipeLogic.CreateRecipe(recipe, prefereredRecipesId); } [Authorize] [HttpPut("edit/{recipeId}")] public async Task EditRecipe([FromBody] RecipeDTO recipe, int recipeId) { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _recipeLogic.EditRecipe(recipe, recipeId, userId); } [Authorize] [HttpDelete("delete/{recipeId}")] public async Task DeleteRecipe(int recipeId) { return await _recipeLogic.DeleteRecipe(recipeId); } } }