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

120 lines
3.7 KiB
C#

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