Example #1
0
        public void ReloadList(object sender, EventArgs e)
        {
            int yearInt     = int.Parse(YearsList[SelectedYearIndex]);
            var periodBegin = new DateTime(yearInt, SelectedMonthIndex + 1, 1);
            var periodEnd   = new DateTime(periodBegin.Year, periodBegin.Month, DateTime.DaysInMonth(yearInt, periodBegin.Month));

            var monthPlanTime = Context.timeTableWork.GetTimeForAMonth(periodBegin.Year, periodBegin.Month);

            var wrk = WorksVM.Dictionary.Select(p => p.Value.Work).Where(w => w.StartDate >= periodBegin && w.StartDate <= periodEnd &&
                                                                         w.UserID == GlobalInfo.CurrentUser.ID);


            WorksList = monthPlanTime.GroupJoin(wrk, p => p.Date, w => w.StartDate, (mpt, w) => new { tt = mpt, work = w })
                        .DefaultIfEmpty()
                        .Where(q => q.tt.PlanningTime > 0.0 || q.work.Sum(m => m.Minutes) > 0)
                        .Select(tmp => new LaborCostsDay
            {
                DateTm   = tmp.tt.Date,
                Time     = tmp.work.Sum(q => q.Minutes) / 60.0,
                PlanTime = tmp.tt.PlanningTime
            }).ToList();

            var userAbsences = Context.workWork.GetUserReasonAbsence();

            foreach (var day in WorksList)
            {
                var reason = userAbsences.FirstOrDefault(ua => ua.AbsenceDate == day.DateTm);
                day.Reason = reason != null ? reason.Reason.ReasonText : "";
            }

            SumTime     = WorksList.Sum(w => w.Time);
            SumTimePlan = WorksList.Sum(w => w.PlanTime);
            DiffTime    = SumTime - SumTimePlan;
        }