DemO/DEMO/Controllers/StocksController.cs

83 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// все про остатки на складах
using DEMO.Data; // база
using DEMO.Models; // остатки
using Microsoft.AspNetCore.Mvc; // контроллер
using Microsoft.EntityFrameworkCore; // база
namespace DEMO.Controllers;
[ApiController] // это api
[Route("api/[controller]")] // адрес будет api/stocks
public class StocksController : ControllerBase
{
private readonly AppDbContext _context; // база
// запоминаю базу
public StocksController(AppDbContext context)
{
_context = context;
}
// отдать все остатки
[HttpGet]
public async Task<IActionResult> GetStocks()
{
// беру остатки и сразу товары и склады чтоб показать названия
var stocks = await _context.Stocks
.Include(s => s.Product)
.Include(s => s.Warehouse)
.ToListAsync();
return Ok(stocks);
}
// добавить остаток
[HttpPost]
public async Task<IActionResult> CreateStock(Stock stock) // приходит товар склад и количество
{
if (stock.Quantity < 0)
return BadRequest("Количество не может быть меньше нуля.");
_context.Stocks.Add(stock); // добавляю
await _context.SaveChangesAsync(); // сохраняю
return Ok(stock);
}
// изменить остаток
[HttpPut("{id}")]
public async Task<IActionResult> UpdateStock(int id, Stock stock)
{
var existingStock = await _context.Stocks.FindAsync(id); // ищу старый
if (existingStock == null)
return NotFound();
if (stock.Quantity < 0)
return BadRequest("Количество не может быть меньше нуля.");
// меняю поля
existingStock.ProductId = stock.ProductId;
existingStock.WarehouseId = stock.WarehouseId;
existingStock.Quantity = stock.Quantity;
await _context.SaveChangesAsync(); // сохраняю
return Ok(existingStock);
}
// удалить остаток
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteStock(int id)
{
var stock = await _context.Stocks.FindAsync(id); // ищу
if (stock == null)
return NotFound();
_context.Stocks.Remove(stock); // удаляю
await _context.SaveChangesAsync(); // сохраняю
return NoContent();
}
}