Ejemplo n.º 1
0
        public void GetUsingClass()
        {
            var usingClass = (from uc in DataProvider.Ins.DB.USINGCLASSes
                              join cl in DataProvider.Ins.DB.CLASSes on uc.ClassID equals cl.ClassID
                              join rm in DataProvider.Ins.DB.ROOMs on uc.RoomID equals rm.RoomID
                              where DbFunctions.AddDays(_startDate, (uc.Day_ + 6) % 7) >= uc.StartDate &&                                        // Satisfy the start and end date of class
                              DbFunctions.AddDays(_startDate, (uc.Day_ + 6) % 7) <= uc.EndDate &&                                                // Satisfy the start and end date of class
                              (DbFunctions.DiffDays(DbFunctions.AddDays(_startDate, (uc.Day_ + 6) % 7), cl.StartDate) / 7) % uc.RepeatCycle == 0 // satisfied the repeat cycle
                              select new { uc, cl, rm }
                              ).ToList();

            foreach (var ins in usingClass)
            {
                if (!IsExistRoom(ins.rm))
                {
                    var listPeriod = (from period in DataProvider.Ins.DB.PERIOD_TIMERANGE
                                      where period.PeriodID != -1
                                      select period).ToList();
                    foreach (var period in listPeriod)
                    {
                        RoomTableRow roomTableRow = new RoomTableRow();
                        roomTableRow.room   = ins.rm;
                        roomTableRow.period = period;

                        listRoomTableRow.Add(roomTableRow);
                    }
                }

                // for each using, we split it into multiple period row
                var listPeriodTimeRange = Utilities.Utils.GetListPeriodTimeRange(ins.uc.StartPeriod, ins.uc.Duration);

                foreach (var periodTimeRange in listPeriodTimeRange)
                {
                    if (IsExistRoomRow(ins.rm, periodTimeRange))
                    {
                        var roomTableRow = listRoomTableRow.First((x) => {
                            return(x.room.RoomID == ins.rm.RoomID &&
                                   x.period.PeriodID == periodTimeRange.PeriodID);
                        });

                        roomTableRow.usings[ins.uc.Day_] = ins.uc;
                    }
                    else
                    {
                        RoomTableRow roomTableRow = new RoomTableRow();
                        roomTableRow.room   = ins.rm;
                        roomTableRow.period = periodTimeRange;
                        roomTableRow.usings[ins.uc.Day_] = ins.uc;

                        listRoomTableRow.Add(roomTableRow);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void GetUsingEvent()
        {
            var usingEvent = (from ev in DataProvider.Ins.DB.USINGEVENTs
                              join cl in DataProvider.Ins.DB.EVENT_ on ev.EventID equals cl.EventID
                              join rm in DataProvider.Ins.DB.ROOMs on ev.RoomID equals rm.RoomID
                              where ev.Date_ >= startDate && // Satisfy the start and end date of choosen week
                              ev.Date_ <= endDate            // Satisfy the start and end date of choosen week
                              select new { ev, cl, rm }
                              ).ToList();

            foreach (var ins in usingEvent)
            {
                if (!IsExistRoom(ins.rm))
                {
                    var listPeriod = (from period in DataProvider.Ins.DB.PERIOD_TIMERANGE
                                      where period.PeriodID != -1
                                      select period).ToList();
                    foreach (var period in listPeriod)
                    {
                        RoomTableRow roomTableRow = new RoomTableRow();
                        roomTableRow.room   = ins.rm;
                        roomTableRow.period = period;

                        listRoomTableRow.Add(roomTableRow);
                    }
                }

                // for each using, we split it into multiple period row
                var listPeriodTimeRange = Utilities.Utils.GetListPeriodTimeRange(ins.ev.StartPeriod, ins.ev.Duration);

                foreach (var periodTimeRange in listPeriodTimeRange)
                {
                    if (IsExistRoomRow(ins.rm, periodTimeRange))
                    {
                        var roomTableRow = listRoomTableRow.First((x) => {
                            return(x.room.RoomID == ins.rm.RoomID &&
                                   x.period.PeriodID == periodTimeRange.PeriodID);
                        });

                        roomTableRow.usings[(int)ins.ev.Date_.DayOfWeek] = ins.ev;
                    }
                    else
                    {
                        RoomTableRow roomTableRow = new RoomTableRow();
                        roomTableRow.room   = ins.rm;
                        roomTableRow.period = periodTimeRange;
                        roomTableRow.usings[(int)ins.ev.Date_.DayOfWeek] = ins.ev;

                        listRoomTableRow.Add(roomTableRow);
                    }
                }
            }
        }