/// <summary> /// @author: duynn /// @description: lấy danh sách những lịch công tác đã bị xóa /// </summary> /// <param name="searchModel"></param> /// <returns></returns> public List <LICHCONGTAC_BO> GetListDeletedLichCongTacs(LICHCONGTAC_SEARCH searchModel) { IQueryable <LICHCONGTAC_BO> queryResult = (from calendar in this.context.LICHCONGTAC.Where(x => x.IS_DELETE == true && x.IS_LATTEST == true) orderby calendar.NGAY_CONGTAC descending, calendar.GIO_CONGTAC descending select new LICHCONGTAC_BO() { ID = calendar.ID, TIEUDE = calendar.TIEUDE, NGAY_CONGTAC = calendar.NGAY_CONGTAC, GIO_CONGTAC = calendar.GIO_CONGTAC, PHUT_CONGTAC = calendar.PHUT_CONGTAC, DIADIEM = calendar.DIADIEM, NGUOITAO = calendar.NGUOITAO ?? 0, LICH_GOC_ID = calendar.LICH_GOC_ID, GHICHU = calendar.GHICHU, LANHDAO_ID = calendar.LANHDAO_ID }); if (searchModel.startDate != null) { queryResult = queryResult.Where(x => x.NGAY_CONGTAC >= searchModel.startDate); } if (searchModel.endDate != null) { queryResult = queryResult.Where(x => x.NGAY_CONGTAC <= searchModel.endDate); } if (searchModel.leaderId != null) { queryResult = queryResult.Where(x => x.LANHDAO_ID == searchModel.leaderId); } List <LICHCONGTAC_BO> result = queryResult.ToList(); return(result); }
public JsonResult SendEmail(FormCollection fc) { JsonResultBO result = new JsonResultBO(false); lichCongTacBusiness = Get <LICHCONGTACBusiness>(); dmNguoiDungBusiness = Get <DM_NGUOIDUNGBusiness>(); DateTime currentDate = DateTime.Now; var startOfWeek = currentDate.GetStartDayOfWeek(); var endOfWeek = currentDate.GetEndDayOfWeek(); LICHCONGTAC_SEARCH searchModel = new LICHCONGTAC_SEARCH(); searchModel.startDate = startOfWeek; searchModel.endDate = endOfWeek; List <long> userIds = fc["LANHDAO_ID"].ToListLong(','); string subject = fc["TIEUDE"].Trim(); string emailTemplatePath = Path.Combine(ConfigurationManager.AppSettings["FileUpload"], ConfigurationManager.AppSettings["LichCongTacEmailTemplate"]); string emailContent = System.IO.File.ReadAllText(emailTemplatePath); foreach (var item in userIds) { DM_NGUOIDUNG user = dmNguoiDungBusiness.Find(item); if (user != null && string.IsNullOrEmpty(user.EMAIL) == false) { searchModel.leaderId = user.ID; List <LICHCONGTAC_BO> calendars = lichCongTacBusiness.GetListLichCongTacs(searchModel); List <LICHCONGTAC_BO> deletedCalendars = lichCongTacBusiness.GetListDeletedLichCongTacs(searchModel); emailContent = emailContent.Replace("[[recipient]]", user.HOTEN); emailContent = emailContent.Replace("[[week_header_title]]", currentDate.GetWeekNumber() + " (từ ngày " + startOfWeek.ToVietnameseDateFormat() + " đến ngày " + endOfWeek.ToVietnameseDateFormat() + ")"); emailContent = emailContent.Replace("[[week_title]]", currentDate.GetNameOfWeek() + " năm " + currentDate.Year); emailContent = emailContent.Replace("[[week_start_end_date_title]]", currentDate.GetNameOfWeek() + " (" + startOfWeek.GetNameOfDay() + ", " + startOfWeek.ToVietnameseDateFormat() + " - " + endOfWeek.GetNameOfDay() + ", " + endOfWeek.ToVietnameseDateFormat() + ")"); emailContent = emailContent.Replace("[[email_main_content]]", this.GenerateLichCongTacEmailContent(calendars)); emailContent = emailContent.Replace("[[email_error_content]]", this.GenerateLichCongTacDeleteEmailContent(deletedCalendars)); List <string> address = new List <string>() { user.EMAIL }; EmailProvider.sendEmail(emailContent, subject, address); } } result.Status = true; return(Json(result)); }
public PartialViewResult GetCalendarToRegisterCar(FormCollection collection) { lichCongTacBusiness = Get <LICHCONGTACBusiness>(); LICHCONGTAC_SEARCH searchModel = new LICHCONGTAC_SEARCH(); searchModel.leaderId = collection["CAL_LANHDAO_ID"].ToIntOrNULL(); searchModel.startDate = collection["CAL_NGAYBATDAU"].ToDateTime(); searchModel.endDate = collection["CAL_NGAYKETTHUC"].ToDateTime(); LichCongTacByDayViewModel viewModel = new LichCongTacByDayViewModel(); viewModel.groupDateEntities = lichCongTacBusiness.GetListLichCongTacs(searchModel) .GroupBy(x => x.NGAY_CONGTAC).OrderBy(x => x.Key) .Select(x => new LichCongTacDateEntity() { title = x.Key.GetNameOfDay() + " (" + x.Key.ToVietnameseDateFormat() + ")", groupOfCalendars = x.OrderBy(y => y.GIO_CONGTAC).ThenBy(y => y.PHUT_CONGTAC).ToList() }).ToList(); return(PartialView("_ListLichCongTacRegisterCar", viewModel)); }
/// <summary> /// @author: duynn /// @description: lấy danh sách lịch công tác /// @since: 14/08/2018 /// </summary> /// <param name="searchModel"></param> /// <returns></returns> public List <LICHCONGTAC_BO> GetListLichCongTacs(LICHCONGTAC_SEARCH searchModel) { IQueryable <LICHCONGTAC_BO> queryResult = (from calendar in this.context.LICHCONGTAC.Where(x => x.IS_DELETE != true && x.IS_LATTEST == true) join leader in this.context.DM_NGUOIDUNG on calendar.LANHDAO_ID equals leader.ID orderby calendar.NGAY_CONGTAC descending, calendar.GIO_CONGTAC descending select new LICHCONGTAC_BO() { ID = calendar.ID, TIEUDE = calendar.TIEUDE, NGAY_CONGTAC = calendar.NGAY_CONGTAC, GIO_CONGTAC = calendar.GIO_CONGTAC, PHUT_CONGTAC = calendar.PHUT_CONGTAC, DIADIEM = calendar.DIADIEM, NGUOITAO = calendar.NGUOITAO ?? 0, LICH_GOC_ID = calendar.LICH_GOC_ID, LANHDAO_ID = calendar.LANHDAO_ID ?? 0, TEN_LANHDAO = leader.HOTEN, NGUOICHUTRI_ID = calendar.NGUOICHUTRI_ID, GHICHU = calendar.GHICHU }); if (searchModel.startDate != null) { queryResult = queryResult.Where(x => x.NGAY_CONGTAC >= searchModel.startDate); } if (searchModel.endDate != null) { queryResult = queryResult.Where(x => x.NGAY_CONGTAC <= searchModel.endDate); } if (searchModel.leaderId != null) { queryResult = queryResult.Where(x => x.LANHDAO_ID == searchModel.leaderId); } if (searchModel.queryDeptId != null) { IQueryable <int> listSameParentDeptIds = this.context.CCTC_THANHPHAN.Where(x => x.PARENT_ID == searchModel.queryDeptId.Value) .Select(x => x.ID); IQueryable <long> listUserIdsHasSameParentDepts = this.context.DM_NGUOIDUNG .Where(x => x.DM_PHONGBAN_ID != null && listSameParentDeptIds.Contains(x.DM_PHONGBAN_ID.Value)) .Select(x => x.ID); queryResult = queryResult.Where(x => listUserIdsHasSameParentDepts.Contains(x.LANHDAO_ID.Value)); } List <LICHCONGTAC_BO> result = queryResult.ToList(); //danh sách lịch công tác có đã đăng ký xe List <long> registeredCarCalendars = (from calendar in this.context.LICHCONGTAC.Where(x => x.IS_DELETE != true) join register in this.context.QL_DANGKY_XE.Where(x => x.IS_DELETE != true && x.TRANGTHAI != TRANGTHAI_DANGKY_XE_CONSTANT.DA_HUY_ID) on calendar.ID equals register.LICHCONGTAC_ID select calendar.ID).ToList(); result.ForEach(x => { x.IS_OLD_WEEK = x.NGAY_CONGTAC.IsOldWeek(); x.IS_REGISTERED_CAR = registeredCarCalendars.Contains(x.ID); }); return(result); }
public PartialViewResult SearchLichCongTac(LICHCONGTAC_SEARCH searchModel) { AssignUserInfo(); lichCongTacBusiness = Get <LICHCONGTACBusiness>(); DM_THAOTAC userFunction = currentUser.ListThaoTac.Where(o => o.MA_THAOTAC.ToUpper() == "TAO_LICHCONGTAC").FirstOrDefault(); searchModel.queryDeptId = currentUser.DeptParentID; if (searchModel.calendarDay == null) { searchModel.calendarDay = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); } else { var calendarDayValue = searchModel.calendarDay.Value; searchModel.calendarDay = new DateTime(calendarDayValue.Year, calendarDayValue.Month, calendarDayValue.Day); } var currentDay = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var day = searchModel.calendarDay.Value; var groupOfYears = lichCongTacBusiness.GetListYears(day); var groupOfWeeks = Enumerable.Range(1, 52).Select(w => new SelectListItem() { Value = w.ToString(), Text = "Tuần " + w, Selected = (day.GetWeekNumber() == w) }).ToList(); var groupOfMonths = Enumerable.Range(1, 12).Select(m => new SelectListItem() { Value = m.ToString(), Text = "Tháng " + m, Selected = (day.Month == m) }).ToList(); if (searchModel.calendarType == LICH_CONSTANT.NGAY) { //nếu người dùng tìm kiếm không nhập ngày bắt đầu và kết thúc mặc định lấy của tuần này if (searchModel.startDate == null && searchModel.endDate == null) { searchModel.startDate = day.GetStartDayOfWeek(); searchModel.endDate = day.GetEndDayOfWeek(); } LichCongTacByDayViewModel viewModel = new LichCongTacByDayViewModel(); viewModel.currentUserId = currentUser.ID; viewModel.startDate = searchModel.startDate; viewModel.endDate = searchModel.endDate; viewModel.groupOfYears = groupOfYears; viewModel.title = "Từ " + string.Format("{0:dd/MM/yyyy}", searchModel.startDate) + " đến " + string.Format("{0:dd/MM/yyyy}", searchModel.endDate); viewModel.groupDateEntities = lichCongTacBusiness.GetListLichCongTacs(searchModel) .GroupBy(x => x.NGAY_CONGTAC).OrderBy(x => x.Key) .Select(x => new LichCongTacDateEntity() { title = x.Key.GetNameOfDay() + " (" + x.Key.ToVietnameseDateFormat() + ")", isToday = x.Key.Equals(currentDay), groupOfCalendars = x.OrderBy(y => y.GIO_CONGTAC).ThenBy(y => y.PHUT_CONGTAC).ToList() }).ToList(); return(PartialView("_ListLichCongTacByDayOfWeek", viewModel)); } else if (searchModel.calendarType == LICH_CONSTANT.TUAN) { LichCongTacByWeekViewModel viewModel = new LichCongTacByWeekViewModel(); var startOfWeek = day.GetStartDayOfWeek(); var endOfWeek = day.GetEndDayOfWeek(); viewModel.currentUserId = currentUser.ID; viewModel.canCreate = (userFunction != null && userFunction.DM_THAOTAC_ID > 0); viewModel.title = day.GetNameOfWeek() + " (" + startOfWeek.GetNameOfDay() + ", " + startOfWeek.ToVietnameseDateFormat() + " - " + endOfWeek.GetNameOfDay() + ", " + endOfWeek.ToVietnameseDateFormat() + ")"; viewModel.groupOfYears = groupOfYears; viewModel.groupOfWeeks = groupOfWeeks; searchModel.startDate = startOfWeek; searchModel.endDate = endOfWeek; List <LICHCONGTAC_BO> calendars = lichCongTacBusiness.GetListLichCongTacs(searchModel); //lấy các ngày trong tuần viewModel.groupOfDates = new List <DateTime>(); for (var d = startOfWeek; d <= endOfWeek; d = d.AddDays(1)) { viewModel.groupOfDates.Add(d); } //lấy lịch theo từng khung giờ theo từng ngày viewModel.groupWeekHourEntities = new List <LichCongTacByWeekHourEntity>(); for (int h = 0; h <= 23; h++) { LichCongTacByWeekHourEntity hourEntity = new LichCongTacByWeekHourEntity(); hourEntity.title = h.ToString("D2") + "h"; hourEntity.hour = h; hourEntity.groupDateEntities = new List <LichCongTacDateEntity>(); for (var d = startOfWeek; d <= endOfWeek; d = d.AddDays(1)) { LichCongTacDateEntity hourDateEntity = new LichCongTacDateEntity(); hourDateEntity.date = d; hourDateEntity.groupOfCalendars = new List <LICHCONGTAC_BO>(); hourDateEntity.groupOfCalendars.AddRange(calendars .Where(x => x.NGAY_CONGTAC.Day == d.Day && x.GIO_CONGTAC == h) .OrderBy(x => x.GIO_CONGTAC).ThenBy(x => x.PHUT_CONGTAC).ToList()); hourDateEntity.isToday = (d.Equals(currentDay)); hourEntity.groupDateEntities.Add(hourDateEntity); } viewModel.groupWeekHourEntities.Add(hourEntity); } return(PartialView("_ListLichCongTacByWeek", viewModel)); } else { LichCongTacByMonthViewModel viewModel = new LichCongTacByMonthViewModel(); viewModel.currentUserId = currentUser.ID; viewModel.canCreate = (userFunction != null && userFunction.DM_THAOTAC_ID > 0); viewModel.year = day.Year; viewModel.month = day.Month; viewModel.title = "Tháng " + day.Month + ", năm " + day.Year; viewModel.groupOfYears = groupOfYears; viewModel.groupOfMonths = groupOfMonths; //lấy ngày đầu tiên và cuối cùng trong tháng int lastDayInMonth = DateTime.DaysInMonth(day.Year, day.Month); searchModel.startDate = (new DateTime(day.Year, day.Month, 1)); searchModel.endDate = (new DateTime(day.Year, day.Month, lastDayInMonth)); List <LICHCONGTAC_BO> calendars = lichCongTacBusiness.GetListLichCongTacs(searchModel); List <DateTime> datesOfMonth = Enumerable.Range(1, lastDayInMonth) .Select(x => new DateTime(day.Year, day.Month, x)).ToList(); DateTime defaultDate = new DateTime(1, 1, 1); viewModel.groupWeekEntities = new List <LichCongTacByMonthWeekEntity>(); for (int w = 1; w <= 6; w++) { LichCongTacByMonthWeekEntity weekEntity = new LichCongTacByMonthWeekEntity(); List <DateTime> daysOfWeek = datesOfMonth.Where(x => x.GetWeekOfMonth() == w).ToList(); if (daysOfWeek.Any()) { weekEntity.groupDateEntities = new List <LichCongTacDateEntity>(); for (int d = (int)DayOfWeek.Sunday; d <= (int)DayOfWeek.Saturday; d++) { DateTime weekDay = daysOfWeek.Where(x => (int)x.DayOfWeek == d).FirstOrDefault(); LichCongTacDateEntity dateEntity = new LichCongTacDateEntity(); if (weekDay != defaultDate) { dateEntity.isToday = weekDay.Equals(currentDay); dateEntity.date = weekDay; dateEntity.title = weekDay.Day.ToString(); dateEntity.groupOfCalendars = calendars.Where(x => x.NGAY_CONGTAC.Day == weekDay.Day) .OrderBy(x => x.GIO_CONGTAC) .ThenBy(x => x.PHUT_CONGTAC) .ToList(); } weekEntity.groupDateEntities.Add(dateEntity); } viewModel.groupWeekEntities.Add(weekEntity); } } return(PartialView("_ListLichCongTacByMonth", viewModel)); } }