/// <summary>
        /// Gets the employee payout.
        /// </summary>
        /// <param name="employee">The employee.</param>
        /// <param name="start">The start date and time </param>
        /// <param name="end">The end date and time</param>
        /// <param name="payoutTable">The payout table.</param>
        /// <returns></returns>
        private EmployeePayout GetEmployeePayout(
            CRySTALDataConnections.CRySTALDataSet.UsersRow employee, 
            DateTime start, DateTime end, 
            CRySTALDataConnections.CRySTALDataSet.RolePayrateDataTable payoutTable)
        {
            WorkerShiftsTableAdapter wsa = new WorkerShiftsTableAdapter();
            var shifts = wsa.GetDataByEmployeeIDInTimeFrame(employee.ID, end, start);
            if (shifts.Count == 0) return null;

            EmployeePayout re = new EmployeePayout();
            re.EmployeeID = employee.ID;
            re.EmployeeName = employee.LastName + ", " + employee.FirstName;
            re.Roles = new List<RolePayout>();
            List<string> roles = (from p in shifts select p.Role).Distinct().ToList();
            decimal payoutTotal = 0;
            foreach (string role in roles)
            {
                RolePayout rp = new RolePayout();
                rp.HoursWorked = (decimal)(from p in shifts
                                  where (!p.IsEndTimeNull() && p.Role==role)
                                  select p.EndTime.Subtract(p.StartTime).TotalHours).Sum();
                rp.Rate = (from p in payoutTable where p.Role == role select p.PayPerHour).FirstOrDefault();
                rp.RoleName = role;
                rp.TotalPayment = rp.HoursWorked * rp.Rate;
                re.Roles.Add(rp);
                payoutTotal += rp.TotalPayment;
            }
            re.TotalPayment = payoutTotal;
            return re;
        }