Files
PIBD-23_Coursach_YouAreProg…/YouAreProgrammerShop/YAPWebAPI/Controllers/PurchaseController.cs

111 lines
3.0 KiB
C#

using AutoMapper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using YAPContracts.AdapterContracts;
using YAPContracts.BindingModels;
using YAPContracts.BusinessLogicContracts;
using YAPContracts.DataModels;
using YAPContracts.ViewModels;
namespace YAPWebAPI.Controllers
{
[Authorize]
public class PurchaseController : Controller
{
private readonly IPurchaseAdapter _purchaseAdapter;
public PurchaseController(IPurchaseAdapter purchaseAdapter)
{
_purchaseAdapter = purchaseAdapter;
}
// список всех покупок
public IActionResult Index()
{
var purchases = _purchaseAdapter.GetList();
return View(purchases);
}
// просмотр деталей
public IActionResult Details(string id)
{
var purchase = _purchaseAdapter.GetElement(id);
if (purchase == null)
{
return NotFound();
}
return View(purchase);
}
// форма добавления
public IActionResult Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(PurchaseBindingModel model)
{
if (ModelState.IsValid)
{
_purchaseAdapter.Register(model);
return RedirectToAction(nameof(Index));
}
return View(model);
}
// форма редактирования
public IActionResult Edit(string id)
{
var purchase = _purchaseAdapter.GetElement(id);
if (purchase == null)
{
return NotFound();
}
var bindingModel = new PurchaseBindingModel
{
Id = purchase.Id,
UserId = purchase.UserId,
PurchaseDate = purchase.PurchaseDate,
TotalPrice = purchase.TotalPrice,
// сюда можно маппить связанные продукты/сборки
};
return View(bindingModel);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit(PurchaseBindingModel model)
{
if (ModelState.IsValid)
{
_purchaseAdapter.Update(model);
return RedirectToAction(nameof(Index));
}
return View(model);
}
// удаление
public IActionResult Delete(string id)
{
var purchase = _purchaseAdapter.GetElement(id);
if (purchase == null)
{
return NotFound();
}
return View(purchase);
}
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public IActionResult DeleteConfirmed(string id)
{
_purchaseAdapter.Delete(id);
return RedirectToAction(nameof(Index));
}
}
}