Ejemplo n.º 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" }));
        }
        public ActionResult SaveVanBanDen(HSCV_VANBANDEN entity, FormCollection fc, IEnumerable <HttpPostedFileBase> filebase, string[] filename, string[] FOLDER_ID)
        {
            try
            {
                AssignUserInfo();

                UploadFileTool uploadFileTool = new UploadFileTool();
                hscvVanBanDenBusiness = Get <HSCV_VANBANDENBusiness>();
                wfProcessBusiness     = Get <WF_PROCESSBusiness>();
                dmDanhMucDataBusiness = Get <DM_DANHMUC_DATABusiness>();

                entity.SOHIEU            = fc["SOHIEU"].Trim();
                entity.TRICHYEU          = fc["TRICHYEU"].Trim();
                entity.SOTRANG           = fc["SOTRANG"].ToIntOrZero();
                entity.LOAIVANBAN_ID     = fc["LOAIVANBAN_ID"].ToIntOrZero();
                entity.DONVI_ID          = fc["DONVI_ID"].ToIntOrZero();
                entity.LINHVUCVANBAN_ID  = fc["LINHVUCVANBAN_ID"].ToIntOrZero();
                entity.DOKHAN_ID         = fc["DOKHAN_ID"].ToIntOrZero();
                entity.NGAY_HIEULUC      = fc["NGAY_HIEULUC"].ToDateTime();
                entity.NGAYHET_HIEULUC   = fc["NGAYHET_HIEULUC"].ToDateTime();
                entity.NGAY_VANBAN       = fc["NGAY_VANBAN"].ToDateTime();
                entity.NGAY_BANHANH      = fc["NGAY_BANHANH"].ToDateTime();
                entity.NGUOIKY           = !string.IsNullOrEmpty(fc["NGUOIKY"]) ? fc["NGUOIKY"].Trim() : string.Empty;
                entity.CHUCVU            = !string.IsNullOrEmpty(fc["CHUCVU"]) ? fc["CHUCVU"].Trim() : string.Empty;
                entity.NOIDUNG           = !string.IsNullOrEmpty(fc["NOIDUNGVANBAN"]) ? fc["NOIDUNGVANBAN"].Trim() : string.Empty;
                entity.DOMAT_ID          = fc["DOMAT_ID"].ToIntOrZero();
                entity.SOVANBANDEN_ID    = fc["SOVANBANDEN_ID"].ToIntOrZero();
                entity.SODITHEOSO        = fc["SODITHEOSO"].Trim();
                entity.NGAYCONGTAC       = fc["NGAYCONGTAC"].ToDateTime();
                entity.GIO_CONGTAC       = fc["GIO_CONGTAC"].ToIntOrNULL();
                entity.PHUT_CONGTAC      = fc["PHUT_CONGTAC"].ToIntOrNULL();
                entity.SODITHEOSO_NUMBER = int.Parse(entity.SODITHEOSO);
                entity.MA_DANGKY         = fc["MA_DANGKY"];
                entity.LOAI_COQUAN_ID    = fc["LOAI_COQUAN_ID"].ToIntOrNULL();
                entity.SO_BAN            = fc["SO_BAN"].ToIntOrNULL();
                entity.THONGTIN_LOAI_ID  = fc["THONGTIN_LOAI_ID"].ToIntOrNULL();
                entity.TACGIA            = fc["TACGIA"];
                entity.CONGVAN_DEN_ID    = fc["CONGVAN_DEN_ID"].ToIntOrNULL();
                entity.THOIHAN_GIAIQUYET = fc["THOIHAN_GIAIQUYET"].ToDateTime();
                List <long> ListUser = new List <long>();
                ListUser.Add(currentUser.ID);
                if (entity.ID == 0)
                {
                    entity.NGAYTAO  = DateTime.Now;
                    entity.NGUOITAO = currentUser.ID;
                    entity.NGAYSUA  = DateTime.Now;
                    entity.NGUOISUA = currentUser.ID;
                    hscvVanBanDenBusiness.Save(entity);
                    #region insert elastic search
                    ElasticModel model = ElasticModel.ConvertVanBanDen(entity, ListUser);
                    ElasticSearch.insertDocument(model, model.Id.ToString(), ElasticType.VanBanDen);
                    #endregion
                    JsonResultBO processResult = wfProcessBusiness.AddFlow(entity.ID, MODULE_CONSTANT.VANBANDEN, currentUser);
                    if (processResult.Status)
                    {
                        uploadFileTool.UploadFiles(filebase, extensionOfVanBanDen.Split(',').ToList(), uploadFolder, filename, entity.ID, LOAITAILIEU.VANBANDEN, maxSizeOfVanBanDen, currentUser);
                    }
                    //cập nhật số đi theo sổ
                    dmDanhMucDataBusiness.UpdateSoVanBan(entity.SOVANBANDEN_ID.GetValueOrDefault(), entity.SODITHEOSO.ToIntOrZero());
                }
                else
                {
                    HSCV_VANBANDEN dbEntity = hscvVanBanDenBusiness.Find(entity.ID);

                    dbEntity.SOHIEU           = entity.SOHIEU;
                    dbEntity.TRICHYEU         = entity.TRICHYEU;
                    dbEntity.SOTRANG          = entity.SOTRANG;
                    dbEntity.DONVI_ID         = entity.DONVI_ID;
                    dbEntity.LOAIVANBAN_ID    = entity.LOAIVANBAN_ID;
                    dbEntity.LINHVUCVANBAN_ID = entity.LINHVUCVANBAN_ID;
                    dbEntity.DOKHAN_ID        = entity.DOKHAN_ID;
                    dbEntity.NGAY_HIEULUC     = entity.NGAY_HIEULUC;
                    dbEntity.NGAYHET_HIEULUC  = entity.NGAYHET_HIEULUC;
                    dbEntity.NGAY_VANBAN      = entity.NGAY_VANBAN;
                    dbEntity.NGAY_BANHANH     = entity.NGAY_BANHANH;
                    dbEntity.NGUOIKY          = entity.NGUOIKY;
                    dbEntity.CHUCVU           = entity.CHUCVU;
                    dbEntity.NOIDUNG          = entity.NOIDUNG;
                    dbEntity.DOMAT_ID         = entity.DOMAT_ID;

                    dbEntity.NGAYCONGTAC       = entity.NGAYCONGTAC;
                    dbEntity.SOVANBANDEN_ID    = entity.SOVANBANDEN_ID;
                    dbEntity.SODITHEOSO        = entity.SODITHEOSO;
                    dbEntity.SODITHEOSO_NUMBER = entity.SODITHEOSO_NUMBER;

                    dbEntity.GIO_CONGTAC  = entity.GIO_CONGTAC;
                    dbEntity.PHUT_CONGTAC = entity.PHUT_CONGTAC;

                    dbEntity.MA_DANGKY              = entity.MA_DANGKY;
                    dbEntity.LOAI_COQUAN_ID         = entity.LOAI_COQUAN_ID;
                    dbEntity.SO_BAN                 = entity.SO_BAN;
                    dbEntity.THONGTIN_LOAI_ID       = entity.THONGTIN_LOAI_ID;
                    dbEntity.TACGIA                 = entity.TACGIA;
                    dbEntity.CONGVAN_DEN_ID         = entity.CONGVAN_DEN_ID;
                    dbEntity.THOIHAN_GIAIQUYET      = entity.THOIHAN_GIAIQUYET;
                    dbEntity.NGUOINHAN_TRUCTIEP_IDS = entity.NGUOINHAN_TRUCTIEP_IDS;
                    dbEntity.NGAYSUA                = DateTime.Now;
                    dbEntity.NGUOISUA               = currentUser.ID;
                    hscvVanBanDenBusiness.Save(dbEntity);

                    uploadFileTool.UploadFiles(filebase, extensionOfVanBanDen.Split(',').ToList(), uploadFolder, filename, dbEntity.ID, LOAITAILIEU.VANBANDEN, maxSizeOfVanBanDen, currentUser);

                    #region update elastic
                    ElasticModel model = ElasticModel.ConvertVanBanDen(dbEntity, ListUser);
                    ElasticSearch.updateDocument(model, model.Id.ToString(), ElasticType.VanBanDen);
                    #endregion
                }
                return(RedirectToAction("DetailVanBanDen", new { id = entity.ID }));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("Index"));
            }
        }