コード例 #1
0
ファイル: CalendarController.cs プロジェクト: iLuc4s/Nixi
        public ActionResult Headcount_MonthCalendar(Guid?classId, DateTime period)
        {
            if (period == null)
            {
                period = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            }

            ViewBag.period = period;

            HeadCountMonthCalendarViewModel hcmcvm = new HeadCountMonthCalendarViewModel();

            hcmcvm.AllClasses = db.Classes.ToList();

            if (classId == null)
            {
                hcmcvm.TheClass = hcmcvm.AllClasses.First();
            }
            else
            {
                hcmcvm.TheClass = db.Classes.Find(classId);
            }
            DateTime firstday        = new DateTime(period.Year, period.Month, 1);
            DateTime startofCalendar = firstday;

            switch (firstday.DayOfWeek)
            {
            case DayOfWeek.Monday:
                startofCalendar = firstday;
                break;

            case DayOfWeek.Tuesday:
                startofCalendar = firstday.AddDays(-1);;
                break;

            case DayOfWeek.Wednesday:
                startofCalendar = firstday.AddDays(-2);;
                break;

            case DayOfWeek.Thursday:
                startofCalendar = firstday.AddDays(-3);;
                break;

            case DayOfWeek.Friday:
                startofCalendar = firstday.AddDays(-4);;
                break;

            case DayOfWeek.Saturday:
                startofCalendar = firstday.AddDays(-5);;
                break;

            case DayOfWeek.Sunday:
                startofCalendar = firstday.AddDays(-6);;
                break;
            }
            DateTime endofCalendar = startofCalendar.AddDays(41);

            List <HeadcountByDay> hbd_AM = db.AgreedDays
                                           .Where(x => (x.Date >= startofCalendar && x.Date <= endofCalendar) && (x.DayType == DayType.AM || x.DayType == DayType.FullDay) && x.ClassId == hcmcvm.TheClass.Id)
                                           .GroupBy(x => x.Date)
                                           .Select(x => new HeadcountByDay {
                AM_Count = x.Count(), Date = (DateTime)x.Key
            }).ToList();
            List <HeadcountByDay> hbd_PM = db.AgreedDays
                                           .Where(x => (x.Date >= startofCalendar && x.Date <= endofCalendar) && (x.DayType == DayType.PM || x.DayType == DayType.FullDay) && x.ClassId == hcmcvm.TheClass.Id)
                                           .GroupBy(x => x.Date)
                                           .Select(x => new HeadcountByDay {
                PM_Count = x.Count(), Date = (DateTime)x.Key
            }).ToList();
            List <HeadcountByDay> hbd_joined = new List <HeadcountByDay>();

            for (DateTime d = startofCalendar; d <= endofCalendar; d = d.AddDays(1))
            {
                HeadcountByDay hbdn = new HeadcountByDay();
                hbdn.Date = d;
                if (hbd_AM.Exists(x => x.Date == d))
                {
                    hbdn.AM_Count = hbd_AM.Where(x => x.Date == d).First().AM_Count;
                }
                else
                {
                    hbdn.AM_Count = 0;
                }
                if (hbd_PM.Exists(x => x.Date == d))
                {
                    hbdn.PM_Count = hbd_PM.Where(x => x.Date == d).First().PM_Count;
                }
                else
                {
                    hbdn.PM_Count = 0;
                }
                hbd_joined.Add(hbdn);
            }


            hcmcvm.HeadCountByDay = hbd_joined;

            return(View(hcmcvm));
        }
コード例 #2
0
ファイル: CalendarController.cs プロジェクト: iLuc4s/Nixi
        public ActionResult Headcount_MonthCalendar(FormCollection form)
        {
            string   theclass   = Convert.ToString(form["selecteer"]);
            string   period     = Convert.ToString(form["period"]);
            Guid     theclassid = Guid.Parse(theclass);
            DateTime theperiod  = DateTime.Parse(period);

            ViewBag.period = theperiod;
            HeadCountMonthCalendarViewModel hcmcvm = new HeadCountMonthCalendarViewModel();

            hcmcvm.AllClasses = db.Classes.ToList();
            hcmcvm.TheClass   = db.Classes.Find(theclass);

            DateTime firstday        = new DateTime(theperiod.Year, theperiod.Month, 1);
            DateTime startofCalendar = firstday;

            switch (firstday.DayOfWeek)
            {
            case DayOfWeek.Monday:
                startofCalendar = firstday;
                break;

            case DayOfWeek.Tuesday:
                startofCalendar = firstday.AddDays(-1);;
                break;

            case DayOfWeek.Wednesday:
                startofCalendar = firstday.AddDays(-2);;
                break;

            case DayOfWeek.Thursday:
                startofCalendar = firstday.AddDays(-3);;
                break;

            case DayOfWeek.Friday:
                startofCalendar = firstday.AddDays(-4);;
                break;

            case DayOfWeek.Saturday:
                startofCalendar = firstday.AddDays(-5);;
                break;

            case DayOfWeek.Sunday:
                startofCalendar = firstday.AddDays(-6);;
                break;
            }
            DateTime endofCalendar = startofCalendar.AddDays(42);


            List <HeadcountByDay> hbd_AM = db.AgreedDays
                                           .Where(x => (x.Date >= startofCalendar && x.Date <= endofCalendar) && (x.DayType == DayType.AM || x.DayType == DayType.FullDay) && x.ClassId == hcmcvm.TheClass.Id)
                                           .GroupBy(x => x.Date)
                                           .Select(x => new HeadcountByDay {
                AM_Count = x.Count(), Date = (DateTime)x.Key
            }).ToList();
            List <HeadcountByDay> hbd_PM = db.AgreedDays
                                           .Where(x => (x.Date >= startofCalendar && x.Date <= endofCalendar) && (x.DayType == DayType.PM || x.DayType == DayType.FullDay) && x.ClassId == hcmcvm.TheClass.Id)
                                           .GroupBy(x => x.Date)
                                           .Select(x => new HeadcountByDay {
                PM_Count = x.Count(), Date = (DateTime)x.Key
            }).ToList();

            hcmcvm.HeadCountByDay = hbd_AM;
            hcmcvm.HeadCountByDay.AddRange(hbd_PM);

            return(View(hcmcvm));
        }