// все про заказы using DEMO.Data; // база using DEMO.Models; // заказы using Microsoft.AspNetCore.Mvc; // контроллер using Microsoft.EntityFrameworkCore; // база namespace DEMO.Controllers; [ApiController] // это api [Route("api/[controller]")] // адрес будет api/orders public class OrdersController : ControllerBase { private readonly AppDbContext _context; // база // запоминаю базу public OrdersController(AppDbContext context) { _context = context; } // отдать все заказы [HttpGet] public async Task GetOrders() { // беру заказы и кто их сделал var orders = await _context.Orders .Include(o => o.User) .ToListAsync(); return Ok(orders); } // какие статусы можно ставить private static readonly string[] OkStatuses = ["New", "Processing", "Completed", "Cancelled"]; // добавить заказ [HttpPost] public async Task CreateOrder(Order order) // приходит человек дата статус { if (!OkStatuses.Contains(order.Status)) return BadRequest("Такого статуса нет."); _context.Orders.Add(order); // добавляю await _context.SaveChangesAsync(); // сохраняю return Ok(order); } // изменить заказ [HttpPut("{id}")] public async Task UpdateOrder(int id, Order order) { var existingOrder = await _context.Orders.FindAsync(id); // ищу старый if (existingOrder == null) return NotFound(); if (!OkStatuses.Contains(order.Status)) return BadRequest("Такого статуса нет."); // меняю поля existingOrder.UserId = order.UserId; existingOrder.Date = order.Date; existingOrder.Status = order.Status; await _context.SaveChangesAsync(); // сохраняю return Ok(existingOrder); } // удалить заказ [HttpDelete("{id}")] public async Task DeleteOrder(int id) { var order = await _context.Orders.FindAsync(id); // ищу if (order == null) return NotFound(); _context.Orders.Remove(order); // удаляю await _context.SaveChangesAsync(); // сохраняю return NoContent(); } }