private bool IsOverlappingWithAnotherPayPeriod(PayPeriodEditModel model, DateTime?effectiveDate) { if (!effectiveDate.HasValue) { return(false); } var nextPublishedPayPeriod = _payPeriodRepository.GetNextPublishedPayPeriod(effectiveDate.Value, true); var previousPublishedPayPeriod = _payPeriodRepository.GetPreviousPublishedPayPeriod(effectiveDate.Value, true); if (previousPublishedPayPeriod != null) { if (effectiveDate.Value >= previousPublishedPayPeriod.StartDate && effectiveDate.Value <= previousPublishedPayPeriod.StartDate.AddDays((7 * previousPublishedPayPeriod.NumberOfWeeks) - 1)) { return(false); } } if (nextPublishedPayPeriod != null) { if (effectiveDate.Value <= nextPublishedPayPeriod.StartDate && effectiveDate.Value.AddDays((7 * model.NumberOfWeek) - 1) >= nextPublishedPayPeriod.StartDate) { return(false); } } return(true); }
public JsonResult GetRangeForPayPeriod(long payPeriodId) { var dropDownList = new List <SelectListItem>(); dropDownList.Add(new SelectListItem { Text = "-- Select --", Value = "" }); if (payPeriodId <= 0) { return(Json(dropDownList)); } var payPeriod = _payPeriodRepository.GetById(payPeriodId); var nextPayPeriod = _payPeriodRepository.GetNextPublishedPayPeriod(payPeriod.StartDate); var startDate = payPeriod.StartDate; var nextEffectiveDate = DateTime.Today; if (nextPayPeriod != null) { nextEffectiveDate = nextPayPeriod.StartDate > DateTime.Today ? DateTime.Today : nextPayPeriod.StartDate; } while (startDate < nextEffectiveDate) { var endDate = startDate.AddDays((7 * payPeriod.NumberOfWeeks) - 1); dropDownList.Add(new SelectListItem { Text = startDate.ToString("MM/dd/yyyy") + " - " + endDate.ToString("MM/dd/yyyy"), Value = startDate.ToString("MM/dd/yyyy") + "-" + endDate.ToString("MM/dd/yyyy") }); startDate = endDate.AddDays(1); } return(Json(dropDownList)); }
private void SetEndDateforPayPeriod(IEnumerable <PayPeriod> payPeriods) { if (payPeriods.IsNullOrEmpty()) { return; } payPeriods = payPeriods.OrderBy(x => x.StartDate); var lastPayPeriod = _payPeriodRepository.GetNextPublishedPayPeriod(payPeriods.Last().StartDate); foreach (var payPeriod in payPeriods) { var nextPayPeriod = payPeriods.FirstOrDefault(x => x.StartDate > payPeriod.StartDate); payPeriod.EndDate = lastPayPeriod == null?DateTime.Today.AddDays(1) : lastPayPeriod.StartDate; if (nextPayPeriod != null) { payPeriod.EndDate = nextPayPeriod.StartDate; } } }