Пример #1
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" }));
        }
Пример #2
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" }));
        }
Пример #3
0
        public JsonResultBO AddFlow(long ItemId, string itemType, UserInfoBO userId, int customState = 0)
        {
            var result = new JsonResultBO(true);
            //Lấy thông tin module của loại đối tượng
            var module = this.context.WF_MODULE.Where(x => x.MODULE_CODE.Equals(itemType)).FirstOrDefault();

            if (module == null || module.WF_STREAM_ID == null)
            {
                result.MessageFail("Không tìm thấy luồng xử lý");
                return(result);
            }
            //Lấy thông tin luồng xử lý
            var DeptObj = this.context.CCTC_THANHPHAN.Find(userId.DM_PHONGBAN_ID);

            if (DeptObj == null)
            {
                result.MessageFail("Không tìm thấy luồng xử lý do chưa set đúng phòng ban");
                return(result);
            }

            var LstWFIds = module.WF_STREAM_ID.ToListInt(',');

            var flow = this.context.WF_STREAM.Where(x => x.LEVEL_ID == DeptObj.CATEGORY && LstWFIds.Contains(x.ID)).FirstOrDefault();

            if (flow == null)
            {
                result.MessageFail("Không tìm thấy luồng xử lý");
                return(result);
            }
            //Lấy danh sách bước
            var lstStep = this.context.WF_STATE.Where(x => x.WF_ID == flow.ID).OrderBy(x => x.ID).ToList();

            if (lstStep == null && !lstStep.Any())
            {
                result.MessageFail("Luồng xử lý chưa được cấu hình");
                return(result);
            }
            var stateID = GetState(flow.ID, userId);

            /*
             * @author: duynn
             * @description: "trạng thái" tùy chỉnh cho phép sử dụng trạng thái vượt cấp
             * */
            if (customState > 0)
            {
                stateID = customState;
            }

            var stateCurrent = this.context.WF_STATE.Find(stateID);

            var process = new WF_PROCESS();

            process.ITEM_ID            = ItemId;
            process.ITEM_TYPE          = itemType;
            process.USER_ID            = userId.ID;
            process.WF_ID              = flow.ID;
            process.CURRENT_STATE      = stateCurrent.ID;
            process.CURRENT_STATE_NAME = stateCurrent.STATE_NAME;
            if (customState > 0)
            {
                process.IS_END = stateCurrent.IS_KETTHUC.GetValueOrDefault();
            }
            this.Save(process);

            var userProcess = new WF_ITEM_USER_PROCESS();

            userProcess.ITEM_ID      = ItemId;
            userProcess.ITEM_TYPE    = itemType;
            userProcess.IS_XULYCHINH = true;
            userProcess.USER_ID      = userId.ID;
            userProcess.create_at    = DateTime.Now;
            userProcess.create_by    = userId.ID;
            if (customState > 0)
            {
                userProcess.DAXULY = true;
            }
            this.context.WF_ITEM_USER_PROCESS.Add(userProcess);
            var log = new WF_LOG();

            log.ITEM_ID      = process.ITEM_ID;
            log.ITEM_TYPE    = process.ITEM_TYPE;
            log.NGUOIXULY_ID = userId.ID;
            log.WF_ID        = process.WF_ID;
            if (customState > 0)
            {
                log.MESSAGE = "<div class='label label-info'>" + stateCurrent.STATE_NAME + "</div>";
            }
            else
            {
                log.MESSAGE = "<div class='label label-info'>Khởi tạo</div>";
            }
            log.STEP_ID   = null;
            log.create_at = DateTime.Now;
            log.create_by = userId.ID;
            this.context.WF_LOG.Add(log);

            if (customState > 0)
            {
                var function = this.context.WF_STATE_FUNCTION
                               .Where(x => x.WF_STATE_ID == customState)
                               .FirstOrDefault();
                if (function != null)
                {
                    var functionDone = new WF_FUNCTION_DONE();
                    functionDone.ITEM_TYPE      = itemType;
                    functionDone.ITEM_ID        = ItemId;
                    functionDone.STATE          = customState;
                    functionDone.FUNCTION_STATE = function.ID;
                    functionDone.create_at      = DateTime.Now;
                    functionDone.create_by      = userId.ID;
                    this.context.WF_FUNCTION_DONE.Add(functionDone);
                }
            }

            this.context.SaveChanges();
            return(result);
        }