77 lines
2.3 KiB
C#
77 lines
2.3 KiB
C#
// все про остатки на складах
|
||
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) // приходит товар склад и количество
|
||
{
|
||
_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();
|
||
|
||
// меняю поля
|
||
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();
|
||
}
|
||
}
|