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));
        }