Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Count days of previous absences for selected year
- /// </summary>
- /// <param name="year"></param>
- /// <param name="previousAbsences"></param>
- /// <param name="offsetFrom"></param>
- /// <param name="offsetTo"></param>
- /// <param name="overtimedAbsenceId"></param>
- /// <returns></returns>
- private double CountPrevousAbsenceDaysForSelectedYear(DateTime from, ICollection<AbsenceDTO> previousAbsences, int offsetFrom, int offsetDay,
- int overtimedAbsenceId)
- {
- if (offsetFrom == 0)
- {
- offsetFrom += 1;
- }
- if (offsetDay == 0)
- {
- offsetDay += 1;
- }
- if (offsetFrom != 1 && from.Month > offsetFrom)
- {
- from = from.AddYears(1);
- }
- var fromYear = from.Year;
- var toYear = from.Year;
- if (offsetFrom != 0)
- {
- fromYear -= 1;
- }
- int firstMonth = offsetFrom;
- int secondMonth = GetToMonth(firstMonth);
- var overtimedAbsences = previousAbsences.Where(x => x.AbsenceTypeId == overtimedAbsenceId);
- var previousAbsencesQuery = previousAbsences
- .Where(a => a.From.Year == fromYear &&
- a.From >= new DateTime(fromYear, firstMonth, offsetDay) &&
- a.To <= new DateTime(toYear, secondMonth, offsetDay) &&
- (a.State == AbsenceState.Applied || a.State == AbsenceState.Approved))
- .Except(overtimedAbsences).ToList();
- var fullDays =
- previousAbsencesQuery.Where(r => r.AbsenceLenghtDay == 1)
- .Sum(previousAbsence => previousAbsence.Days.Count(d => d.Date.Year == fromYear));
- var halfDays =
- previousAbsencesQuery.Where(r => r.AbsenceLenghtDay == 0.5)
- .Sum(previousAbsence => previousAbsence.Days.Count(d => d.Date.Year == fromYear));
- var sum = halfDays * 0.5 + fullDays;
- return sum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement