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

110 lines
3.3 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using YAPContracts.AdapterContracts;
using YAPContracts.BindingModels;
namespace YAPWebAPI.Controllers
{
[Authorize]
public class StorekeeperController : Controller
{
private readonly IStorekeeperAdapter _storekeeperAdapter;
public StorekeeperController(IStorekeeperAdapter storekeeperAdapter)
{
_storekeeperAdapter = storekeeperAdapter;
}
// список всех работников
public IActionResult Index()
{
var storekeepers = _storekeeperAdapter.GetList();
return View(storekeepers);
}
// просмотр деталей конкретного работника
public IActionResult Details(string id)
{
var storekeeper = _storekeeperAdapter.GetElement(id);
if (storekeeper == null)
{
return NotFound();
}
return View(storekeeper);
}
// GET: форма создания
public IActionResult Create()
{
return View();
}
// POST: создание нового работника
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(StorekeeperBindingModel model)
{
if (ModelState.IsValid)
{
_storekeeperAdapter.Register(model);
return RedirectToAction(nameof(Index));
}
return View(model);
}
// GET: форма редактирования
public IActionResult Edit(string id)
{
var storekeeper = _storekeeperAdapter.GetElement(id);
if (storekeeper == null)
{
return NotFound();
}
// для редактирования можно заполнить BindingModel из ViewModel
var bindingModel = new StorekeeperBindingModel
{
Id = storekeeper.Id,
Login = storekeeper.Login,
Email = storekeeper.Email,
Password = "", // пароль редактируется отдельно
};
return View(bindingModel);
}
// POST: обновление данных
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit(StorekeeperBindingModel model)
{
if (ModelState.IsValid)
{
_storekeeperAdapter.Update(model);
return RedirectToAction(nameof(Index));
}
return View(model);
}
// GET: форма удаления
public IActionResult Delete(string id)
{
var storekeeper = _storekeeperAdapter.GetElement(id);
if (storekeeper == null)
{
return NotFound();
}
return View(storekeeper);
}
// POST: подтверждение удаления
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public IActionResult DeleteConfirmed(string id)
{
_storekeeperAdapter.Delete(id);
return RedirectToAction(nameof(Index));
}
}
}