Advertisement
afterlife88

Untitled

Dec 3rd, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.13 KB | None | 0 0
  1. /// <summary>
  2.         /// Count days of previous absences for selected year
  3.         /// </summary>
  4.         /// <param name="year"></param>
  5.         /// <param name="previousAbsences"></param>
  6.         /// <param name="offsetFrom"></param>
  7.         /// <param name="offsetTo"></param>
  8.         /// <param name="overtimedAbsenceId"></param>
  9.         /// <returns></returns>
  10.         private double CountPrevousAbsenceDaysForSelectedYear(DateTime from, ICollection<AbsenceDTO> previousAbsences, int offsetFrom, int offsetDay,
  11.             int overtimedAbsenceId)
  12.         {
  13.             if (offsetFrom == 0)
  14.             {
  15.                 offsetFrom += 1;
  16.             }
  17.             if (offsetDay == 0)
  18.             {
  19.                 offsetDay += 1;
  20.             }
  21.             if (offsetFrom != 1 && from.Month > offsetFrom)
  22.             {
  23.                 from = from.AddYears(1);
  24.             }
  25.             var fromYear = from.Year;
  26.             var toYear = from.Year;
  27.             if (offsetFrom != 0)
  28.             {
  29.                 fromYear -= 1;
  30.             }
  31.             int firstMonth = offsetFrom;
  32.             int secondMonth = GetToMonth(firstMonth);
  33.             var overtimedAbsences = previousAbsences.Where(x => x.AbsenceTypeId == overtimedAbsenceId);
  34.             var previousAbsencesQuery = previousAbsences
  35.                 .Where(a => a.From.Year == fromYear &&
  36.                 a.From >= new DateTime(fromYear, firstMonth, offsetDay) &&
  37.                 a.To <= new DateTime(toYear, secondMonth, offsetDay) &&
  38.                 (a.State == AbsenceState.Applied || a.State == AbsenceState.Approved))
  39.                 .Except(overtimedAbsences).ToList();
  40.             var fullDays =
  41.                 previousAbsencesQuery.Where(r => r.AbsenceLenghtDay == 1)
  42.                     .Sum(previousAbsence => previousAbsence.Days.Count(d => d.Date.Year == fromYear));
  43.             var halfDays =
  44.                 previousAbsencesQuery.Where(r => r.AbsenceLenghtDay == 0.5)
  45.                     .Sum(previousAbsence => previousAbsence.Days.Count(d => d.Date.Year == fromYear));
  46.             var sum = halfDays * 0.5 + fullDays;
  47.             return sum;
  48.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement