コード例 #1
0
        //Will get last day of work
        private DateTime getLastDayOfWork(DateTime date, WorkSchedule workSchedule)
        {
            var lastDayOfWork = date.AddDays(-1);
            //Check if with schedule and not holiday
            var holiday = _holidayService.GetHoliday(lastDayOfWork);

            if (lastDayOfWork.IsRestDay(workSchedule.WeekStart,
                                        workSchedule.WeekEnd) || holiday != null)
            {
                return(getLastDayOfWork(lastDayOfWork, workSchedule));
            }
            else
            {
                return(lastDayOfWork);
            }
        }
コード例 #2
0
        // GET: Holiday/Details/5
        public async Task <ActionResult> Details(string id)
        {
            if (id == null)
            {
                _logger.Trace("No parameters passed for Details");
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var holiday = await _holidayService.GetHoliday(id);

            if (holiday == null)
            {
                _logger.Info($"Parameter {id} was passed for Details but did not return a result");
                return(HttpNotFound());
            }
            return(View(holiday));
        }
コード例 #3
0
        public async Task <IActionResult> HolidayDetails(int HolidayId)
        {
            try
            {
                var response = await _service.GetHoliday(HolidayId);

                if (response != null)
                {
                    return(Ok(response));
                }
                return(StatusCode(StatusCodes.Status204NoContent));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #4
0
        public ActionResult EditModal(int id)
        {
            var holiday = holidayService.GetHoliday(id);

            return(PartialView("_EditModal", holiday));
        }
コード例 #5
0
        /*Note that this method is applicable to employees with hourly rate*/
        public void GenerateEmployeeDailySalaryByDateRange(DateTime dateFrom, DateTime dateTo)
        {
            //Delete existing by date range
            DeleteByDateRange(dateFrom, dateTo);

            IList <TotalEmployeeHours> totalEmployeeHours =
                _totalEmployeeHoursService.GetByDateRange(dateFrom, dateTo);

            Double restDayRate               = Double.Parse(_settingService.GetByKey(SettingValue.RATE_REST_DAY));
            Double OTRate                    = Double.Parse(_settingService.GetByKey(SettingValue.RATE_OT));
            Double nightDiffRate             = Double.Parse(_settingService.GetByKey(SettingValue.RATE_NIGHTDIF));
            Double holidayRegularRate        = Double.Parse(_settingService.GetByKey(SettingValue.RATE_HOLIDAY_REGULAR));
            Double holidaySpecialRate        = Double.Parse(_settingService.GetByKey(SettingValue.RATE_HOLIDAY_SPECIAL));
            Double OTRateHoliday             = Double.Parse(_settingService.GetByKey(SettingValue.RATE_OT_HOLIDAY));
            Double holidaySpecialRestDayRate = Double.Parse(_settingService.GetByKey(SettingValue.RATE_HOLIDAY_SPECIAL_REST_DAY));

            foreach (TotalEmployeeHours totalHours in totalEmployeeHours)
            {
                EmployeeInfo employeeInfo = _employeeInfoService.GetByEmployeeId(totalHours.EmployeeId);

                var hourlyRate = _employeeSalaryService.GetEmployeeHourlyRate(employeeInfo);

                var employeeWorkSchedule =
                    _employeeWorkScheduleService.GetByEmployeeId(totalHours.EmployeeId);

                //No work schedule, no computation
                if (employeeWorkSchedule != null)
                {
                    DateTime date           = totalHours.Date;
                    Double   rateMultiplier = 0;

                    var     workSchedule = employeeWorkSchedule.WorkSchedule;
                    var     isRestDay    = date.IsRestDay(workSchedule.WeekStart, workSchedule.WeekEnd);
                    Holiday holiday      = _holidayService.GetHoliday(date);

                    //Check if rest day and not special holiday
                    if (isRestDay &&
                        !(holiday != null && !holiday.IsRegularHoliday))
                    {
                        rateMultiplier *= restDayRate;
                    }

                    //Check if holiday
                    if (holiday != null)
                    {
                        if (holiday.IsRegularHoliday)
                        {
                            rateMultiplier *= holidayRegularRate;
                        }
                        else
                        {
                            if (isRestDay)
                            {
                                rateMultiplier *= holidaySpecialRestDayRate;
                            }
                            else
                            {
                                rateMultiplier *= holidaySpecialRate;
                            }
                        }
                    }
                    //if OT
                    if (totalHours.Type == RateType.OverTime)
                    {
                        //If holiday use holiday ot rate
                        if (holiday != null)
                        {
                            rateMultiplier *= OTRateHoliday;
                        }
                        else
                        {
                            rateMultiplier *= OTRate;
                        }
                    }

                    decimal totalPayment = 0;

                    //if NightDif
                    if (totalHours.Type == RateType.NightDifferential)
                    {
                        //rateMultiplier *= nightDiffRate;

                        /*if (rateMultiplier > 1)
                         * {
                         *  totalPayment = ((decimal)(totalHours.Hours * (rateMultiplier - 1)) * hourlyRate);
                         * }*/
                        totalPayment += (decimal)(nightDiffRate * totalHours.Hours * rateMultiplier);
                    }
                    else
                    {
                        totalPayment = ((decimal)(totalHours.Hours * rateMultiplier)) * hourlyRate;
                    }

                    var employeeDailySalary = new EmployeeDailyPayroll
                    {
                        EmployeeId           = totalHours.EmployeeId,
                        Date                 = totalHours.Date,
                        TotalPay             = totalPayment,
                        TotalEmployeeHoursId = totalHours.TotalEmployeeHoursId,
                        RateType             = totalHours.Type
                    };

                    //Save
                    _employeeDailyPayrollRepository.Add(employeeDailySalary);
                }
            }
            _unitOfWork.Commit();

            //Generate holiday pays
            GenerateEmployeeHolidayPay(dateFrom, dateTo);
            _unitOfWork.Commit();
        }