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" })); }
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 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)); }
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)); }