Example #1
0
        public PartialViewResult EditStorage(long id)
        {
            DungLuongLuuTruModel model = new DungLuongLuuTruModel();

            DUNGLUONG_LUUTRUBusiness = Get <DUNGLUONG_LUUTRUBusiness>();
            DM_NGUOIDUNGBusiness     = Get <DM_NGUOIDUNGBusiness>();
            CCTC_THANHPHANBusiness   = Get <CCTC_THANHPHANBusiness>();
            DUNGLUONG_LUUTRU Storage = DUNGLUONG_LUUTRUBusiness.GetDataByUser(id);

            if (Storage == null)
            {
                Storage           = new DUNGLUONG_LUUTRU();
                Storage.DUNGLUONG = ThuMucLuuTruConstant.DefaultStorage;
                Storage.TYPE      = ThuMucLuuTruConstant.DetaultType;
                Storage.USER_ID   = 0;
            }
            model.Storage = Storage;
            DM_NGUOIDUNG NguoiDung = DM_NGUOIDUNGBusiness.Find(id);

            if (NguoiDung == null)
            {
                NguoiDung = new DM_NGUOIDUNG();
            }
            CCTC_THANHPHAN DonVi = CCTC_THANHPHANBusiness.Find(NguoiDung.DM_PHONGBAN_ID);

            if (DonVi == null)
            {
                DonVi = new CCTC_THANHPHAN();
            }
            model.NguoiDung = NguoiDung;
            model.DonVi     = DonVi;
            return(PartialView("_SetupStorage", model));
        }
Example #2
0
        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));
        }
Example #3
0
        /// <summary>
        /// @author:duynn
        /// @description: gửi đơn vị nhận bên ngoài
        /// @since: 10/06/2019
        /// </summary>
        /// <param name="entityVanBanDi"></param>
        /// <param name="sms"></param>
        /// <returns></returns>
        public bool SaveVanBanPhatHanhToDonVi(HSCV_VANBANDI entityVanBanDi, SMSDAL.SendSMSDAL sms)
        {
            bool result = true;

            try
            {
                DM_NHOMDANHMUC entityNhomDanhMuc = DM_NHOMDANHMUCBusiness.repository.All()
                                                   .FirstOrDefault(x => x.GROUP_CODE == DMLOAI_CONSTANT.SOVANBANDEN);

                DM_NGUOIDUNG entityNguoiKy = DM_NGUOIDUNGBusiness.Find(entityVanBanDi.NGUOIKY_ID);

                List <TAILIEUDINHKEM> groupFiles = TAILIEUDINHKEMBusiness.GetNewestData(entityVanBanDi.ID, LOAITAILIEU.VANBAN);

                List <int> idsDonViNhan = new List <int>();

                if (!string.IsNullOrEmpty(entityVanBanDi.DONVINHAN_INTERNAL_ID))
                {
                    var idsDonViDaNhan = entityVanBanDi.DONVINHAN_INTERNAL_ID.ToListInt(',');
                    idsDonViNhan.AddRange(idsDonViDaNhan);
                    entityVanBanDi.DONVINHAN_INTERNAL_ID = string.Join(",", idsDonViNhan.ToArray());
                }

                List <CCTC_THANHPHAN> groupDonViNhan = CCTC_THANHPHANBusiness.repository.AllNoTracking
                                                       .Where(x => idsDonViNhan.Contains(x.ID)).ToList();
                List <LOGSMS>               groupLogSMS          = new List <LOGSMS>();
                List <TAILIEUDINHKEM>       groupForwardFiles    = new List <TAILIEUDINHKEM>();
                List <WF_ITEM_USER_PROCESS> groupItemUserProcess = new List <WF_ITEM_USER_PROCESS>();
                foreach (var dept in groupDonViNhan)
                {
                    WF_STATE firstState = null;

                    //kiểm tra có phải là gửi nội bộ hay không?
                    bool isSendInternal = false;
                    //- trường hợp gửi cho các ban ngành cấp tỉnh và các huyện xa -> thành văn bản đến của các đơnvị nhận được
                    if (dept.TYPE == DEPTTYLELABEL.ToIntOrZero())
                    {
                        //- trường hợp này là văn bản đến bình thường
                        var workflowModule = WF_MODULEBusiness.repository
                                             .All().FirstOrDefault(x => x.MODULE_CODE == MODULE_CONSTANT.VANBANDEN);

                        var workflowStreamIds = workflowModule.WF_STREAM_ID.ToListInt(',');

                        //- lấy luồng xử lý của từng đơn vị
                        var workflowStream = WF_STREAMBusiness.repository.All()
                                             .FirstOrDefault(x => x.LEVEL_ID == dept.CATEGORY && workflowStreamIds.Contains(x.ID));

                        //lấy trạng thái xử lý ban đầu cảu đơn vị
                        firstState = WF_STATEBusiness.repository.All()
                                     .FirstOrDefault(x => x.IS_START == true && x.WF_ID == workflowStream.ID);
                    }
                    else if (dept.PARENT_ID == currentUser.DeptParentID)
                    {
                        isSendInternal = true;
                        //- trường hợp gửi các phòng ban thuộc tỉnh ủy => thành văn bản đến nội bộ của tỉnh
                        var workflowModule = WF_MODULEBusiness.repository.All()
                                             .FirstOrDefault(x => x.MODULE_CODE == MODULE_CONSTANT.VANBANDENNOIBO);

                        var workflowStreamIds = workflowModule.WF_STREAM_ID.ToListInt(',');

                        //- lấy luồng xử lý của từng đơn vị
                        var workflowStream = WF_STREAMBusiness.repository.All()
                                             .FirstOrDefault(x => x.LEVEL_ID == dept.CATEGORY && workflowStreamIds.Contains(x.ID));

                        firstState = WF_STATEBusiness.repository.All()
                                     .FirstOrDefault(x => x.IS_START == true && x.WF_ID == workflowStream.ID);
                    }


                    UserInfoBO processor = null;

                    /**
                     * kiểm tra vai trò nhận của trạng thái đầu tiên
                     */
                    if (firstState != null)
                    {
                        /**
                         * lấy người thuộc phòng ban có vai trò xử lý
                         */
                        var receiver = DM_NGUOIDUNGBusiness.GetUserByRoleAndDeptId(firstState.VAITRO_ID.GetValueOrDefault(), dept.ID).FirstOrDefault();
                        if (receiver != null)
                        {
                            processor = DM_NGUOIDUNGBusiness.GetNewUserInfo(receiver.Value.ToLongOrZero());
                        }
                    }


                    var dataSoVanBanDen = DM_DANHMUC_DATABusiness.GetSoVanBan(DMLOAI_CONSTANT.SOVANBANDEN, DateTime.Now.Year, dept.ID);
                    if (dataSoVanBanDen == null)
                    {
                        //tạo sổ văn bản đến
                        dataSoVanBanDen = new DM_DANHMUC_DATA()
                        {
                            DEPTID     = dept.ID,
                            TEXT       = "Sổ văn bản đến " + DateTime.Now.Year,
                            DATA       = DateTime.Now.Year,
                            DM_NHOM_ID = entityNhomDanhMuc.ID
                        };
                        DM_DANHMUC_DATABusiness.Save(dataSoVanBanDen);
                    }

                    HSCV_VANBANDEN entityVanBanDen = this.ConvertToVanBanDen(entityVanBanDi, entityNguoiKy, dataSoVanBanDen);
                    entityVanBanDen.IS_NOIBO = isSendInternal ? true : false;
                    HSCV_VANBANDENBusiness.Save(entityVanBanDen);

                    /**
                     * cập nhật số văn bản đến
                     */
                    dataSoVanBanDen.GHICHU = (dataSoVanBanDen.GHICHU.ToIntOrZero() + 1).ToString();
                    DM_DANHMUC_DATABusiness.Save(dataSoVanBanDen);

                    /**
                     * cập nhật tài liệu đính kèm
                     */
                    var files = this.GenerateFiles(groupFiles, entityVanBanDen);
                    groupForwardFiles.AddRange(files);

                    /**
                     * cập nhật thông tin văn bản đến trong luồng xử lý
                     */
                    if (processor != null)
                    {
                        WF_PROCESSBusiness.AddFlow(entityVanBanDen.ID, isSendInternal ? MODULE_CONSTANT.VANBANDENNOIBO : MODULE_CONSTANT.VANBANDEN, processor);
                    }

                    /**
                     * nếu không có người phù hợp trong luồng xử lý ==> lấy người có vai trò cao nhất tại phòng
                     */
                    if (processor == null)
                    {
                        /**
                         * lấy ra người có vai trò cao nhất tại phòng ban
                         */
                        processor = DM_NGUOIDUNGBusiness.GetUserHighestPriority(dept.ID);

                        /**
                         * lưu thông in người nhận vào bảng  WF_ITEM_USER_PROCESS
                         */
                        var itemUserProcess = new WF_ITEM_USER_PROCESS();
                        itemUserProcess.ITEM_ID      = entityVanBanDen.ID;
                        itemUserProcess.ITEM_TYPE    = isSendInternal ? MODULE_CONSTANT.VANBANDENNOIBO : MODULE_CONSTANT.VANBANDEN;
                        itemUserProcess.IS_XULYCHINH = false;
                        itemUserProcess.USER_ID      = processor.ID;
                        itemUserProcess.create_at    = DateTime.Now;
                        itemUserProcess.create_by    = currentUser.ID;
                        groupItemUserProcess.Add(itemUserProcess);
                    }


                    if (processor != null)
                    {
                        ElasticSearch.updateListUser(entityVanBanDen.ID.ToString(), new List <long> {
                            processor.ID
                        }, ElasticType.VanBanDen);

                        //gửi email
                        if (!string.IsNullOrEmpty(processor.EMAIL))
                        {
                            var ContentEmail = currentUser.TenPhongBan + " đã gửi bạn một văn bản đến <a href='" + SERVERADDRESS + "/HSCV_VANBANDENArea/HSCV_VANBANDEN/DetailVanBanDen?id=" + entityVanBanDen.ID.ToString() + "'>" + entityVanBanDen.SOHIEU + "</a>";
                            EmailProvider.SendMailTemplate(currentUser, ContentEmail, ContentEmail, new List <string> {
                                processor.EMAIL
                            });
                        }
                        //gửi tin nhắn
                        if (currentUser.CanSendSMS && entityVanBanDi.CAN_SEND_SMS == true && processor.DIENTHOAI != null)
                        {
                            var ContentSMS = currentUser.TenPhongBan + " đã gửi bạn một văn bản đến " + entityVanBanDen.SOHIEU;
                            ContentSMS = sms.locDau(ContentSMS);
                            var      DoDaiSMS = ContentSMS.Length;
                            string[] noiDung  = new string[1];
                            noiDung[0] = ContentSMS;
                            string resultsend = sms.guiTinNhan(processor.DIENTHOAI, "177403", noiDung);
                            LOGSMS SmsObject  = new LOGSMS();
                            SmsObject.SODIENTHOAINHAN = processor.DIENTHOAI;
                            SmsObject.NOIDUNG         = ContentSMS;
                            SmsObject.SOKYTU          = DoDaiSMS;
                            SmsObject.KETQUA          = resultsend;
                            SmsObject.CREATED_AT      = DateTime.Now;
                            SmsObject.CREATED_BY      = currentUser.ID;
                            SmsObject.HOTENNGUOIGUI   = currentUser.HOTEN;
                            SmsObject.DONVI_GUI       = currentUser.DM_PHONGBAN_ID.GetValueOrDefault();
                            SmsObject.ITEMTYPE        = "VANBANDEN";
                            SmsObject.ITEMID          = entityVanBanDen.ID;
                            SmsObject.DONVI_NHAN      = processor.DM_PHONGBAN_ID.GetValueOrDefault();
                            SmsObject.HOTENNGUOINHAN  = processor.HOTEN;
                            groupLogSMS.Add(SmsObject);
                        }

                        //lưu thông báo
                        SYS_TINNHAN noti = new SYS_TINNHAN();
                        noti.FROM_USERNAME = currentUser.HOTEN;
                        noti.FROM_USER_ID  = currentUser.ID;
                        noti.NGAYTAO       = DateTime.Now;
                        noti.NOIDUNG       = currentUser.TenPhongBan + " đã gửi đến bạn một văn bản đến";
                        noti.URL           = "/HSCV_VANBANDENArea/HSCV_VANBANDEN/DetailVanBanDen/" + entityVanBanDen.ID.ToString();
                        noti.TIEUDE        = "Xử lý văn bản đến";
                        noti.TO_USER_ID    = processor.ID;
                        SYS_TINNHANBusiness.Save(noti, "", false, entityVanBanDen.ID, TargetDocType.COORDINATED);
                    }
                }

                //lưu thông tin tài liệu, sms, luồng xử lý
                TAILIEUDINHKEMBusiness.repository.InsertRange(groupForwardFiles);
                LogSMSBusiness.repository.InsertRange(groupLogSMS);
                WF_ITEM_USER_PROCESSBusiness.repository.InsertRange(groupItemUserProcess);

                TAILIEUDINHKEMBusiness.repository.Save();
            }
            catch (Exception)
            {
                result = false;
            }
            return(result);
        }
Example #4
0
        public JsonResult SavePhatHanhVanBan(FormCollection col)
        {
            AssignUserInfo();
            SMSDAL.SendSMSDAL sms = new SMSDAL.SendSMSDAL();
            SYS_TINNHANBusiness = Get <SYS_TINNHANBusiness>();
            LogSMSBusiness      = Get <LogSMSBusiness>();

            HSCV_VANBANDIBusiness  = Get <HSCV_VANBANDIBusiness>();
            HSCV_VANBANDENBusiness = Get <HSCV_VANBANDENBusiness>();

            DM_NHOMDANHMUCBusiness  = Get <DM_NHOMDANHMUCBusiness>();
            DM_DANHMUC_DATABusiness = Get <DM_DANHMUC_DATABusiness>();
            TAILIEUDINHKEMBusiness  = Get <TAILIEUDINHKEMBusiness>();
            DM_NGUOIDUNGBusiness    = Get <DM_NGUOIDUNGBusiness>();


            WF_MODULEBusiness  = Get <WF_MODULEBusiness>();
            WF_PROCESSBusiness = Get <WF_PROCESSBusiness>();

            WF_STATE_FUNCTIONBusiness = Get <WF_STATE_FUNCTIONBusiness>();
            WF_STATEBusiness          = Get <WF_STATEBusiness>();
            WF_STREAMBusiness         = Get <WF_STREAMBusiness>();

            WF_FUNCTION_DONEBusiness     = Get <WF_FUNCTION_DONEBusiness>();
            WF_LOGBusiness               = Get <WF_LOGBusiness>();
            WF_ITEM_USER_PROCESSBusiness = Get <WF_ITEM_USER_PROCESSBusiness>();

            CCTC_THANHPHANBusiness = Get <CCTC_THANHPHANBusiness>();

            string selectedDept = col["department-choose"];
            long?  ID           = col["ID"].ToLongOrNULL();

            if (0 >= ID)
            {
                return(Json(new { Type = "ERROR", Message = "Không tìm thấy văn bản cần lưu sổ và phát hành" }));
            }

            #region cập nhật thông tin văn bản đi
            HSCV_VANBANDI VanBanDi = HSCV_VANBANDIBusiness.Find(ID);
            if (VanBanDi == null)
            {
                return(Json(new { Type = "ERROR", Message = "Không tìm thấy văn bản cần lưu sổ và phát hành" }));
            }

            if (!string.IsNullOrEmpty(col["SOHIEU"]))
            {
                VanBanDi.SOHIEU = col["SOHIEU"];
            }
            VanBanDi.USER_RECEIVE_DIRECTLY = col["USERS_RECEIVE_SPECIAL"];
            VanBanDi.DONVINHAN_INTERNAL_ID = selectedDept;
            VanBanDi.SOTHEOSO    = col["SOTHEOSO"];
            VanBanDi.SOVANBAN_ID = col["SOVANBAN_ID"].ToIntOrNULL();
            if (!string.IsNullOrEmpty(col["TRICHYEU"]))
            {
                VanBanDi.TRICHYEU = col["TRICHYEU"].Trim();
            }
            if (!string.IsNullOrEmpty(col["NGAY_HIEULUC"]))
            {
                try
                {
                    VanBanDi.NGAYCOHIEULUC = col["NGAY_HIEULUC"].ToDateTime();
                }
                catch (Exception e)
                {
                }
            }
            if (!string.IsNullOrEmpty(col["NGAYHET_HIEULUC"]))
            {
                try
                {
                    VanBanDi.NGAYHETHIEULUC = col["NGAYHET_HIEULUC"].ToDateTime();
                }
                catch (Exception e)
                {
                }
            }
            if (!string.IsNullOrEmpty(col["NGAYBANHANH"]))
            {
                try
                {
                    VanBanDi.NGAYBANHANH = col["NGAYBANHANH"].ToDateTime();
                }
                catch (Exception e)
                {
                }
            }
            HSCV_VANBANDIBusiness.Save(VanBanDi);
            #endregion

            //cập nhật số đi theo văn bản vào số văn bản hiện tại
            int numbSoDiTheoSo = VanBanDi.SOTHEOSO.GetPrefixNumber();
            DM_DANHMUC_DATABusiness.UpdateSoVanBan(VanBanDi.SOVANBAN_ID.GetValueOrDefault(), numbSoDiTheoSo);

            #region Convert Văn bản
            List <int> ListDonVi       = selectedDept.ToListInt(',');
            DateTime?  NGAY_HIEULUC    = col["NGAY_HIEULUC"].ToDateTime();
            DateTime?  NGAYHET_HIEULUC = col["NGAYHET_HIEULUC"].ToDateTime();
            string     TRICHYEU        = col["TRICHYEU"];
            string     SOHIEU          = col["SOHIEU"];
            if (!string.IsNullOrEmpty(SOHIEU))
            {
                SOHIEU = SOHIEU.Trim();
            }
            if (!string.IsNullOrEmpty(TRICHYEU))
            {
                TRICHYEU = TRICHYEU.Trim();
            }

            List <TAILIEUDINHKEM> ListTaiLieu = TAILIEUDINHKEMBusiness.GetDataByItemID(ID.HasValue ? ID.Value : 0, LOAITAILIEU.VANBAN);
            DM_NGUOIDUNG          NguoiDung   = DM_NGUOIDUNGBusiness.Find(VanBanDi.NGUOIKY_ID);

            #endregion
            #region cập nhật wf function done

            var process = WF_PROCESSBusiness.GetProcess(VanBanDi.ID, MODULE_CONSTANT.VANBANTRINHKY);

            var function     = WF_STATE_FUNCTIONBusiness.GetStateFunction((int)process.CURRENT_STATE);
            var functionDone = new WF_FUNCTION_DONE();
            functionDone.ITEM_TYPE      = MODULE_CONSTANT.VANBANTRINHKY;
            functionDone.ITEM_ID        = VanBanDi.ID;
            functionDone.STATE          = process.CURRENT_STATE;
            functionDone.FUNCTION_STATE = function.ID;
            functionDone.create_at      = DateTime.Now;
            functionDone.create_by      = currentUser.ID;
            WF_FUNCTION_DONEBusiness.Save(functionDone);
            var log = new WF_LOG();
            log.ITEM_ID      = VanBanDi.ID;
            log.ITEM_TYPE    = MODULE_CONSTANT.VANBANTRINHKY;
            log.MESSAGE      = "<div class='label label-info'>Đã phát hành</div>";
            log.WF_ID        = process.WF_ID;
            log.create_at    = DateTime.Now;
            log.create_by    = currentUser.ID;
            log.NGUOIXULY_ID = currentUser.ID;
            WF_LOGBusiness.Save(log);
            //Ghi nhận luồng đã xử lý xong
            var state = WF_STATEBusiness.Find(process.CURRENT_STATE);
            if (state != null && state.IS_KETTHUC == true)
            {
                process.IS_END = true;
                WF_PROCESSBusiness.Save(process);
            }

            var itemprocess = WF_ITEM_USER_PROCESSBusiness.repository.All().Where(x =>
                                                                                  x.ITEM_ID == process.ITEM_ID && x.ITEM_TYPE == process.ITEM_TYPE &&
                                                                                  x.STEP_ID == process.CURRENT_STATE)
                              .FirstOrDefault();
            if (itemprocess != null)
            {
                itemprocess.DAXULY = true;
                WF_ITEM_USER_PROCESSBusiness.Save(itemprocess);
            }
            #endregion

            //gửi văn bản đi cho đơn vị
            SaveVanBanPhatHanhToDonVi(VanBanDi, sms);

            //gửi văn bản đi cho cá nhân
            SaveVanBanPhatHanhToCaNhan(VanBanDi, sms);

            return(Json(new { Type = "SUCCESS", Message = "Lưu sổ và phát hành văn bản thành công" }));
        }
 public ActionResult DetailVanBan(long ID)
 {
     AssignUserInfo();
     #region check quyền truy cập của người dùng đến văn bản hiện tại
     WF_ITEM_USER_PROCESSBusiness = Get <WF_ITEM_USER_PROCESSBusiness>();
     WF_PROCESSBusiness           = Get <WF_PROCESSBusiness>();
     HSCV_VANBANDIBusiness        = Get <HSCV_VANBANDIBusiness>();
     DM_NGUOIDUNGBusiness         = Get <DM_NGUOIDUNGBusiness>();
     var WF_REVIEW_USERBusiness = Get <WF_REVIEW_USERBusiness>();
     DM_DANHMUC_DATABusiness DM_DANHMUC_DATABusiness = Get <DM_DANHMUC_DATABusiness>();
     // check quyền truy cập theo workflow
     bool HasPermissionAccess = WF_ITEM_USER_PROCESSBusiness.CheckPermissionProcess(ID, MODULE_CONSTANT.VANBANTRINHKY, currentUser.ID);
     // check quyền truy cập với quyền review
     bool HasPermissionReview      = WF_REVIEW_USERBusiness.CheckPermissionReview(ID, MODULE_CONSTANT.VANBANTRINHKY, currentUser.ID);
     bool HasPermissionMainProcess = WF_PROCESSBusiness.CheckPermissionProcess(ID, MODULE_CONSTANT.VANBANTRINHKY, currentUser.ID);
     if (!HasPermissionAccess && !HasPermissionReview)
     {
         return(Redirect("/Home/UnAuthor"));
     }
     ThongTinVanBanDiVM myModel = new ThongTinVanBanDiVM();
     myModel.VanBanTrinhKy            = HSCV_VANBANDIBusiness.Find(ID);
     myModel.HasPermissionMainProcess = HasPermissionMainProcess;
     if (myModel.VanBanTrinhKy == null)
     {
         return(Redirect("/Home/UnAuthor"));
     }
     #region lấy tên danh mục - do dữ liệu văn bản rất lớn cho nên không join với bảng danh mục mà thực hiện 3,4 câu sub-query, tốc độ nhanh hơn
     // chỉ áp dụng kiểu truy vấn này với màn hình chi tiết 1 văn bản
     // ở màn hình danh sách tuyệt đối không áp dụng query ntn
     var DanhMucDoKhan = DM_DANHMUC_DATABusiness.Find(myModel.VanBanTrinhKy.DOKHAN_ID);
     if (DanhMucDoKhan != null)
     {
         myModel.STR_DOKHAN = DanhMucDoKhan.TEXT;
     }
     var DanhMucDoUuTien = DM_DANHMUC_DATABusiness.Find(myModel.VanBanTrinhKy.DOUUTIEN_ID);
     if (DanhMucDoUuTien != null)
     {
         myModel.STR_DOUUTIEN = DanhMucDoUuTien.TEXT;
     }
     var DanhMucLinhVuc = DM_DANHMUC_DATABusiness.Find(myModel.VanBanTrinhKy.LINHVUCVANBAN_ID);
     if (DanhMucLinhVuc != null)
     {
         myModel.STR_LINHVUCVANBAN = DanhMucLinhVuc.TEXT;
     }
     var DanhMucLoaiVanBan = DM_DANHMUC_DATABusiness.Find(myModel.VanBanTrinhKy.LOAIVANBAN_ID);
     if (DanhMucLoaiVanBan != null)
     {
         myModel.STR_LOAIVANBAN = DanhMucLoaiVanBan.TEXT;
     }
     var NguoiKyVanBan = DM_NGUOIDUNGBusiness.Find(myModel.VanBanTrinhKy.NGUOIKY_ID);
     if (NguoiKyVanBan != null)
     {
         myModel.STR_NGUOIKY = NguoiKyVanBan.HOTEN;
     }
     //Danh sách tài liệu đính kèm của văn bản
     TAILIEUDINHKEMBusiness = Get <TAILIEUDINHKEMBusiness>();
     myModel.ListTaiLieu    = TAILIEUDINHKEMBusiness.GetDataByItemID(ID, LOAITAILIEU.VANBAN);
     if (!string.IsNullOrEmpty(myModel.VanBanTrinhKy.DONVINHAN_INTERNAL_ID))
     {
         CCTC_THANHPHANBusiness = Get <CCTC_THANHPHANBusiness>();
         myModel.ListDonVi      = CCTC_THANHPHANBusiness.GetDataByIds(myModel.VanBanTrinhKy.DONVINHAN_INTERNAL_ID.ToListInt(','));
     }
     else
     {
         myModel.ListDonVi = new List <CCTC_THANHPHAN>();
     }
     #endregion
     #endregion
     #region danh sách comment
     var HscvVanBanDiTraoDoiBusiness = Get <HSCV_VANBANDI_TRAODOIBusiness>();
     myModel.LstNoiDungTraoDoi = HscvVanBanDiTraoDoiBusiness.GetListCommentByVanBanDiId(ID);
     myModel.LstRootComment    = myModel.LstNoiDungTraoDoi.Where(x => x.REPLY_ID == null).OrderByDescending(x => x.NGAYTAO).ToList();
     List <long> LstRootCommentIds = myModel.LstRootComment.Select(x => x.ID).ToList();
     var         LstTaiLieuComment = TAILIEUDINHKEMBusiness.GetDataForTaskByListItemId(LstRootCommentIds, LOAITAILIEU.NOIDUNGTRAODOIVANBANDI);
     myModel.LstTaiLieuComment = LstTaiLieuComment;
     #endregion
     return(View(myModel));
 }
        public ActionResult ReportTrip(FormCollection collection)
        {
            AssignUserInfo();
            qlChuyenBusiness    = Get <QL_DANGKYXE_LAIXEBusiness>();
            dmNguoiDungBusiness = Get <DM_NGUOIDUNGBusiness>();

            ReportTripViewModel reportResult = new ReportTripViewModel();

            reportResult.reportEntity = new List <ChuyenReportBO>();

            int    type                 = collection["queryType"].ToIntOrZero();
            string reportTitle          = string.Empty;
            string timeRangeReportTitle = string.Empty;

            ChuyenSearchBO searchModel = new ChuyenSearchBO();
            List <long>    userIds     = new List <long>();

            if (collection["CANBO_ID"] != null)
            {
                userIds = collection["CANBO_ID"].ToListLong(',');
                searchModel.CANBO_IDs = userIds;
            }
            searchModel.CCTC_THANHPHAN_ID = currentUser.DeptParentID.GetValueOrDefault();
            if (type == LOAI_BAOCAO_THOIGIAN_CONSTANT.NGAY)
            {
                searchModel.queryTimeStart = collection["queryTimeStart"].ToDateTime();
                searchModel.queryTimeEnd   = collection["queryTimeEnd"].ToDateTime();

                string dateStartStr = searchModel.queryTimeStart.Value.ToVietnameseDateFormat();
                string dateEndStr   = searchModel.queryTimeEnd.Value.ToVietnameseDateFormat();

                reportResult.title   = string.Format("Từ ngày {0} đến ngày {1}", dateStartStr, dateEndStr);
                reportTitle          = string.Format("BÁO CÁO CÔNG TÁC TỪ NGÀY {0} ĐẾN NGÀY {1}", dateStartStr, dateEndStr);
                timeRangeReportTitle = string.Format("từ ngày {0} đến ngày {1}", dateStartStr, dateEndStr);
            }
            else if (type == LOAI_BAOCAO_THOIGIAN_CONSTANT.THANG)
            {
                int year  = collection["queryYear"].ToIntOrZero();
                int month = collection["queryMonth"].ToIntOrZero();

                searchModel.queryTimeStart = new DateTime(year, month, 1);
                searchModel.queryTimeEnd   = new DateTime(year, month, DateTime.DaysInMonth(year, month));

                reportResult.title = string.Format("Trong tháng {0} năm {1}", month, year);

                reportTitle          = string.Format("BÁO CÁO CÔNG TÁC THÁNG {0}/{1}", month, year);
                timeRangeReportTitle = string.Format("trong tháng {0}/{1}", month, year);
            }
            else if (type == LOAI_BAOCAO_THOIGIAN_CONSTANT.NAM)
            {
                int year = collection["queryYear"].ToIntOrZero();
                searchModel.queryTimeStart = new DateTime(year, 1, 1);
                searchModel.queryTimeEnd   = new DateTime(year, 12, 31);

                reportResult.title   = string.Format("Trong năm {0}", year);
                reportTitle          = string.Format("BÁO CÁO CÔNG TÁC NĂM {0}", year);
                timeRangeReportTitle = string.Format("trong năm {0}", year);
            }

            if (userIds != null && userIds.Count > 0)
            {
                string[] arrNames = new string[userIds.Count()];
                foreach (var userId in userIds)
                {
                    DM_NGUOIDUNG user = dmNguoiDungBusiness.Find(userId);
                    arrNames[userIds.IndexOf(userId)] = user.HOTEN;
                }
                timeRangeReportTitle = string.Format("{0} của cán bộ {1}", timeRangeReportTitle, string.Join(",", arrNames));
            }

            List <ChuyenReportBO> tripReportResult = qlChuyenBusiness.GetTripReportResult(searchModel);

            reportResult.title        = reportTitle;
            reportResult.timeLine     = timeRangeReportTitle.ToUpper();
            reportResult.reportEntity = tripReportResult;

            SessionManager.SetValue("ReportTripSession", reportResult);
            return(PartialView("_ReportTripResult", reportResult));
        }