コード例 #1
0
        //Hàm lấy dữ liệu cho đăng ký theo ngày
        public DangKyTheoNgayTable GetDangKyTheoNgay(int IdKhuNha, int IdLoaiPhong, DateTime date)
        {
            IEnumerable <Phong> phongs = _dangKyPhongHopRepository.GetPhong();

            if (IdKhuNha > 0)
            {
                phongs = phongs.Where(x => x.IDKhuNha == IdKhuNha);
            }
            if (IdLoaiPhong > 0)
            {
                phongs = phongs.Where(x => x.IDLoaiPhong == IdLoaiPhong);
            }
            DangKyTheoNgayTable dangKyTable = new DangKyTheoNgayTable();

            dangKyTable.Rows = new List <DangKyTheoNgayRow>();

            dangKyTable.ToDay = date.Date;

            int rowIndex             = 0;
            var skipEmptySlotIndexes = new List <SlotIndex>();

            foreach (var phong in phongs)
            {
                DateTime          currentTime = date.Date.AddHours(7);
                DateTime          endTime     = date.Date.AddHours(22);
                DangKyTheoNgayRow row         = new DangKyTheoNgayRow();
                row.Slots = new List <DangKyTheoNgaySlot>();
                row.Times = new List <TimeHeader>();
                row.Slots.Add(new DangKyTheoNgaySlot
                {
                    TenPhong = phong.TenPhong,
                    isRoom   = true
                });
                int colIndex = 0;

                while (currentTime < endTime)
                {
                    IEnumerable <LichDangKy> dangKyTheoNgay = _dangKyPhongHopRepository.GetLichDangKyByDate(date);

                    LichDangKy dangKyHienTai = dangKyTheoNgay.FirstOrDefault(d => d.IDPhong.Equals(phong.ID) && d.ThoiGianBatDau.Equals(currentTime));

                    row.Times.Add(new TimeHeader
                    {
                        Gio = currentTime
                    });

                    AddDangKySlot(dangKyHienTai, row, skipEmptySlotIndexes, rowIndex, colIndex, currentTime, date.Date, phong, currentTime);
                    currentTime = currentTime.AddMinutes(30);
                    colIndex++;
                }

                dangKyTable.Rows.Add(row);
                rowIndex++;
            }
            return(dangKyTable);
        }
コード例 #2
0
        public void AddDangKySlot(LichDangKy dangKyHientai, DangKyTheoNgayRow row, List <SlotIndex> skipEmptySlotIndexes,
                                  int rowIndex, int colIndex, DateTime thoiGianHienTai, DateTime NgayHienTai,
                                  Phong phong, DateTime gio)
        {
            if (dangKyHientai != null && dangKyHientai.TinhTrang == "Đã chấp nhận")
            {
                var khoangThoiGianTimeSpan = dangKyHientai.ThoiGianKetThuc - dangKyHientai.ThoiGianBatDau;
                var khoangThoiGianDangKy   = (int)khoangThoiGianTimeSpan.TotalMinutes / 30;

                row.Slots.Add(new DangKyTheoNgaySlot
                {
                    IDDangKy        = dangKyHientai.ID,
                    TenPhong        = phong.TenPhong,
                    NgayHienTai     = NgayHienTai,
                    IsDangky        = true,
                    isRoom          = false,
                    ThoiGianDangKy  = khoangThoiGianDangKy,
                    ThoiGianBatDau  = dangKyHientai.ThoiGianBatDau,
                    ThoiGianKetThuc = dangKyHientai.ThoiGianKetThuc,
                    TieuDe          = dangKyHientai.TieuDe,
                    TinhTrang       = dangKyHientai.TinhTrang,
                    NoiDungCuocHop  = dangKyHientai.NoiDungCuocHop
                });
                if (khoangThoiGianDangKy > 1)
                {
                    AddSkipLocation(skipEmptySlotIndexes, khoangThoiGianDangKy, rowIndex, colIndex);
                }
            }
            else if (skipEmptySlotIndexes.IsEmptySlotRequired(colIndex, rowIndex))
            {
                row.Slots.Add(new DangKyTheoNgaySlot
                {
                    NgayHienTai     = NgayHienTai,
                    IsDangky        = false,
                    TenPhong        = phong.TenPhong,
                    isRoom          = false,
                    ThoiGianDangKy  = 1,
                    ThoiGianBatDau  = thoiGianHienTai,
                    ThoiGianKetThuc = thoiGianHienTai.AddMinutes(30),
                });
            }
        }