public async Task <IActionResult> Create([Bind("Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeId")] EmployeeSystemDesignPatterns.Models.EmployeeModels.Employee employee) { if (ModelState.IsValid) { //For Simple Factory //EmployeeManagerFactory empFactory = new EmployeeManagerFactory(); //var empManager = empFactory.createFactory(employee.EmployeeTypeId); //employee.Bonus = empManager.getBonus(); //employee.HourlyPay = empManager.getPay(); //For Factory Method Design Pattern EmployeeManagerFactory empFactory = new EmployeeManagerFactory(); var baseEmployeeFactory = empFactory.createEmployeeTypeFactory(employee); baseEmployeeFactory.ComputeAllowances(); //For Abstract Factory Method Pattern EmployeeSystemFactory employeeSystemFactory = new EmployeeSystemFactory(); var createdFactory = employeeSystemFactory.Create(employee); EmployeeSystemManager manager = new EmployeeSystemManager(createdFactory); employee.ComputerDetails = manager.getSystemDetails(); _context.Add(employee); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } // ViewBag.EmployeeTypeID = new SelectList(_context.EmployeeTypes, "EmployeeTypesId", "EmpType", employee.EmployeeTypeId); return(View(employee)); //return View(employee); }
public async Task <IActionResult> Edit(int id, [Bind("Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeID")] EmployeeSystemDesignPatterns.Models.EmployeeModels.Employee employee) { if (id != employee.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(employee); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EmployeeExists(employee.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(employee)); }