/
h0tnanny
/
DeliveryService
Обзор
Документация
Войти
/
h0tnanny
/
DeliveryService
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
DeliveryService.API/Controllers/ProductCategoryController.cs
89 строк
3 KB
Хатнянский Максим
add razor pages
13 мар 2024, 20:33
13 мар 2024, 20:33
570f7a3
Код
Авторство
О чём код?
using DeliveryService.API.Models; using DeliveryService.Persistence; using DeliveryService.Persistence.Models.Products; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace DeliveryService.API.Controllers; [ApiController] [Route("[controller]")] public sealed class ProductCategoryController(ILogger<ProductCategoryController> logger, DeliveryDbContext context) : ControllerBase { [HttpGet("{id:guid}")] [ProducesResponseType<ProductCategory>(200)] public async Task<IActionResult> GetProductCategory(Guid id) { var productCategory = await context.ProductCategories.FirstOrDefaultAsync(x => x.Id == id); if (productCategory == null) return NotFound("Категория не найдена"); return Ok(productCategory); } [HttpGet("GetAll")] [ProducesResponseType<IEnumerable<ProductCategory>>(200)] public async Task<IActionResult> GetAllCategories() { var productCategories = await context.ProductCategories.ToListAsync(); return Ok(productCategories); } [HttpPost("Create")] [ProducesResponseType<ProductCategory>(200)] public async Task<IActionResult> CreateProductCategory([FromBody] ProductCategoryModel categoryModel) { var productCheck = await context.ProductCategories .FirstOrDefaultAsync(x => x.Name == categoryModel.Name); if (productCheck!= null) return Conflict("Категория с таким названием уже существует"); var productCategory = new ProductCategory() { Id = Guid.NewGuid(), Name = categoryModel.Name, Description = categoryModel.Description, }; context.ProductCategories.Add(productCategory); await context.SaveChangesAsync(); return Ok(productCategory); } [HttpPut("Update/{id:guid}")] [ProducesResponseType<ProductCategory>(200)] public async Task<IActionResult> UpdateProductCategory(Guid id, [FromBody] ProductCategoryModel categoryModel) { var productCategory = await context.ProductCategories.FirstOrDefaultAsync(x => x.Id == id); if (productCategory == null) return NotFound("Категория не найдена"); productCategory.Name = categoryModel.Name; productCategory.Description = categoryModel.Description; await context.SaveChangesAsync(); return Ok(productCategory); } [HttpDelete("Delete/{id:guid}")] [ProducesResponseType(204)] public async Task<IActionResult> DeleteProductCategory(Guid id) { var productCategory = await context.ProductCategories.FirstOrDefaultAsync(x => x.Id == id); if (productCategory == null) return NotFound("Категория не найдена"); // var productCategoryProducts = await context.ProductCategoryProducts // .Where(pc => pc.ProductCategoryId == id) // .AsNoTracking() // .Include(productCategoryProduct => productCategoryProduct.Product) // .ToListAsync(); // // var products = productCategoryProducts.Select(productCategoryProduct => productCategoryProduct.Product).ToList(); // context.Products.RemoveRange(products); // context.ProductCategories.Remove(productCategory); // context.ProductCategoryProducts.RemoveRange(productCategoryProducts); await context.SaveChangesAsync(); return NoContent(); } }