public async Task <ActionResult> CalculatePays(CalculatePayView view)
        {
            if (ModelState.IsValid)
            {
                if (view.DateStart <= view.DateEnd)
                {
                    var recordTimes = await db.RecordTimes.
                                      Where(r => r.DateStart >= view.DateStart && r.DateStart <= view.DateEnd).
                                      OrderBy(r => r.EmployeeId).
                                      ToListAsync();

                    var calculatedSalaries = new List <CalculatedSalary>();

                    if (recordTimes.Count != 0)
                    {
                        int i = 0;
                        while (i < recordTimes.Count)
                        {
                            int      previousEmployee = recordTimes[i].EmployeeId;
                            TimeSpan totalTime        = new TimeSpan();
                            while (i < recordTimes.Count && previousEmployee == recordTimes[i].EmployeeId)
                            {
                                totalTime += recordTimes[i].Time;
                                i++;
                            }

                            var employee = await db.Employees.FindAsync(previousEmployee);

                            calculatedSalaries.Add(new CalculatedSalary
                            {
                                EmployeeId  = previousEmployee,
                                Employee    = employee,
                                TotalToPay  = this.CalculateSalary(employee, totalTime),
                                WorkedTime  = totalTime,
                                WorkedHours = totalTime.TotalHours,
                            });
                        }

                        System.Web.HttpContext.Current.Session["calculatedSalaries"] = calculatedSalaries;

                        db.CalculatedSalaries.RemoveRange(db.CalculatedSalaries.ToList());
                        db.CalculatedSalaries.AddRange(calculatedSalaries);
                        await db.SaveChangesAsync();

                        return(RedirectToAction("ShowResults"));
                    }

                    ModelState.AddModelError(string.Empty, "No hay registros para liquidar la nómina.");
                    return(View(view));
                }

                ModelState.AddModelError(string.Empty, "La fecha de fin debe ser mayor o igual a la fecha inicial.");
            }

            return(View(view));
        }
        public ActionResult CalculatePays()
        {
            var view = new CalculatePayView
            {
                DateStart = DateTime.Today,
                DateEnd   = DateTime.Today,
            };

            return(View(view));
        }