// товары внутри заказов using DEMO.Data; // база using DEMO.Models; // позиции заказа using Microsoft.AspNetCore.Mvc; // контроллер using Microsoft.EntityFrameworkCore; // база namespace DEMO.Controllers; [ApiController] // это api [Route("api/[controller]")] // адрес будет api/orderitems public class OrderItemsController : ControllerBase { private readonly AppDbContext _context; // база // запоминаю базу public OrderItemsController(AppDbContext context) { _context = context; } // отдать все позиции [HttpGet] public async Task GetOrderItems() { // беру позиции и сразу заказ и товар var orderItems = await _context.OrderItems .Include(i => i.Order) .Include(i => i.Product) .ToListAsync(); return Ok(orderItems); } // добавить товар в заказ [HttpPost] public async Task CreateOrderItem(OrderItem orderItem) // приходит заказ товар колво цена { _context.OrderItems.Add(orderItem); // добавляю await _context.SaveChangesAsync(); // сохраняю return Ok(orderItem); } // изменить позицию [HttpPut("{id}")] public async Task UpdateOrderItem(int id, OrderItem orderItem) { var existingItem = await _context.OrderItems.FindAsync(id); // ищу старую if (existingItem == null) return NotFound(); // меняю поля existingItem.OrderId = orderItem.OrderId; existingItem.ProductId = orderItem.ProductId; existingItem.Quantity = orderItem.Quantity; existingItem.Price = orderItem.Price; await _context.SaveChangesAsync(); // сохраняю return Ok(existingItem); } // удалить позицию [HttpDelete("{id}")] public async Task DeleteOrderItem(int id) { var orderItem = await _context.OrderItems.FindAsync(id); // ищу if (orderItem == null) return NotFound(); _context.OrderItems.Remove(orderItem); // удаляю await _context.SaveChangesAsync(); // сохраняю return NoContent(); } }