90 lines
2.9 KiB
C#
90 lines
2.9 KiB
C#
// товары внутри заказов
|
||
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<IActionResult> GetOrderItems()
|
||
{
|
||
// беру позиции и сразу заказ и товар
|
||
var orderItems = await _context.OrderItems
|
||
.Include(i => i.Order)
|
||
.Include(i => i.Product)
|
||
.ToListAsync();
|
||
|
||
return Ok(orderItems);
|
||
}
|
||
|
||
// добавить товар в заказ
|
||
[HttpPost]
|
||
public async Task<IActionResult> CreateOrderItem(OrderItem orderItem) // приходит заказ товар колво цена
|
||
{
|
||
if (orderItem.Quantity <= 0)
|
||
return BadRequest("Количество должно быть больше нуля.");
|
||
|
||
if (orderItem.Price <= 0)
|
||
return BadRequest("Цена должна быть больше нуля.");
|
||
|
||
_context.OrderItems.Add(orderItem); // добавляю
|
||
await _context.SaveChangesAsync(); // сохраняю
|
||
return Ok(orderItem);
|
||
}
|
||
|
||
// изменить позицию
|
||
[HttpPut("{id}")]
|
||
public async Task<IActionResult> UpdateOrderItem(int id, OrderItem orderItem)
|
||
{
|
||
var existingItem = await _context.OrderItems.FindAsync(id); // ищу старую
|
||
|
||
if (existingItem == null)
|
||
return NotFound();
|
||
|
||
if (orderItem.Quantity <= 0)
|
||
return BadRequest("Количество должно быть больше нуля.");
|
||
|
||
if (orderItem.Price <= 0)
|
||
return BadRequest("Цена должна быть больше нуля.");
|
||
|
||
// меняю поля
|
||
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<IActionResult> DeleteOrderItem(int id)
|
||
{
|
||
var orderItem = await _context.OrderItems.FindAsync(id); // ищу
|
||
|
||
if (orderItem == null)
|
||
return NotFound();
|
||
|
||
_context.OrderItems.Remove(orderItem); // удаляю
|
||
await _context.SaveChangesAsync(); // сохраняю
|
||
|
||
return NoContent();
|
||
}
|
||
}
|