/// <summary> /// @author: duynn /// @description: lấy danh sách lịch đặt phòng họp /// </summary> /// <param name="searchModel"></param> /// <returns></returns> public List <QLPHONGHOP_BO> GetData(QLPHONGHOP_SEARCH searchModel) { IQueryable <QLPHONGHOP_BO> queryResult = (from cal in this.context.QUANLY_PHONGHOP.Where(x => x.IS_DELETE != true && x.NGAYDAT != null) join user in this.context.DM_NGUOIDUNG on cal.USER_ID equals user.ID into group1 from g1 in group1.DefaultIfEmpty() join room in this.context.QL_PHONGHOP on cal.PHONG_ID equals room.ID into group2 from g2 in group2.DefaultIfEmpty() select new QLPHONGHOP_BO() { ID = cal.ID, USER_ID = cal.USER_ID, TEN_LANHDAO = g1.HOTEN, PHONG_ID = cal.PHONG_ID, MUCDICH = cal.MUCDICH ?? string.Empty, THANHPHANTHAMDU = cal.THANHPHANTHAMDU, NGAYDAT = cal.NGAYDAT, GIOBATDAU = cal.GIOBATDAU ?? 0, PHUTBATDAU = cal.PHUTBATDAU ?? 0, GIOKETTHUC = cal.GIOKETTHUC ?? 0, PHUTKETTHUC = cal.PHUTKETTHUC ?? 0, CREATED_AT = cal.CREATED_AT, CREATED_BY = cal.CREATED_BY, CCTC_THANHPHAN_ID = cal.CCTC_THANHPHAN_ID ?? 0, }); if (searchModel != null) { if (searchModel.queryUserId != null) { queryResult = queryResult.Where(x => x.USER_ID == searchModel.queryUserId.Value); } if (searchModel.queryDeptParentID != null) { queryResult = queryResult.Where(x => x.CCTC_THANHPHAN_ID == searchModel.queryDeptParentID.Value); } if (searchModel.queryStartDate != null) { queryResult = queryResult.Where(x => x.NGAYDAT >= searchModel.queryStartDate.Value); } if (searchModel.queryEndDate != null) { searchModel.queryEndDate = searchModel.queryEndDate.ToEndDay(); queryResult = queryResult.Where(x => x.NGAYDAT <= searchModel.queryEndDate); } } List <QLPHONGHOP_BO> result = queryResult.ToList(); return(result); }
public PartialViewResult SearchLichDatPhong(QLPHONGHOP_SEARCH searchModel) { AssignUserInfo(); QUANLY_PHONGHOPBusiness = Get <QUANLY_PHONGHOPBusiness>(); if (searchModel.calendarDay == null) { searchModel.calendarDay = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); } else { searchModel.calendarDay = new DateTime(searchModel.calendarDay.Value.Year, searchModel.calendarDay.Value.Month, searchModel.calendarDay.Value.Day); } DateTime today = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); DateTime currentDay = searchModel.calendarDay.Value; DateTime inValidDay = new DateTime(1, 1, 1); List <SelectListItem> groupOfYears = QUANLY_PHONGHOPBusiness.GetListYears(currentDay); List <SelectListItem> groupOfWeeks = Enumerable.Range(1, 52).Select(w => new SelectListItem() { Value = w.ToString(), Text = "Tuần " + w, Selected = (currentDay.GetWeekNumber() == w) }).ToList(); var groupOfMonths = Enumerable.Range(1, 12).Select(m => new SelectListItem() { Value = m.ToString(), Text = "Tháng " + m, Selected = (currentDay.Month == m) }).ToList(); searchModel.queryDeptParentID = currentUser.DeptParentID.GetValueOrDefault(); if (searchModel.calendarType == LICH_CONSTANT.NGAY) { //nếu người dùng không nhập thông tin ngày bắt đầu và kết thúc mặc định lấy ngày đầu và kêt thúc của tuần hiện tại if (searchModel.queryStartDate == null && searchModel.queryEndDate == null) { searchModel.queryStartDate = currentDay.GetStartDayOfWeek(); searchModel.queryEndDate = currentDay.GetEndDayOfWeek(); } LichHopByDayViewModel viewModel = new LichHopByDayViewModel(); viewModel.currentUserId = currentUser.ID; viewModel.startDate = searchModel.queryStartDate; viewModel.endDate = searchModel.queryEndDate; viewModel.title = string.Format("Từ {0} đến {1}", string.Format("{0:dd/MM/yyyy}", searchModel.queryStartDate), string.Format("{0:dd/MM/yyyy}", searchModel.queryEndDate)); viewModel.groupOfEntities = QUANLY_PHONGHOPBusiness.GetData(searchModel) .GroupBy(x => x.NGAYDAT.Value) .OrderBy(x => x.Key) .Select(x => new LichCongTacEntityViewModel() { isToday = x.Key.Equals(today), title = string.Format("{0} ({1})", x.Key.GetNameOfDay(), x.Key.ToVietnameseDateFormat()), groupOfCalendars = x.OrderBy(y => y.GIOBATDAU).ThenBy(y => y.PHUTBATDAU).ToList() }).ToList(); return(PartialView("_LichDatPhongByDay", viewModel)); } else if (searchModel.calendarType == LICH_CONSTANT.TUAN) { LichHopByWeekViewModel viewModel = new LichHopByWeekViewModel(); viewModel.currentUserId = currentUser.ID; var startOfWeek = currentDay.GetStartDayOfWeek(); var endOfWeek = currentDay.GetEndDayOfWeek(); //gán vào search model searchModel.queryStartDate = startOfWeek; searchModel.queryEndDate = endOfWeek; //lấy các ngày trong tuần viewModel.groupOfDates = new List <DateTime>(); viewModel.title = currentDay.GetNameOfWeek() + " (" + startOfWeek.GetNameOfDay() + ", " + startOfWeek.ToVietnameseDateFormat() + " - " + endOfWeek.GetNameOfDay() + ", " + endOfWeek.ToVietnameseDateFormat() + ")"; viewModel.groupOfWeeks = groupOfWeeks; viewModel.groupOfYears = groupOfYears; for (DateTime d = startOfWeek; d <= endOfWeek; d = d.AddDays(1)) { viewModel.groupOfDates.Add(d); } //lấy từng khung giờ trong mỗi ngày viewModel.groupOfHours = new List <LichHopByHourViewModel>(); for (int hour = 8; hour <= 23; hour++) { LichHopByHourViewModel hourEntity = new LichHopByHourViewModel(); hourEntity.title = hour.ToString("D2"); hourEntity.groupOfEntities = new List <LichCongTacEntityViewModel>(); for (DateTime d = startOfWeek; d <= endOfWeek; d = d.AddDays(1)) { LichCongTacEntityViewModel entity = new LichCongTacEntityViewModel(); entity.entityDay = d; entity.isToday = d.Equals(today); entity.groupOfCalendars = QUANLY_PHONGHOPBusiness.GetData(searchModel) .Where(x => x.NGAYDAT == d) .Where(x => x.GIOBATDAU == hour) .OrderBy(x => x.PHUTBATDAU) .ToList(); hourEntity.groupOfEntities.Add(entity); } viewModel.groupOfHours.Add(hourEntity); } return(PartialView("_LichDatPhongByWeek", viewModel)); } else { LichHopByMonthViewModel viewModel = new LichHopByMonthViewModel(); viewModel.currentUserId = currentUser.ID; viewModel.day = currentDay.Day; viewModel.month = currentDay.Month; viewModel.year = currentDay.Year; viewModel.groupOfMonths = groupOfMonths; viewModel.groupOfYears = groupOfYears; viewModel.title = string.Format("Tháng {0}, năm {1}", viewModel.month, viewModel.year); //int weeksOfMonth = Utility.GetWeeksOfMonth(viewModel.month, viewModel.year); int lastDayOfMonth = DateTime.DaysInMonth(viewModel.year, viewModel.month); List <DateTime> daysInMonth = Enumerable.Range(1, lastDayOfMonth) .Select(x => new DateTime(viewModel.year, viewModel.month, x)) .ToList(); //gán vào search model searchModel.queryStartDate = new DateTime(viewModel.year, viewModel.month, 1); searchModel.queryEndDate = new DateTime(viewModel.year, viewModel.month, lastDayOfMonth); //lấy các tuần trong tháng viewModel.groupOfWeeks = new List <LichHopByWeekViewModel>(); for (int week = 1; week <= 6; week++) { LichHopByWeekViewModel weekEntity = new LichHopByWeekViewModel(); weekEntity.groupOfDays = new List <LichCongTacEntityViewModel>(); List <DateTime> daysOfWeek = daysInMonth.Where(x => x.GetWeekOfMonth() == week).ToList(); //lấy các ngày trong tuần for (int day = (int)DayOfWeek.Sunday; day <= (int)DayOfWeek.Saturday; day++) { LichCongTacEntityViewModel dayEntity = new LichCongTacEntityViewModel(); DateTime dayOfWeek = daysOfWeek.Where(x => (int)x.DayOfWeek == day).FirstOrDefault(); if (dayOfWeek.Equals(inValidDay) == false) { dayEntity.title = dayOfWeek.Day.ToString(); dayEntity.entityDay = dayOfWeek; dayEntity.isToday = dayOfWeek.Equals(today); dayEntity.groupOfCalendars = QUANLY_PHONGHOPBusiness.GetData(searchModel) .Where(x => x.NGAYDAT.Value.Day == dayOfWeek.Day) .OrderBy(x => x.GIOBATDAU) .ThenBy(x => x.PHUTBATDAU) .ToList(); } weekEntity.groupOfDays.Add(dayEntity); } viewModel.groupOfWeeks.Add(weekEntity); } return(PartialView("_LichDatPhongByMonth", viewModel)); } }
public PartialViewResult SearchPhongHop(QLPHONGHOP_SEARCH searchModel) { AssignUserInfo(); QL_PHONGHOPBusiness = Get <QL_PHONGHOPBusiness>(); QUANLY_PHONGHOPBusiness = Get <QUANLY_PHONGHOPBusiness>(); DM_DANHMUC_DATABusiness = Get <DM_DANHMUC_DATABusiness>(); if (searchModel.calendarDay == null) { searchModel.calendarDay = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); } else { searchModel.calendarDay = new DateTime(searchModel.calendarDay.Value.Year, searchModel.calendarDay.Value.Month, searchModel.calendarDay.Value.Day); } DateTime today = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); DateTime currentDay = searchModel.calendarDay.Value; PhongHopViewModel viewModel = new PhongHopViewModel(); var startOfWeek = currentDay.GetStartDayOfWeek(); var endOfWeek = currentDay.GetEndDayOfWeek(); //gán vào search model searchModel.queryStartDate = startOfWeek; searchModel.queryEndDate = endOfWeek; searchModel.queryDeptParentID = currentUser.DeptParentID.GetValueOrDefault(); //lấy các ngày trong tuần viewModel.groupOfDates = new List <DateTime>(); for (DateTime day = startOfWeek; day <= endOfWeek; day = day.AddDays(1)) { viewModel.groupOfDates.Add(day); } viewModel.title = currentDay.GetNameOfWeek() + " (" + startOfWeek.GetNameOfDay() + ", " + startOfWeek.ToVietnameseDateFormat() + " - " + endOfWeek.GetNameOfDay() + ", " + endOfWeek.ToVietnameseDateFormat() + ")"; viewModel.groupOfYears = QUANLY_PHONGHOPBusiness.GetListYears(currentDay); viewModel.groupOfWeeks = Enumerable.Range(1, 52).Select(w => new SelectListItem() { Value = w.ToString(), Text = "Tuần " + w, Selected = (currentDay.GetWeekNumber() == w) }).ToList(); //lấy danh sách các lịch đặt phòng List <QLPHONGHOP_BO> calendars = QUANLY_PHONGHOPBusiness.GetData(searchModel); //lấy danh sách các phòng List <QL_PHONGHOP> rooms = QL_PHONGHOPBusiness.context.QL_PHONGHOP.Where(x => x.DEPID == currentUser.DeptParentID).ToList(); viewModel.groupOfCalendars = new List <LichCongTacEntityViewModel>(); for (DateTime day = startOfWeek; day <= endOfWeek; day = day.AddDays(1)) { LichCongTacEntityViewModel dayEntity = new LichCongTacEntityViewModel(); dayEntity.title = string.Format("{0} ({1})", day.GetNameOfDay(), day.ToVietnameseDateFormat()); dayEntity.isToday = day.Equals(today); dayEntity.groupOfCalendars = calendars.Where(x => x.NGAYDAT == day && x.PHONG_ID == 0) .OrderBy(x => x.GIOBATDAU).ThenBy(x => x.PHUTBATDAU) .ThenBy(x => x.USER_ID) .ToList(); viewModel.groupOfCalendars.Add(dayEntity); } viewModel.groupOfRooms = new List <PhongHopEntity>(); foreach (var room in rooms) { PhongHopEntity roomEntity = new PhongHopEntity(); roomEntity.name = room.TENPHONG; roomEntity.groupOfCalendars = new List <LichCongTacEntityViewModel>(); for (DateTime day = startOfWeek; day <= endOfWeek; day = day.AddDays(1)) { LichCongTacEntityViewModel dayEntity = new LichCongTacEntityViewModel(); dayEntity.groupMorningItems = calendars .Where(x => x.NGAYDAT == day && x.PHONG_ID == room.ID) .Where(x => x.GIOBATDAU <= 12) .OrderBy(x => x.GIOBATDAU) .ThenBy(x => x.PHUTBATDAU) .ToList(); dayEntity.groupAfternoonItems = calendars .Where(x => x.NGAYDAT == day && x.PHONG_ID == room.ID) .Where(x => x.GIOBATDAU > 13) .OrderBy(x => x.GIOBATDAU) .ThenBy(x => x.PHUTBATDAU) .ToList(); roomEntity.groupOfCalendars.Add(dayEntity); } viewModel.groupOfRooms.Add(roomEntity); } return(PartialView("_ListPhongHop", viewModel)); }