Employee Controller
Employee Controller
Authorization;
using Microsoft.AspNetCore.Mvc;
using Multinet.Core.Entities;
using Multinet.Core.Validators;
using Multinet.Infrastructure.Interfaces;
using Multinet.Infrastructure.Statics;
namespace Multinet.UI.Controllers
{
[Authorize]
public class EmployeeController : Controller
{
#region Constructor
private readonly IUnitOfWork _unitOfWork;
#region Index
[Authorize(Policy = "AccidentsPolicy")]
public async Task<IActionResult> Index()
{
try
{
var employees = await
_unitOfWork.EmployeeRepository.GetAllEmployees();
return View(employees);
}
catch (Exception ex)
{
TempData["errorMessage"] = ex.Message;
return View();
}
}
#endregion
if (!employeeState.IsValid)
{
ViewBag.Departments = await
_unitOfWork.DepartmentRepository.GetAllDepartments();
return Json(new { success = false, message = string.Join(", ",
employeeState.Errors.Select(e => e.ErrorMessage))});
}
else
{
if (ModelState.IsValid)
{
await
_unitOfWork.EmployeeRepository.AddEmployee(employeeVM);
await _unitOfWork.SaveAsync();
ViewBag.Departments = await
_unitOfWork.DepartmentRepository.GetAllDepartments();
return Json(new { success = false, message = "État du modèle
invalide"});
}
}
catch (Exception ex)
{
ViewBag.Departments = await
_unitOfWork.DepartmentRepository.GetAllDepartments();
return Json(new { success = false, message = ex.Message});
}
}
#endregion
ViewBag.Departments = await
_unitOfWork.DepartmentRepository.GetAllDepartments();
return View(employee);
}
catch (Exception ex)
{
TempData["errorMessage"] = ex.Message;
return RedirectToAction("Index");
}
}
#endregion
if (!employeeState.IsValid)
{
ViewBag.Departments = await
_unitOfWork.DepartmentRepository.GetAllDepartments();
return Json(new { success = false, message = string.Join(", ",
employeeState.Errors.Select(e => e.ErrorMessage))});
}
else
{
if (ModelState.IsValid)
{
await
_unitOfWork.EmployeeRepository.UpdateEmployee(employee);
await _unitOfWork.SaveAsync();
ViewBag.Departments = await
_unitOfWork.DepartmentRepository.GetAllDepartments();
return Json(new { success = false, message = "État du modèle
invalide"});
}
}
catch (Exception ex)
{
ViewBag.Departments = await
_unitOfWork.DepartmentRepository.GetAllDepartments();
return Json(new { success = false, message = ex.Message});
}
}
#endregion
#region Delete
[HttpPost]
[Route("Employee/Delete/{id}")]
[Authorize(Policy = "LockDeletePolicy")]
public async Task<IActionResult> Delete(int id)
{
try
{
if (ModelState.IsValid)
{
await _unitOfWork.EmployeeRepository.DeleteEmployee(id);
await _unitOfWork.SaveAsync();