//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); }
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), }); } }