//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); } }
// 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)); }
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; } }
public ActionResult EditModal(int id) { var holiday = holidayService.GetHoliday(id); return(PartialView("_EditModal", holiday)); }
/*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(); }