public async Task <IActionResult> Create(EmployeesHoursViewModel _employeeHours) { if (_employeeHours == null) { return(NotFound()); } var currenthours = _context.EmployeeHours.Where(d => d.Date.Date == _employeeHours.EmployeeHours.Date.Date).ToList(); if (currenthours.Count > 0) { int totalForDate = _employeeHours.EmployeeHours.Hours; foreach (var item in currenthours) { totalForDate += item.Hours; } if (totalForDate > 12) { ModelState.AddModelError("Max Hours", "An employee can be assigned multiple tasks but cannot work more than 12 hours a day."); EmployeesHoursViewModel vm = new EmployeesHoursViewModel(_context, _employeeHours.TempEmpId); _employeeHours.TaskList = vm.TaskList; } } //get task dates var tasks = _context.Tasks.Where(d => d.TaskId == _employeeHours.EmployeeHours.TaskId).FirstOrDefault(); if (tasks != null) { DateTime startDate = tasks.StartDate; DateTime endDate = tasks.EndDate; if (_employeeHours.EmployeeHours.Date < startDate) { ModelState.AddModelError("Start Date out of range", "Please select a valid date. The start date for the task selected is " + startDate.ToShortDateString()); EmployeesHoursViewModel vm = new EmployeesHoursViewModel(_context, _employeeHours.TempEmpId); _employeeHours.TaskList = vm.TaskList; } if (_employeeHours.EmployeeHours.Date > endDate) { ModelState.AddModelError("End Date out of range", "Please select a valid date. The end date for the task selected is " + endDate.ToShortDateString()); EmployeesHoursViewModel vm = new EmployeesHoursViewModel(_context, _employeeHours.TempEmpId); _employeeHours.TaskList = vm.TaskList; } } if (ModelState.IsValid) { decimal rate = _context.Roles.Where(d => d.RoleId == _context.Employees.Find(_employeeHours.TempEmpId).RoleId).FirstOrDefault().RoleRate; int hours = _employeeHours.EmployeeHours.Hours; _employeeHours.EmployeeHours.Rate = rate; _employeeHours.EmployeeHours.Total = Tools.TotalCalculator.GetCaptureTotal(rate, hours); _context.Add(EmployeesHoursViewModel.ConvertViewModel(_employeeHours)); await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Employees")); } return(View(_employeeHours)); }
public async Task <IActionResult> Edit(EmployeesHoursViewModel _employeeHours) { if (_employeeHours == null) { return(NotFound()); } var currenthours = _context.EmployeeHours.Where(d => d.Date.Date == _employeeHours.EmployeeHours.Date.Date && d.EmpHoursId != _employeeHours.EmployeeHours.EmpHoursId).ToList(); if (currenthours.Count > 0) { int totalForDate = _employeeHours.EmployeeHours.Hours; foreach (var item in currenthours) { totalForDate += item.Hours; } if (totalForDate > 12) { ModelState.AddModelError("Max Hours", "An employee can be assigned multiple tasks but cannot work more than 12 hours a day."); EmployeesHoursViewModel vm = new EmployeesHoursViewModel(_context, _employeeHours.TempEmpId); _employeeHours.TaskList = vm.TaskList; } } if (ModelState.IsValid) { try { decimal rate = _context.Roles.Where(d => d.RoleId == _context.Employees.Find(_employeeHours.TempEmpId).RoleId).FirstOrDefault().RoleRate; int hours = _employeeHours.EmployeeHours.Hours; _employeeHours.EmployeeHours.Rate = rate; _employeeHours.EmployeeHours.Total = Tools.TotalCalculator.GetCaptureTotal(rate, hours); _context.Update(EmployeesHoursViewModel.ConvertViewModel(_employeeHours)); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EmployeeHoursExists(_employeeHours.EmployeeHours.EmpHoursId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(_employeeHours)); }