Example #1
0
        private List <MemberTimeView> GetMemberTimeView(List <IMemberModel> memberList, Guid managementDepartmentId, int currentYear, int currentWeek)
        {
            List <Guid> memberIdList = memberList.Select(x => x.MemberId).ToList();
            IDictionary <Guid, IDictionary <int, int> > weekDaysEstimationsForWeek = timeSheduleService.GetMemberEstimationsForWeek(memberIdList, managementDepartmentId, currentYear, currentWeek);
            List <MemberTimeView>  results = new List <MemberTimeView>();
            IDictionary <int, int> weekDaysWorkingHours = appSettingHelper.GetDictionaryAppSetting <int, int>(Constants.AppSetting.DaysWorkingMinutes);
            IDictionary <Guid, IDictionary <int, bool> > weekDaysMembersAbsences = absenceInfoService.GetWeekAbsencesForMembers(memberIdList, currentYear, currentWeek);

            foreach (var member in memberList)
            {
                IDictionary <int, bool> weekDaysMemberAbsences            = weekDaysMembersAbsences[member.MemberId];
                IDictionary <int, int>  weekDaysWorkingHoursExeptAbsences = weekDaysWorkingHours.ToDictionary(pair => pair.Key, pair => weekDaysMemberAbsences[pair.Key] ? 0 : pair.Value);

                IEnumerable <TimeViewModel> timeViewForWeek = TimeViewsForWeek(weekDaysEstimationsForWeek[member.MemberId], weekDaysWorkingHoursExeptAbsences);

                results.Add(new MemberTimeView
                {
                    MemberModel  = member,
                    WeekTimeView = timeViewForWeek,
                    WeekTotal    = timeViewForWeek.Aggregate(new TimeViewModel(), (total, timeView) => total + timeView)
                }
                            );
            }

            return(results);
        }