/
h0tnanny
/
DeliveryService
Обзор
Документация
Войти
/
h0tnanny
/
DeliveryService
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
DeliveryService.API/Controllers/SellerController.cs
95 строк
3 KB
Хатнянский Максим
Init
06 мар 2024, 02:20
06 мар 2024, 02:20
e7c6763
Код
Авторство
О чём код?
using DeliveryService.API.Models; using DeliveryService.Persistence; using DeliveryService.Persistence.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace DeliveryService.API.Controllers; [ApiController] [Route("[controller]")] public sealed class SellerController(ILogger<SellerController> logger, DeliveryDbContext context) : ControllerBase { [HttpGet("{id:guid}")] [ProducesResponseType<Seller>(StatusCodes.Status200OK)] public async Task<ActionResult> GetSeller(Guid id) { var seller = await context.Sellers.AsNoTracking().FirstOrDefaultAsync(s => s.Id == id); if (seller == null) return NotFound("Продавец не найден"); return Ok(seller); } [HttpGet("GetAll")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType<IEnumerable<Seller>>(StatusCodes.Status200OK)] public async Task<ActionResult> GetAllSellers() { var sellers = await context.Sellers.AsNoTracking().ToListAsync(); return Ok(sellers); } [HttpPost("Create")] [ProducesResponseType<Seller>(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status409Conflict)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task<ActionResult> CreateSeller(SellerModel sellerModel) { var sellerCheck = await context.Sellers.AsNoTracking() .FirstOrDefaultAsync(s => s.Email == sellerModel.Email && s.Phone == sellerModel.Phone); if (sellerCheck!= null) return Conflict("Пользователь с таким email или телефоном уже существует"); var seller = new Seller { Id = Guid.NewGuid(), Name = sellerModel.Name, FirstName = sellerModel.FirstName, Email = sellerModel.Email, Phone = sellerModel.Phone, DateRegistration = DateTime.Now }; context.Sellers.Add(seller); await context.SaveChangesAsync(); return Ok(seller); } [HttpPut("Update/{id:guid}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task<ActionResult> UpdateSeller(Guid id, SellerModel sellerModel) { var seller = await context.Sellers.AsNoTracking().FirstOrDefaultAsync(s => s.Id == id); if (seller == null) return NotFound("Продавец не найден"); seller.Name = sellerModel.Name; seller.FirstName = sellerModel.FirstName; seller.Email = sellerModel.Email; seller.Phone = sellerModel.Phone; context.Sellers.Update(seller); await context.SaveChangesAsync(); return Ok(seller); } [HttpDelete("Delete/{id:guid}")] [ProducesResponseType(StatusCodes.Status204NoContent)] public async Task<ActionResult> DeleteSeller(Guid id) { var seller = await context.Sellers.AsNoTracking().FirstOrDefaultAsync(s => s.Id == id); if (seller == null) return NoContent(); var products = await context.Products.AsNoTracking().Where(p => p.SellerId == id).ToListAsync(); context.Products.RemoveRange(products); context.Sellers.Remove(seller); await context.SaveChangesAsync(); return NoContent(); } }