Exemple #1
0
        private int FindLeavesOverlaps(DateTime fromDate, DateTime toDate, Action <AreaCoverageGaps> actionForArea, Action <IList <EmployesCoverageGaps>, AreaDto,
                                                                                                                            AreaCoverageGaps> actionForEmploye = null, IList <EmployesCoverageGaps> employesCoverageGaps = null, long employeId = -1)
        {
            List <AreaDto>  areas  = employeId > 0 ? _areaService.FindByEmployeId(employeId).ToList() : _areaService.GetAllWithEmploye().ToList();
            List <LeaveDto> leaves = _leaveService.GetLeavesRange(fromDate, toDate).ToList();

            if (employeId <= 0)
            {
                leaves = leaves.Where(l => l.State == LeaveState.Approved).ToList();
            }

            foreach (AreaDto a in areas)
            {
                int areaEmployeNumber = a.EmployeList.Count;
                IList <EmployeBaseDto> employesDto      = a.EmployeList;
                AreaCoverageGaps       areaCoverageGaps = new AreaCoverageGaps(a.Description, employesDto, areaEmployeNumber == 1);
                if (employeId > 0)
                {
                    areaEmployeNumber--;
                }
                IList <DayCoverageGaps> areaLeaveOverlaps = FindLeaveOverlaps(leaves.Where(l => l.Employe.AreaList.Any(ea => ea.Id == a.Id)).ToList(), areaEmployeNumber);
                areaCoverageGaps.Gaps.AddRange(areaLeaveOverlaps);
                if (areaCoverageGaps.Gaps.Count > 0 && actionForArea != null)
                {
                    actionForArea(areaCoverageGaps);
                }
                else if (areaCoverageGaps.Gaps.Count > 0 && actionForEmploye != null)
                {
                    actionForEmploye(employesCoverageGaps, a, areaCoverageGaps);
                }
                else
                {
                    //nothing to do just removing sonar issue
                }
            }
            return(areas.Count);
        }
Exemple #2
0
 private void CreateEmployeCoverageGaps(IList <EmployesCoverageGaps> employeLeaveOverlaps, AreaDto a, AreaCoverageGaps areaCoverageGaps)
 {
     foreach (DayCoverageGaps gaps in areaCoverageGaps.Gaps)
     {
         List <EmployesCoverageGaps> temp = employeLeaveOverlaps.Where(e => e.Date == gaps.Date).ToList();
         temp = temp.Where(e => e.Employes.ValueEqual(a.EmployeList) && e.DayGaps.ValueEqual(gaps.DayGaps)).ToList();
         if (temp.Count == 0)
         {
             var employesCoverageGaps = new EmployesCoverageGaps
             {
                 Date = gaps.Date
             };
             employesCoverageGaps.Areas.Add(a);
             employesCoverageGaps.Employes.AddRange(a.EmployeList);
             employesCoverageGaps.DayGaps.AddRange(gaps.DayGaps);
             employeLeaveOverlaps.Add(employesCoverageGaps);
         }
         else
         {
             temp[0].Areas.Add(a);
         }
     }
 }