コード例 #1
0
        public JsonResult SaveKyDuyetVanBan(long id)
        {
            AssignUserInfo();
            HSCV_VANBANDIBusiness = Get <HSCV_VANBANDIBusiness>();
            HSCV_VANBANDI VanBan = HSCV_VANBANDIBusiness.Find(id);

            if (VanBan == null)
            {
                return(Json(new { Type = "ERROR", Message = "Không tìm thấy văn bản trình ký cần ký duyệt" }));
            }
            //Nếu như văn bản cần ký duyệt
            if (true == VanBan.HAS_SIGNED)
            {
                try
                {
                    UploadFileTool tool                   = new UploadFileTool();
                    FileUltilities file                   = new FileUltilities();
                    List <string>  ListExtension          = tool.GetWordExtension();
                    List <string>  ListPdfExtension       = tool.GetPdfExtension();
                    var            TAILIEUDINHKEMBusiness = Get <TAILIEUDINHKEMBusiness>();
                    var            ListTaiLieu            = TAILIEUDINHKEMBusiness.GetDataByItemID(id, LOAITAILIEU.VANBAN);
                    var            ListPdf                = ListTaiLieu.Where(x => !string.IsNullOrEmpty(x.DINHDANG_FILE) && ListPdfExtension.Contains(x.DINHDANG_FILE.ToLower())).ToList();
                    var            ListWord               = ListTaiLieu.Where(x => !string.IsNullOrEmpty(x.DINHDANG_FILE) && ListExtension.Contains(x.DINHDANG_FILE.ToLower())).ToList();
                    var            personalSign           = "";
                    if (currentUser.signpath != null && currentUser.signpath != "")
                    {
                        personalSign = Server.MapPath("~/" + currentUser.signpath);
                    }

                    if (ListWord.Count > 0)
                    {
                        FileUltilities.CreateListWatermark("APPROVED", ListWord, "", personalSign);
                    }

                    if (ListPdf.Count > 0)
                    {
                        FileUltilities.CreateWaterMarkPdf(ListPdf, "APPROVED");
                    }
                }
                catch (Exception ex)
                {
                }
            }
            #region cập nhật wf function done
            var WF_PROCESSBusiness        = Get <WF_PROCESSBusiness>();
            var process                   = WF_PROCESSBusiness.GetProcess(VanBan.ID, MODULE_CONSTANT.VANBANTRINHKY);
            var WF_STATE_FUNCTIONBusiness = Get <WF_STATE_FUNCTIONBusiness>();
            var function                  = WF_STATE_FUNCTIONBusiness.GetStateFunction((int)process.CURRENT_STATE);
            var WF_FUNCTION_DONEBusiness  = Get <WF_FUNCTION_DONEBusiness>();
            var WF_LOGBusiness            = Get <WF_LOGBusiness>();
            var functionDone              = new WF_FUNCTION_DONE();
            functionDone.ITEM_TYPE      = MODULE_CONSTANT.VANBANTRINHKY;
            functionDone.ITEM_ID        = VanBan.ID;
            functionDone.STATE          = process.CURRENT_STATE;
            functionDone.FUNCTION_STATE = function.ID;
            functionDone.create_at      = DateTime.Now;
            AssignUserInfo();
            functionDone.create_by = currentUser.ID;
            WF_FUNCTION_DONEBusiness.Save(functionDone);
            var log = new WF_LOG();
            log.ITEM_ID      = VanBan.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 WF_STATEBusiness = Get <WF_STATEBusiness>();
            var state            = WF_STATEBusiness.Find(process.CURRENT_STATE);
            if (state != null && state.IS_KETTHUC == true)
            {
                process.IS_END = true;
                WF_PROCESSBusiness.Save(process);
            }
            #endregion
            return(Json(new { Type = "SUCCESS", Message = "Ký duyệt văn bản thành công" }));
        }
コード例 #2
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" }));
        }
コード例 #3
0
        public JsonResult SaveFlow(long processID, int stepID, long mainUser, List <long> joinUser, string message, bool IsBack = false, long LogID = 0)
        {
            var result = new JsonResultBO(true);

            AssignUserInfo();
            var WF_STEPBusiness    = Get <WF_STEPBusiness>();
            var WF_PROCESSBusiness = Get <WF_PROCESSBusiness>();
            var WF_LOGBusiness     = Get <WF_LOGBusiness>();
            var step = WF_STEPBusiness.GetDaTaByID(stepID);
            //SMSDAL.SendSMSDAL sms = new SMSDAL.SendSMSDAL();
            //var LogSMSBusiness = Get<LogSMSBusiness>();
            var lstMainUser = new List <long>();

            lstMainUser.Add(mainUser);
            var    process  = WF_PROCESSBusiness.Find(processID);
            string NOIDUNG  = currentUser.HOTEN + (process.ITEM_TYPE == MODULE_CONSTANT.VANBANTRINHKY ? " đã gửi bạn một văn bản trình ký" : " đã gửi bạn một văn bản đến");
            string URL      = process.ITEM_TYPE == MODULE_CONSTANT.VANBANTRINHKY ? "/HSVanBanDiArea/HSVanBanDi/DetailVanBan/" + process.ITEM_ID.ToString() : "/HSCV_VANBANDENArea/HSCV_VANBANDEN/DetailVanBanDen?id=" + process.ITEM_ID.ToString() + "&type=" + VANBANDEN_CONSTANT.CHUA_XULY;
            string itemName = process.ITEM_TYPE == MODULE_CONSTANT.VANBANTRINHKY ? "VĂN BẢN TRÌNH KÝ" : "VĂN BẢN ĐẾN";

            if (IsBack != true)
            {
                //Kiểm tra xem đã thực hiện function chưa?
                var  WF_STATE_FUNCTIONBusiness = Get <WF_STATE_FUNCTIONBusiness>();
                bool CanNext = false;
                if (process.ITEM_TYPE == MODULE_CONSTANT.VANBANTRINHKY)
                {
                    HSCV_VANBANDIBusiness = Get <HSCV_VANBANDIBusiness>();
                    HSCV_VANBANDI VanBan = HSCV_VANBANDIBusiness.Find(process.ITEM_ID);
                    if (VanBan != null)
                    {
                        CanNext = VanBan.HAS_SIGNED.HasValue ? VanBan.HAS_SIGNED.Value : true;
                    }
                }
                var function = WF_STATE_FUNCTIONBusiness.CheckFunctionNextState(process.CURRENT_STATE.GetValueOrDefault(), process.ITEM_ID.GetValueOrDefault(), process.ITEM_TYPE);
                if (!function && CanNext)
                {
                    result.MessageFail("Bạn chưa thực hiện hành động của trạng thái");
                    return(Json(result));
                }
                //Luồng chuyển đi
                result = WF_PROCESSBusiness.SaveStepAction(processID, stepID, mainUser, joinUser, message, currentUser.ID);
                #region gửi notification
                var SYS_TINNHANBusiness = Get <SYS_TINNHANBusiness>();

                #region gửi email cho người xử lý chính
                List <string> lstEmail             = new List <string>();
                var           DM_NGUOIDUNGBusiness = Get <DM_NGUOIDUNGBusiness>();
                lstEmail = DM_NGUOIDUNGBusiness.repository.All().Where(x => lstMainUser.Contains(x.ID)).Select(x => x.EMAIL).ToList();
                if (lstEmail != null)
                {
                    var ContentEmail = currentUser.HOTEN + " đã gửi bạn một <a href='" + SERVERADDRESS + URL + "'>" + itemName + "</a>";
                    EmailProvider.SendMailTemplate(currentUser, ContentEmail, NOIDUNG, lstEmail);
                }
                #endregion
                #region gửi sms cho người xử lý
                //var LstUserNhan = DM_NGUOIDUNGBusiness.repository.All().Where(x => lstMainUser.Contains(x.ID)).ToList();
                //if (LstUserNhan != null)
                //{
                //    var ContentSMS = currentUser.HOTEN + " đã gửi bạn một " + itemName;
                //    ContentSMS = sms.locDau(ContentSMS);
                //    var DoDaiSMS = ContentSMS.Length;
                //    string[] noiDung = new string[1];
                //    noiDung[0] = ContentSMS;
                //    foreach (var user in LstUserNhan)
                //    {
                //        if (!string.IsNullOrEmpty(user.DIENTHOAI))
                //        {
                //            string resultsend = sms.guiTinNhan(user.DIENTHOAI, "177403", noiDung);
                //            LOGSMS SmsObject = new LOGSMS();
                //            SmsObject.SODIENTHOAINHAN = user.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.ITEMTYPE = process.ITEM_TYPE;
                //            SmsObject.ITEMID = process.ITEM_ID;
                //            SmsObject.HOTENNGUOINHAN = user.HOTEN;
                //            LogSMSBusiness.Save(SmsObject);
                //        }
                //    }
                //}
                #endregion
                SYS_TINNHANBusiness.sendMessageMultipleUsers(lstMainUser, currentUser, itemName, NOIDUNG, URL, targetScreen, false, processID, TargetDocType.COORDINATED);
                if (joinUser != null)
                {
                    SYS_TINNHANBusiness.sendMessageMultipleUsers(joinUser, currentUser, itemName, NOIDUNG, URL, targetScreen, false, processID, TargetDocType.COORDINATED);
                }
                var lstTmpUserId = lstMainUser;
                if (joinUser != null)
                {
                    lstTmpUserId.AddRange(joinUser);
                }

                if (process.ITEM_TYPE == MODULE_CONSTANT.VANBANTRINHKY)
                {
                    ElasticSearch.updateListUser(process.ITEM_ID.ToString(), lstTmpUserId, ElasticType.VanBanDi);
                }
                else
                {
                    ElasticSearch.updateListUser(process.ITEM_ID.ToString(), lstTmpUserId, ElasticType.VanBanDen);
                }

                #endregion
            }
            else
            {
                result = WF_PROCESSBusiness.StepDenie(processID, stepID, message, LogID);
                var log = WF_LOGBusiness.GetDataByID(LogID);
                lstMainUser.Add(log.NGUOIXULY_ID.GetValueOrDefault());
                #region gửi notification
                var SYS_TINNHANBusiness = Get <SYS_TINNHANBusiness>();
                SYS_TINNHANBusiness.sendMessageMultipleUsers(lstMainUser, currentUser, itemName, NOIDUNG, URL, targetScreen, false, processID, TargetDocType.COORDINATED);
                #endregion
            }
            return(Json(result));
        }
コード例 #4
0
 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));
 }