public void ComputeAllowanceNone()
        {
            Initialize();
            DeleteInfo();

            //Test Data
            var employee = new Employee
            {
                EmployeeCode = "11001",
                FirstName    = "Jona",
                LastName     = "Pereira",
                MiddleName   = "Aprecio",
                BirthDate    = DateTime.Parse("02/02/1991"),
                Gender       = 1,
                IsActive     = true
            };

            var employee2 = new Employee
            {
                EmployeeCode = "11002",
                FirstName    = "Cornelio Jr.",
                LastName     = "Cawicaan",
                MiddleName   = "Bue",
                BirthDate    = DateTime.Parse("10/30/1989"),
                Gender       = 2,
                IsActive     = true
            };

            var employeeInfo = new EmployeeInfo
            {
                Employee        = employee,
                Salary          = 120,
                SalaryFrequency = FrequencyType.Hourly,
                Allowance       = 350
            };

            var employeeInfo2 = new EmployeeInfo
            {
                Employee        = employee2,
                Salary          = 150,
                SalaryFrequency = FrequencyType.Hourly,
                Allowance       = 400
            };

            _employeeInfoRepository.Add(employeeInfo);
            _employeeInfoRepository.Add(employeeInfo2);

            var totalEmployeeHours = new TotalEmployeeHours
            {
                EmployeeId           = 1,
                Date                 = DateTime.Parse("05/12/2016"),
                Hours                = 8,
                Type                 = RateType.Regular,
                TotalEmployeeHoursId = 1
            };

            var totalEmployeeHours2 = new TotalEmployeeHours
            {
                EmployeeId           = 1,
                Date                 = DateTime.Parse("05/12/2016"),
                Hours                = 3,
                Type                 = RateType.OverTime,
                TotalEmployeeHoursId = 2
            };

            var totalEmployeeHours3 = new TotalEmployeeHours
            {
                EmployeeId           = 2,
                Date                 = DateTime.Parse("05/12/2016"),
                Hours                = 5,
                Type                 = RateType.Regular,
                TotalEmployeeHoursId = 1
            };

            var totalEmployeeHours4 = new TotalEmployeeHours
            {
                EmployeeId           = 2,
                Date                 = DateTime.Parse("05/12/2016"),
                Hours                = 2,
                Type                 = RateType.OverTime,
                TotalEmployeeHoursId = 2
            };

            var totalEmployeeHours5 = new TotalEmployeeHours
            {
                EmployeeId           = 1,
                Date                 = DateTime.Parse("05/13/2016"),
                Hours                = 10,
                Type                 = RateType.Regular,
                TotalEmployeeHoursId = 1
            };

            var totalEmployeeHours6 = new TotalEmployeeHours
            {
                EmployeeId           = 1,
                Date                 = DateTime.Parse("05/13/2016"),
                Hours                = 3,
                Type                 = RateType.OverTime,
                TotalEmployeeHoursId = 2
            };

            var totalEmployeeHours7 = new TotalEmployeeHours
            {
                EmployeeId           = 2,
                Date                 = DateTime.Parse("05/13/2016"),
                Hours                = 1,
                Type                 = RateType.Regular,
                TotalEmployeeHoursId = 1
            };

            var totalEmployeeHours8 = new TotalEmployeeHours
            {
                EmployeeId           = 2,
                Date                 = DateTime.Parse("05/13/2016"),
                Hours                = 2,
                Type                 = RateType.NightDifferential,
                TotalEmployeeHoursId = 2
            };

            _totalEmployeeHoursRepository.Add(totalEmployeeHours);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours2);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours3);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours4);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours5);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours6);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours7);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours8);

            var payrollDate = DateTime.Parse("05/18/2016");

            var employeePayrollItem = new EmployeePayrollItem
            {
                EmployeeId  = 1,
                TotalAmount = 220.55M,
                PayrollDate = payrollDate,
                RateType    = RateType.RegularHolidayRestDay,
                Multiplier  = 1,
                RatePerHour = 0.25M
            };

            var employeePayrollItem2 = new EmployeePayrollItem
            {
                EmployeeId  = 1,
                TotalAmount = 100,
                PayrollDate = payrollDate,
                RateType    = RateType.RegularHolidayRestDay,
                Multiplier  = 1,
                RatePerHour = 0.25M
            };

            var employeePayrollItem3 = new EmployeePayrollItem
            {
                EmployeeId  = 1,
                TotalAmount = 15,
                PayrollDate = payrollDate,
                RateType    = RateType.RegularHolidayRestDay,
                Multiplier  = 1,
                RatePerHour = 0.25M
            };

            var employeePayrollItem4 = new EmployeePayrollItem
            {
                EmployeeId  = 2,
                TotalAmount = 300.10M,
                PayrollDate = payrollDate,
                RateType    = RateType.RegularHolidayRestDay,
                Multiplier  = 1,
                RatePerHour = 0.25M
            };

            var employeePayrollItem5 = new EmployeePayrollItem
            {
                EmployeeId  = 2,
                TotalAmount = 50,
                PayrollDate = payrollDate,
                RateType    = RateType.RegularHolidayRestDay,
                Multiplier  = 1,
                RatePerHour = 0.25M
            };

            var employeePayrollItem6 = new EmployeePayrollItem
            {
                EmployeeId  = 1,
                TotalAmount = 150.12M,
                PayrollDate = payrollDate,
                RateType    = RateType.RegularHolidayRestDay,
                Multiplier  = 1,
                RatePerHour = 0.25M
            };

            var employeePayrollItem7 = new EmployeePayrollItem
            {
                EmployeeId  = 1,
                TotalAmount = 40,
                PayrollDate = payrollDate,
                RateType    = RateType.RegularHolidayRestDay,
                Multiplier  = 1,
                RatePerHour = 0.25M
            };

            var employeePayrollItem8 = new EmployeePayrollItem
            {
                EmployeeId  = 2,
                TotalAmount = 540.02M,
                PayrollDate = payrollDate,
                RateType    = RateType.RegularHolidayRestDay,
                Multiplier  = 1,
                RatePerHour = 0.25M
            };

            _employeePayrollItemRepository.Add(employeePayrollItem);
            _employeePayrollItemRepository.Add(employeePayrollItem2);
            _employeePayrollItemRepository.Add(employeePayrollItem3);
            _employeePayrollItemRepository.Add(employeePayrollItem4);
            _employeePayrollItemRepository.Add(employeePayrollItem5);
            _employeePayrollItemRepository.Add(employeePayrollItem6);
            _employeePayrollItemRepository.Add(employeePayrollItem7);
            _employeePayrollItemRepository.Add(employeePayrollItem8);

            _unitOfWork.Commit();

            //Test
            var dateStart = DateTime.Parse("05/11/2016");
            var dateEnd   = DateTime.Parse("05/17/2016");

            _employeePayrollService.GeneratePayroll(dateStart, dateEnd);
            _unitOfWork.Commit();

            var payrollList = _employeePayrollService.GetByDateRange(payrollDate, payrollDate);

            Assert.IsNotNull(payrollList);
            Assert.AreEqual(2, payrollList.Count());

            Assert.AreEqual(1, payrollList[0].EmployeeId);
            Assert.AreEqual(dateStart, payrollList[0].CutOffStartDate);
            Assert.AreEqual(dateEnd, payrollList[0].CutOffEndDate);
            Assert.AreEqual(false, payrollList[0].IsTaxed);
            Assert.AreEqual(0, payrollList[0].TotalAdjustment);
            Assert.AreEqual(0, payrollList[0].TotalDeduction);
            Assert.AreEqual(525.67M, payrollList[0].TotalGross);
            Assert.AreEqual(525.67M, payrollList[0].TotalNet);
            Assert.AreEqual(525.67M, payrollList[0].TaxableIncome);
            Assert.AreEqual(0, decimal.Round(payrollList[0].TotalAllowance, 2));

            Assert.AreEqual(2, payrollList[1].EmployeeId);
            Assert.AreEqual(dateStart, payrollList[1].CutOffStartDate);
            Assert.AreEqual(dateEnd, payrollList[1].CutOffEndDate);
            Assert.AreEqual(false, payrollList[1].IsTaxed);
            Assert.AreEqual(0, payrollList[1].TotalAdjustment);
            Assert.AreEqual(0, payrollList[1].TotalDeduction);
            Assert.AreEqual(890.12M, payrollList[1].TotalGross);
            Assert.AreEqual(890.12M, payrollList[1].TotalNet);
            Assert.AreEqual(890.12M, payrollList[1].TaxableIncome);
            Assert.AreEqual(0, decimal.Round(payrollList[1].TotalAllowance, 2));
        }
Пример #2
0
        public void GenerateTotal(IList <EmployeeHours> employeeHoursList)
        {
            if (employeeHoursList != null && employeeHoursList.Any())
            {
                int      tempEmployeeId = 0;
                DateTime?tempDate       = null;
                RateType?tempRate       = null;

                TotalEmployeeHours totalEmployeeHours = null;

                EmployeeHours last = employeeHoursList.Last();

                foreach (EmployeeHours hours in employeeHoursList)
                {
                    // If not the same date, type and employee as the last entry should create new total employee hours
                    if (tempEmployeeId != hours.EmployeeId ||
                        tempDate != hours.Date || tempRate != hours.Type)
                    {
                        //Save previous entry if any
                        if (totalEmployeeHours != null)
                        {
                            //Check if there's an existing total entry for the employee, rate type and date
                            var existingTotalEmployeeHours = _totalEmployeeHoursRepository
                                                             .GetByEmployeeDateAndType(totalEmployeeHours.EmployeeId,
                                                                                       totalEmployeeHours.Date, totalEmployeeHours.Type);

                            //If yes update the value
                            if (existingTotalEmployeeHours != null)
                            {
                                _totalEmployeeHoursRepository.Update(existingTotalEmployeeHours);

                                existingTotalEmployeeHours.Hours = (existingTotalEmployeeHours.Hours + totalEmployeeHours.Hours);
                            }
                            else //Create new entry
                            {
                                totalEmployeeHours.Hours = (totalEmployeeHours.Hours);

                                _totalEmployeeHoursRepository.Add(totalEmployeeHours);
                            }
                        }

                        //Create new total employee hours obj
                        totalEmployeeHours = new TotalEmployeeHours
                        {
                            Date       = hours.Date,
                            EmployeeId = hours.EmployeeId,
                            Type       = hours.Type,
                            Hours      = hours.Hours
                        };
                    }
                    else //Same Employee, Date and Rate, Update the total Employee hours data
                    {
                        totalEmployeeHours.Hours = totalEmployeeHours.Hours + hours.Hours;
                    }

                    //If Last Iteration and New entry
                    //Save
                    if (hours.Equals(last) && totalEmployeeHours.TotalEmployeeHoursId <= 0)
                    {
                        //Check if there's an existing total entry for the employee, rate type and date
                        var existingTotalEmployeeHours = _totalEmployeeHoursRepository
                                                         .GetByEmployeeDateAndType(totalEmployeeHours.EmployeeId,
                                                                                   totalEmployeeHours.Date, totalEmployeeHours.Type);

                        //If yes update the value
                        if (existingTotalEmployeeHours != null)
                        {
                            _totalEmployeeHoursRepository.Update(existingTotalEmployeeHours);

                            existingTotalEmployeeHours.Hours = (existingTotalEmployeeHours.Hours + totalEmployeeHours.Hours);
                        }
                        else //Create new entry
                        {
                            totalEmployeeHours.Hours = (totalEmployeeHours.Hours);

                            _totalEmployeeHoursRepository.Add(totalEmployeeHours);
                        }
                    }

                    //Set Reference data
                    tempDate       = hours.Date;
                    tempEmployeeId = hours.EmployeeId;
                    tempRate       = hours.Type;

                    //Update employee hours IsIncludedInTotal value
                    _employeeHoursService.Update(hours);

                    hours.IsIncludedInTotal = true;
                }

                //Commit all change
                _unitOfWork.Commit();
            }
        }
        //[TestMethod]
        public void GenerateEmployeeDailySalaryByDateRangeRegular()
        {
            //Arrange
            Initialize();
            DeleteData();

            var employee = new Employee
            {
                EmployeeCode = "11001",
                FirstName    = "Jona",
                LastName     = "Pereira",
                MiddleName   = "Aprecio",
                BirthDate    = DateTime.Parse("02/02/1991"),
                Gender       = 1,
                IsActive     = true
            };

            var employee2 = new Employee
            {
                EmployeeCode = "11002",
                FirstName    = "Cornelio",
                LastName     = "Cawicaan",
                MiddleName   = "Bue",
                BirthDate    = DateTime.Parse("10/30/1989"),
                Gender       = 2,
                IsActive     = true
            };

            var employeeInfo = new EmployeeInfo
            {
                Employee        = employee,
                Salary          = 5000,
                SalaryFrequency = FrequencyType.Weekly
            };

            var employeeInfo2 = new EmployeeInfo
            {
                Employee        = employee2,
                Salary          = 8000,
                SalaryFrequency = FrequencyType.Weekly
            };

            _employeeInfoRepository.Add(employeeInfo);
            _employeeInfoRepository.Add(employeeInfo2);

            var workSchedule = new WorkSchedule
            {
                TimeStart = new TimeSpan(0, 7, 0, 0),
                TimeEnd   = new TimeSpan(0, 16, 0, 0),
                WeekStart = 1,
                WeekEnd   = 5
            };

            var employeeWorkSchedule = new EmployeeWorkSchedule
            {
                WorkSchedule = workSchedule,
                EmployeeId   = 1
            };

            var employeeWorkSchedule2 = new EmployeeWorkSchedule
            {
                WorkSchedule = workSchedule,
                EmployeeId   = 2
            };

            _employeeWorkScheduleRepository.Add(employeeWorkSchedule);
            _employeeWorkScheduleRepository.Add(employeeWorkSchedule2);

            //Total EmployeeHours
            var totalEmployeeHours1 = new TotalEmployeeHours
            {
                Date                 = DateTime.Parse("05/02/2016"),
                EmployeeId           = 1,
                Hours                = 8,
                TotalEmployeeHoursId = 1,
                Type                 = RateType.Regular
            };

            var totalEmployeeHours2 = new TotalEmployeeHours
            {
                Date                 = DateTime.Parse("05/02/2016"),
                EmployeeId           = 2,
                Hours                = 7.5,
                TotalEmployeeHoursId = 2,
                Type                 = RateType.Regular
            };

            var totalEmployeeHours3 = new TotalEmployeeHours
            {
                Date                 = DateTime.Parse("05/03/2016"),
                EmployeeId           = 1,
                Hours                = 8.1,
                TotalEmployeeHoursId = 2,
                Type                 = RateType.Regular
            };

            var totalEmployeeHours4 = new TotalEmployeeHours
            {
                Date                 = DateTime.Parse("05/03/2016"),
                EmployeeId           = 2,
                Hours                = 4,
                TotalEmployeeHoursId = 2,
                Type                 = RateType.Regular
            };

            _totalEmployeeHoursRepository.Add(totalEmployeeHours1);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours2);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours3);
            _totalEmployeeHoursRepository.Add(totalEmployeeHours4);

            _unitOfWork.Commit();

            //Test
            var dateFrom = DateTime.Parse("05/02/2016");
            var dateTo   = DateTime.Parse("05/03/2016");

            _employeeDailyPayrollService.GenerateEmployeeDailySalaryByDateRange(dateFrom, dateTo);

            //Results Verification
            var results = _employeeDailyPayrollService.GetByDateRange(dateFrom, dateTo);

            Assert.IsNotNull(results);
            Assert.AreEqual(4, results.Count);

            Assert.AreEqual(1, results[0].EmployeeId);
            Assert.AreEqual(3, results[0].TotalEmployeeHoursId);
            Assert.AreEqual((decimal)1012.50, results[0].TotalPay);
            Assert.AreEqual(DateTime.Parse("05/03/2016"), results[0].Date);

            Assert.AreEqual(1, results[1].EmployeeId);
            Assert.AreEqual(1, results[1].TotalEmployeeHoursId);
            Assert.AreEqual((decimal)1000, results[1].TotalPay);
            Assert.AreEqual(DateTime.Parse("05/02/2016"), results[1].Date);

            Assert.AreEqual(2, results[2].EmployeeId);
            Assert.AreEqual(4, results[2].TotalEmployeeHoursId);
            Assert.AreEqual((decimal)800, results[2].TotalPay);
            Assert.AreEqual(DateTime.Parse("05/03/2016"), results[2].Date);

            Assert.AreEqual(2, results[3].EmployeeId);
            Assert.AreEqual(2, results[3].TotalEmployeeHoursId);
            Assert.AreEqual((decimal)1500, results[3].TotalPay);
            Assert.AreEqual(DateTime.Parse("05/02/2016"), results[3].Date);
        }
Пример #4
0
 public void Update(TotalEmployeeHours totalEmployeeHours)
 {
     _totalEmployeeHoursRepository.Update(totalEmployeeHours);
 }
        public void GenerateTotalByDateRangeMinimumOT()
        {
            //Arrange
            var databaseFactory = new DatabaseFactory();
            var unitOfWork      = new UnitOfWork(databaseFactory);

            var employeeHoursRepository      = new EmployeeHoursRepository(databaseFactory);
            var totalEmployeeHoursRepository = new TotalEmployeeHoursRepository(databaseFactory);

            var employeeDepartmentRepository   = new EmployeeDepartmentRepository(databaseFactory);
            var employeeRepository             = new EmployeeRepository(databaseFactory, employeeDepartmentRepository);
            var attendanceRepository           = new AttendanceRepository(databaseFactory);
            var attendanceLogRepository        = new AttendanceLogRepository(databaseFactory, employeeRepository);
            var settingRepository              = new SettingRepository(databaseFactory);
            var employeeWorkScheduleRepository = new EmployeeWorkScheduleRepository(databaseFactory);
            var employeeInfoRepository         = new EmployeeInfoRepository(databaseFactory);

            var employeeInfoService  = new EmployeeInfoService(employeeInfoRepository);
            var attendanceLogService = new AttendanceLogService(attendanceLogRepository);
            var attendanceService    = new AttendanceService(unitOfWork, attendanceRepository, attendanceLogService, employeeHoursRepository);

            var settingService = new SettingService(settingRepository);
            var employeeWorkScheduleService = new EmployeeWorkScheduleService(employeeWorkScheduleRepository);

            var employeeHoursService = new EmployeeHoursService(unitOfWork, employeeHoursRepository,
                                                                attendanceService, settingService, employeeWorkScheduleService, employeeInfoService);
            var totalEmployeeHoursService = new TotalEmployeeHoursService(unitOfWork, totalEmployeeHoursRepository, employeeHoursService, settingService);

            //Delete info
            employeeRepository.ExecuteSqlCommand("SET FOREIGN_KEY_CHECKS = 0");
            employeeRepository.ExecuteSqlCommand("TRUNCATE TABLE employee_hours");
            employeeRepository.ExecuteSqlCommand("TRUNCATE TABLE employee_hours_total");
            employeeRepository.ExecuteSqlCommand("TRUNCATE TABLE employee");
            employeeRepository.ExecuteSqlCommand("SET FOREIGN_KEY_CHECKS = 1");

            unitOfWork.Commit();

            var employee1 = new Employee
            {
                EmployeeCode = "11001",
                FirstName    = "Jona",
                LastName     = "Pereira",
                MiddleName   = "Aprecio",
                BirthDate    = DateTime.Parse("02/02/1991"),
                Gender       = 1,
                IsActive     = true
            };

            var employee2 = new Employee
            {
                EmployeeCode = "11001",
                FirstName    = "Jona",
                LastName     = "Pereira",
                MiddleName   = "Aprecio",
                BirthDate    = DateTime.Parse("02/02/1991"),
                Gender       = 1,
                IsActive     = true
            };

            //var paymentFrequencyId = 1;

            var employeeInfo1 = new EmployeeInfo
            {
                Employee        = employee1,
                SalaryFrequency = FrequencyType.Hourly,
                //PaymentFrequencyId = paymentFrequencyId
            };

            var employeeInfo2 = new EmployeeInfo
            {
                Employee        = employee2,
                SalaryFrequency = FrequencyType.Hourly,
                //PaymentFrequencyId = paymentFrequencyId
            };

            employeeInfoRepository.Add(employeeInfo1);
            employeeInfoRepository.Add(employeeInfo2);

            /* "03/01/2016 - Employee 1 Regular Total hour 8 */
            var employeeHours1 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/01/2016"),
                Employee           = employee1,
                Hours              = 4.1,
                OriginAttendanceId = 1,
                Type               = Entities.Enums.RateType.Regular
            };

            var employeeHours3 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/01/2016"),
                Employee           = employee1,
                Hours              = 4,
                OriginAttendanceId = 3,
                Type               = Entities.Enums.RateType.Regular
            };

            /* 03/01/2016 - Employee 1 OT Total hour 3 */
            var employeeHours4 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/01/2016"),
                Employee           = employee1,
                Hours              = 3.05,
                OriginAttendanceId = 3,
                Type               = Entities.Enums.RateType.OverTime
            };

            /* 03/01/2016 - Employee 1 ND Total hour 1 */
            var employeeHours5 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/01/2016"),
                Employee           = employee1,
                Hours              = 1.06,
                OriginAttendanceId = 3,
                Type               = Entities.Enums.RateType.NightDifferential
            };

            /* 03/01/2016 - Employee 2 OT Total hour 3 */
            var employeeHours2 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/01/2016"),
                Employee           = employee2,
                Hours              = 3.07,
                OriginAttendanceId = 2,
                Type               = Entities.Enums.RateType.OverTime
            };

            /* 03/02/2016 - Employee 1 OT Total hour 1 */
            var employeeHours8 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/02/2016"),
                Employee           = employee1,
                Hours              = 1.08,
                OriginAttendanceId = 5,
                Type               = Entities.Enums.RateType.OverTime
            };

            /* 03/02/2016 - Employee 2 Regular Total hour 4.09 */
            var employeeHours6 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/02/2016"),
                Employee           = employee2,
                Hours              = 4.09,
                OriginAttendanceId = 4,
                Type               = Entities.Enums.RateType.Regular
            };

            /* 03/02/2016 - Employee 2 NightDifferential Total hour 6.5 */
            var employeeHours7 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/02/2016"),
                Employee           = employee2,
                Hours              = 4,
                OriginAttendanceId = 4,
                Type               = Entities.Enums.RateType.NightDifferential
            };

            var employeeHours10 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/02/2016"),
                Employee           = employee2,
                Hours              = 2.5,
                OriginAttendanceId = 4,
                Type               = Entities.Enums.RateType.NightDifferential
            };

            /* NOT INCLUDED */
            var employeeHours9 = new EmployeeHours
            {
                Date               = DateTime.Parse("03/03/2016"),
                Employee           = employee1,
                Hours              = 10,
                OriginAttendanceId = 5,
                Type               = Entities.Enums.RateType.OverTime
            };

            employeeHoursRepository.Add(employeeHours1);
            employeeHoursRepository.Add(employeeHours2);
            employeeHoursRepository.Add(employeeHours3);
            employeeHoursRepository.Add(employeeHours4);
            employeeHoursRepository.Add(employeeHours5);
            employeeHoursRepository.Add(employeeHours6);
            employeeHoursRepository.Add(employeeHours7);
            employeeHoursRepository.Add(employeeHours8);
            employeeHoursRepository.Add(employeeHours9);
            employeeHoursRepository.Add(employeeHours10);

            //Existing total employee hours
            var totalEmployeeHours1 = new TotalEmployeeHours
            {
                EmployeeId = 1,
                Date       = DateTime.Parse("03/01/2016"),
                Type       = Entities.Enums.RateType.OverTime,
                Hours      = 2
            };

            var totalEmployeeHours2 = new TotalEmployeeHours
            {
                EmployeeId = 2,
                Date       = DateTime.Parse("03/02/2016"),
                Type       = Entities.Enums.RateType.NightDifferential,
                Hours      = 4
            };

            var totalEmployeeHours3 = new TotalEmployeeHours
            {
                EmployeeId = 2,
                Date       = DateTime.Parse("03/01/2016"),
                Type       = Entities.Enums.RateType.Regular,
                Hours      = 8
            };

            totalEmployeeHoursRepository.Add(totalEmployeeHours1);
            totalEmployeeHoursRepository.Add(totalEmployeeHours2);
            totalEmployeeHoursRepository.Add(totalEmployeeHours3);

            unitOfWork.Commit();

            DateTime dateFrom = DateTime.Parse("03/01/2016");
            DateTime dateTo   = DateTime.Parse("03/02/2016");

            totalEmployeeHoursService.GenerateTotalByDateRange(dateFrom, dateTo);

            var totalEmployeeHours = totalEmployeeHoursService.GetByDateRange(dateFrom, dateTo);

            Assert.AreEqual(7, totalEmployeeHours.Count());

            Assert.AreEqual(1, totalEmployeeHours[0].EmployeeId);
            Assert.AreEqual(DateTime.Parse("03/02/2016"), totalEmployeeHours[0].Date);
            Assert.AreEqual(Entities.Enums.RateType.OverTime, totalEmployeeHours[0].Type);
            Assert.AreEqual(1.08, totalEmployeeHours[0].Hours);

            Assert.AreEqual(2, totalEmployeeHours[1].EmployeeId);
            Assert.AreEqual(DateTime.Parse("03/02/2016"), totalEmployeeHours[1].Date);
            Assert.AreEqual(Entities.Enums.RateType.Regular, totalEmployeeHours[1].Type);
            Assert.AreEqual(4.09, totalEmployeeHours[1].Hours);

            Assert.AreEqual(2, totalEmployeeHours[2].EmployeeId);
            Assert.AreEqual(DateTime.Parse("03/02/2016"), totalEmployeeHours[2].Date);
            Assert.AreEqual(Entities.Enums.RateType.NightDifferential, totalEmployeeHours[2].Type);
            Assert.AreEqual(6.5, totalEmployeeHours[2].Hours);

            Assert.AreEqual(1, totalEmployeeHours[3].EmployeeId);
            Assert.AreEqual(DateTime.Parse("03/01/2016"), totalEmployeeHours[3].Date);
            Assert.AreEqual(Entities.Enums.RateType.Regular, totalEmployeeHours[3].Type);
            Assert.AreEqual(8.1, totalEmployeeHours[3].Hours);

            Assert.AreEqual(1, totalEmployeeHours[4].EmployeeId);
            Assert.AreEqual(DateTime.Parse("03/01/2016"), totalEmployeeHours[4].Date);
            Assert.AreEqual(Entities.Enums.RateType.OverTime, totalEmployeeHours[4].Type);
            Assert.AreEqual(3.05, totalEmployeeHours[4].Hours);

            Assert.AreEqual(1, totalEmployeeHours[5].EmployeeId);
            Assert.AreEqual(DateTime.Parse("03/01/2016"), totalEmployeeHours[5].Date);
            Assert.AreEqual(Entities.Enums.RateType.NightDifferential, totalEmployeeHours[5].Type);
            Assert.AreEqual(1.06, totalEmployeeHours[5].Hours);

            /*Assert.AreEqual(2, totalEmployeeHours[6].EmployeeId);
             * Assert.AreEqual(DateTime.Parse("03/01/2016"), totalEmployeeHours[6].Date);
             * Assert.AreEqual(Entities.Enums.RateType.Regular, totalEmployeeHours[6].Type);
             * Assert.AreEqual(8, totalEmployeeHours[6].Hours);*/

            Assert.AreEqual(2, totalEmployeeHours[6].EmployeeId);
            Assert.AreEqual(DateTime.Parse("03/01/2016"), totalEmployeeHours[6].Date);
            Assert.AreEqual(Entities.Enums.RateType.OverTime, totalEmployeeHours[6].Type);
            Assert.AreEqual(3.07, totalEmployeeHours[6].Hours);

            Assert.AreEqual(true, employeeHours1.IsIncludedInTotal);
            Assert.AreEqual(true, employeeHours2.IsIncludedInTotal);
            Assert.AreEqual(true, employeeHours3.IsIncludedInTotal);
            Assert.AreEqual(true, employeeHours4.IsIncludedInTotal);
            Assert.AreEqual(true, employeeHours5.IsIncludedInTotal);
            Assert.AreEqual(true, employeeHours6.IsIncludedInTotal);
            Assert.AreEqual(true, employeeHours7.IsIncludedInTotal);
            Assert.AreEqual(true, employeeHours8.IsIncludedInTotal);
            Assert.AreEqual(false, employeeHours9.IsIncludedInTotal);
        }