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)); } } }