using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using GreenTree.Strohrmann.ERP.Core.Domain.Business; using GreenTree.Strohrmann.ERP.Domain.Model; using GreenTree.Strohrmann.ERP.Web.Extension; using GreenTree.Strohrmann.ERP.Web.Models.Business; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; namespace GreenTree.Strohrmann.ERP.Web.Controllers { public class EmployeeController : Controller { #region DI fields // The global DbContext private readonly ERPDbContext _eRPDbContext; #endregion #region Ctor /// /// Initializes a new instance of the EmployeeController class /// /// Global DbContext. public EmployeeController(ERPDbContext eRPDbContext) { _eRPDbContext = eRPDbContext; } #endregion #region Actions // GET: EmployeeController public ActionResult Index() { var employees = _eRPDbContext.Employees .ToList() .Select(e => new EmployeeModel(e)); return View(employees); } // GET: EmployeeController/Details/5 public ActionResult Details(int id) { var employee = _eRPDbContext.Employees .FirstOrDefault(e => e.Id == id); var employeeModel = new EmployeeModel(employee); return View(employeeModel); } // GET: EmployeeController/Create public ActionResult Create() { ViewData.AddSelectList("AvailableDegrees", _eRPDbContext.EmployeeDegrees, m => m.Id, m => m.Name); return View(); } // POST: EmployeeController/Create [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(EmployeeModel model) { if (!ModelState.IsValid) { ViewData.AddSelectList("AvailableDegrees", _eRPDbContext.EmployeeDegrees, m => m.Id, m => m.Name); return View(model); } var employee = new Employee { Firstname = model.Firstname, Lastname = model.Lastname, Birthdate = model.Birthdate, MailAddress = model.MailAddress, EmployeeDegree = _eRPDbContext.EmployeeDegrees.Find(model.EmployeeDegree.Id), CreatedBy = User.Identity.Name, CreatedOn = DateTime.Now }; _eRPDbContext.Employees.Add(employee); _eRPDbContext.SaveChanges(); return RedirectToAction(nameof(Index)); } // GET: EmployeeController/Edit/5 public ActionResult Edit(int id) { ViewData.AddSelectList("AvailableDegrees", _eRPDbContext.EmployeeDegrees, m => m.Id, m => m.Name); var employee = _eRPDbContext.Employees .FirstOrDefault(c => c.Id == id); var employeeModel = new EmployeeModel(employee); return View(employeeModel); } // POST: EmployeeController/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(int id, EmployeeModel model) { if (!ModelState.IsValid) { ViewData.AddSelectList("AvailableDegrees", _eRPDbContext.EmployeeDegrees, m => m.Id, m => m.Name); return View(model); } var employee = _eRPDbContext.Employees .FirstOrDefault(u => u.Id == id); employee.Firstname = model.Firstname; employee.Lastname = model.Lastname; employee.Birthdate = model.Birthdate; employee.MailAddress = model.MailAddress; employee.EmployeeDegree = _eRPDbContext.EmployeeDegrees.Find(model.EmployeeDegree.Id); employee.ChangedBy = User.Identity.Name; employee.ChangedOn = DateTime.Now; _eRPDbContext.SaveChanges(); return RedirectToAction(nameof(Index)); } // POST: EmployeeController/Delete/5 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Delete(int id, IFormCollection collection) { var employee = _eRPDbContext.Employees .FirstOrDefault(c => c.Id == id); _eRPDbContext.Employees.Remove(employee); _eRPDbContext.SaveChanges(); return RedirectToAction(nameof(Index)); } #endregion #region Helper #endregion } }