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);
        }
示例#2
0
        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;
                }
            }
        }