void Start() { BtnSprites = new List <UISprite> (); BtnSprites.Add(Btn_VideoCruise); BtnSprites.Add(Btn_PersonalManage); BtnSprites.Add(Btn_SystemManage); BtnSprites.Add(Btn_AccountManage); DicBtnShade = new Dictionary <UISprite, GameObject>(); DicBtnShade.Add(Btn_VideoCruise, GetBtnShadeSprite(Btn_VideoCruise)); DicBtnShade.Add(Btn_PersonalManage, GetBtnShadeSprite(Btn_PersonalManage)); DicBtnShade.Add(Btn_SystemManage, GetBtnShadeSprite(Btn_SystemManage)); DicBtnShade.Add(Btn_AccountManage, GetBtnShadeSprite(Btn_AccountManage)); Panels = new List <GameObject> (); Panels.Add(Panel_VideoCruise); Panels.Add(Panel_PersonalManage); Panels.Add(Panel_SystemManage); Panels.Add(Panel_AccountManage); if (AuthorityHelper.NotAuthority(AuthorityHelper.DEVICE_MANAGEMENT) && AuthorityHelper.NotAuthority(AuthorityHelper.PATROL_PLAN_MANAGEMENT) && AuthorityHelper.NotAuthority(AuthorityHelper.EVACUATE_AREA_MANAGEMENT) && AuthorityHelper.NotAuthority(AuthorityHelper.EVACUATE_PLAN_MANAGEMENT)) { Btn_SystemManage.enabled = false; } if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_INFO_BROWSE) && AuthorityHelper.NotAuthority(AuthorityHelper.USER_GROUP_INFO_BROWSE) && AuthorityHelper.NotAuthority(AuthorityHelper.HISTORY_MANAGEMENT)) { Btn_AccountManage.enabled = false; } }
public void Initialize() { ClearSelect(); GroupSelect(false, false); AccountSelect(false, false); LogSelect(false, false); if (AuthorityHelper.HasAuthority(AuthorityHelper.HISTORY_MANAGEMENT)) { Click(logBtn); logBtn.GetComponent <BoxCollider>().enabled = true; logBtn.GetComponent <UIButton>().enabled = true; } if (AuthorityHelper.HasAuthority(AuthorityHelper.USER_INFO_BROWSE)) { Click(accountBtn); accountBtn.GetComponent <BoxCollider>().enabled = true; accountBtn.GetComponent <UIButton>().enabled = true; } if (AuthorityHelper.HasAuthority(AuthorityHelper.USER_GROUP_INFO_BROWSE)) { Click(groupBtn); groupBtn.GetComponent <BoxCollider>().enabled = true; groupBtn.GetComponent <UIButton>().enabled = true; } }
/// <summary> /// 判断用户是否有相应的操作权限,如果没有则将相应的按钮禁用掉 /// </summary> void OnEnable() { if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_INFO_BROWSE) && AuthorityHelper.NotAuthority(AuthorityHelper.USER_INFO_MANAGEMENT)) { BtnUserManage.SetActive(false); } if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_GROUP_INFO_BROWSE) && AuthorityHelper.NotAuthority(AuthorityHelper.USER_GROUP_MANAGEMENT)) { BtnGroupManage.SetActive(false); } if (AuthorityHelper.NotAuthority(AuthorityHelper.EVACUATE_PLAN_MANAGEMENT)) { BtnCruiseManage.SetActive(false); } if (AuthorityHelper.NotAuthority(AuthorityHelper.DEVICE_MANAGEMENT)) { BtnDeviceMange.SetActive(false); } if (AuthorityHelper.NotAuthority(AuthorityHelper.HISTORY_MANAGEMENT)) { BtnLogManage.SetActive(false); } }
void Start() { //如果用户没有管理用的权限则把相应的输入框禁用掉 if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_INFO_MANAGEMENT)) { ForbiddenModify(); } }
void Start() { if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_INFO_MANAGEMENT)) { newBtn.SetActive(false); } Instance = this; LoadUserRecord(1000, 1); }
public ActionResult test() { //var userInfo = this.CurrentUser; var path = Server.MapPath("~/authority.xml"); var authorityHelper = new AuthorityHelper(); var menulist = authorityHelper.ReadAuthorityAll(); var userId = "0505"; var currentUrl = Request.Url.AbsolutePath; var list = authorityHelper.AuthorityFilterByUser(menulist, userId, currentUrl); return(View()); }
/// <summary> /// 导航 权限加载 /// </summary> /// <returns></returns> public ActionResult Menu() { var userId = this.CurrentUser.Userid; var controller = Request.RequestContext.RouteData.Values["controller"].ToString(); var action = Request.RequestContext.RouteData.Values["action"].ToString(); var url = string.Format("/{0}/{1}", controller, action); var authorityHelper = new AuthorityHelper(); var menulist = authorityHelper.ReadAuthorityAll(); var list = authorityHelper.AuthorityFilterByUser(menulist, userId, url); return(View(list)); }
void Start() { if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_GROUP_MANAGEMENT)) { BtnNewGroup.SetActive(false); } Instance = this; groupUI = gameObject.GetComponent <GroupManageUIPanelControl>(); if (groupUI == null) { Debug.LogError("当前对象缺失 GroupManageUIPanelControl 脚本;对象名:" + gameObject.name); } LoadGroupRecord(); }
//dipake payroll private static Boolean CekAuthority(ISession session, int fid, UserMap umap, String trxCode, String valuedate, double trxAmount, String currtrx, out String error) { bool result = true; error = ""; AuthorityHelper ah = null; try { ClientMatrix cm = session.Load <ClientMatrix>(umap.ClientEntity); UserMatrix um = session.Load <UserMatrix>(umap.UserEntity); if (!currtrx.Trim().Equals("IDR")) { Currency curr = session.CreateCriteria(typeof(Currency)) .Add(Expression.Like("Code", "%" + currtrx.Trim() + "%")) .UniqueResult <Currency>(); trxAmount = double.Parse((trxAmount * (double)curr.BookingRate).ToString()); } //Limit Korporasi ah = new AuthorityHelper(cm.Matrix); if (!ah.OnUserLimit(fid.ToString(), trxAmount)) { error += "Melewati limit per transaksi corporate*"; } //Limit User ah = new AuthorityHelper(um.Matrix); if (!ah.OnUserLimit(fid.ToString(), trxAmount)) { error += "Melewati limit per transaksi user*"; } //Total Limit Harian String resultLimit = TotalOBHelper.onTotalHarianLimit(session, umap.ClientEntity, trxCode, valuedate, currtrx.Trim(), trxAmount); if (!resultLimit.Contains("[VALID]")) { error += resultLimit + "*"; } } catch (Exception he) { error = he.Message + "||" + he.StackTrace + "||" + he.InnerException; result = false; } return(result); }
protected bool HasActionPower(bool isShowMsg, string msg = "您没有权限访问该页面!", int width = 260, int height = 100) { string userId = this.CurrentUser.Userid; string controller = Request.RequestContext.RouteData.Values["controller"].ToString(); string action = Request.RequestContext.RouteData.Values["action"].ToString(); var autHelper = new AuthorityHelper(); var isPower = autHelper.HasActionPower(userId, controller, action); if (!isPower) { this.ShowMessage(msg, "系统提示", width: width, height: height); } return(isPower); }
/// <summary> /// 将给定的数据进行相关设置 /// </summary> /// <param name="AuthInfo">Auth info.</param> public void SetValue(GroupInfo groupInfo) { Logger.Instance.WriteLog("初始化用户组信息"); bool notGroupManageAuth = AuthorityHelper.NotAuthority(AuthorityHelper.USER_GROUP_MANAGEMENT); this.groupInfo = groupInfo; //LBLGroupName.text = groupInfo.Name; //检索当前组的权限信息 Logger.Instance.WriteLog("检索当前组的权限信息"); GroupAuthorityDao gaDao = new GroupAuthorityDao(); gaDao.Select001(groupInfo.Id); GroupAuthorityInfos = gaDao.Result; //检索所有权限信息 Logger.Instance.WriteLog("检索所有权限信息"); AuthorityDao authDao = new AuthorityDao(); authDao.Select001(); AuthorityInfos = authDao.Result; //生成权限的信息 foreach (AuthorityInfo aInfo in AuthorityInfos) { Logger.Instance.WriteLog("生成用户组权限的信息"); bool b = false; ////选中当前组已有的权限 foreach (GroupAuthorityInfo gaInfo in GroupAuthorityInfos) { if (aInfo.Id == gaInfo.AuthorityId) { b = true; break; } } groupUI.AddAuthority(aInfo, b); ////如果当前组已经禁用或者没有管理权限,则禁用权限选中功能 //if (notGroupManageAuth) //{ // go.GetComponent<AuthorityItem>().Disable(); //} } }
/// <summary> /// 验证是否有权限访问该页面 /// </summary> protected void HasActionPower(string msg = "您没有权限访问该页面!") { string userId = this.CurrentUser.Userid; string controller = Request.RequestContext.RouteData.Values["controller"].ToString(); string action = Request.RequestContext.RouteData.Values["action"].ToString(); var autHelper = new AuthorityHelper(); var isPower = autHelper.HasActionPower(userId, controller, action); if (!isPower) { var msgT = Server.UrlEncode(msg); var msgD = Server.UrlEncode(string.Empty); UrlHelper url = new UrlHelper(this.Request.RequestContext); this.Response.Redirect(url.Action("Index", "Error", new { msgTitle = msgT, msgDetail = msgD })); } }
protected override bool AuthorizeCore(HttpContextBase httpContext) { string controller = httpContext.Request.RequestContext.RouteData.Values["controller"].ToString(); string action = httpContext.Request.RequestContext.RouteData.Values["action"].ToString(); if (CookieHelper.GetCookie("systemUserAccount", "") == "hrAdmin") { return(true); } if (AuthorityHelper.GetPageAuthority((int)AuthorityType.查看, string.Format("/{0}/{1}", controller, action))) { return(true); } return(false); }
/// <summary> /// 清除用户登录Cookie信息 /// </summary> private void ClearLoginCookie() { FormsAuthentication.SignOut(); #region 清除tcid HttpCookie aCookie = new HttpCookie("tcid"); aCookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(aCookie); #endregion var adminId = AuthorityHelper.GetId(); if (adminId.HasValue) { CacheAccess.ClearPermissionCache(adminId.Value); } }
// public void Enable(bool isEnable) // { // if(isEnable) // { // foreach(UISprite sprite in BtnSprites) // { // sprite.GetComponent<BoxCollider>().enabled = true; // } // // } // else // { // foreach(UISprite sprite in BtnSprites) // { // sprite.GetComponent<BoxCollider>().enabled = false; // } // } // } // public void UpdateInfo() { SwitchToVideoCruisePanel(); Btn_SystemManage.enabled = true; Btn_AccountManage.enabled = true; if (AuthorityHelper.NotAuthority(AuthorityHelper.DEVICE_MANAGEMENT) && AuthorityHelper.NotAuthority(AuthorityHelper.PATROL_PLAN_MANAGEMENT) && AuthorityHelper.NotAuthority(AuthorityHelper.EVACUATE_AREA_MANAGEMENT) && AuthorityHelper.NotAuthority(AuthorityHelper.EVACUATE_PLAN_MANAGEMENT)) { Btn_SystemManage.enabled = false; } if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_INFO_BROWSE) && AuthorityHelper.NotAuthority(AuthorityHelper.USER_GROUP_INFO_BROWSE)) { Btn_AccountManage.enabled = false; } }
public void UpdateAuthority() { foreach (UIButton button in DicWindows.Keys) { button.enabled = true; button.GetComponent <BoxCollider>().enabled = true; } if (AuthorityHelper.NotAuthority(AuthorityHelper.DEVICE_MANAGEMENT)) { DeviceManageButton.enabled = false; } if (AuthorityHelper.NotAuthority(AuthorityHelper.PATROL_PLAN_MANAGEMENT)) { CruiseManageButton.enabled = false; } if (AuthorityHelper.NotAuthority(AuthorityHelper.EVACUATE_AREA_MANAGEMENT)) { EvacuateAreaManageButton.enabled = false; } if (AuthorityHelper.NotAuthority(AuthorityHelper.EVACUATE_PLAN_MANAGEMENT)) { EvacuatePlanManageButton.enabled = false; } }
public void ShowUserInfo(UserInfoRecord record) { if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_INFO_BROWSE)) { Debug.Log("无操作权限"); return; } Logger.Instance.WriteLog("显示用户相关信息"); UIRecord = record; if (UIRecord.GInfo.Name == "超级管理员" || UIRecord.UBInfo.UserName == DataStore.UserInfo.UserName) { ForbiddenModify(false); } else { if (AuthorityHelper.NotAuthority(AuthorityHelper.USER_INFO_MANAGEMENT)) { ForbiddenModify(false); } else { ForbiddenModify(true); } } GroupDao gpDao = new GroupDao(); gpDao.Select003(); List <GroupInfo> gpInfos = gpDao.Result; foreach (UILabel lb in groups) { lb.text = string.Empty; lb.transform.parent.GetComponent <userGroupItem>().selectToggle.value = false; } for (int i = 0; i < gpInfos.Count; i++) { if (i < groups.Length) { groups[i].text = gpInfos[i].Name; groups[i].transform.parent.GetComponent <userGroupItem>().info = gpInfos[i]; groups[i].transform.parent.GetComponent <userGroupItem>().backGround.SetActive(false); groups[i].transform.parent.GetComponent <userGroupItem>().selectGround.SetActive(false); if (record.GInfo.Name == gpInfos[i].Name) { groups[i].transform.parent.GetComponent <userGroupItem>().selectToggle.value = true; } else { groups[i].transform.parent.GetComponent <userGroupItem>().selectToggle.value = false; } } else { Logger.Instance.WriteLog("组长度超出目前UI限定数量"); break; } } accountName.value = UIRecord.UBInfo.UserName; createTime.text = System.DateTime.Parse(UIRecord.UBInfo.CreateTime).ToString("yyyy年MM月dd日"); accountPsw.value = "**********"; userName.value = UIRecord.UBInfo.RealName; userAdd.value = UIRecord.UBInfo.Address; remark.value = UIRecord.UBInfo.Memo; userMobile.value = UIRecord.UBInfo.Telphone; }
private void Commitjob_transaction(ILog log) { IList <TrxPayrollDetail> txList = session.CreateSQLQuery("select * from trxpayrolldetails where status = ? and instructioncode in ('" + TotalOBHelper.RTGS + "','" + TotalOBHelper.LLG + "') and lastupdate < now()") .AddEntity(typeof(TrxPayrollDetail)) .SetInt32(0, ParameterHelper.TRXSTATUS_PAYROLLNEW_POST_MBASEANDWS_RTGSANDLLG) .List <TrxPayrollDetail>(); if (txList.Count > 0) { foreach (TrxPayrollDetail o in txList) { try { #region PARAMETERS int outid = 0; string outmsg = ""; Double _amt = 0; TrxPayroll p = o.Parent; ClientAccount clientAcc = new ClientAccount(); Booking b = session.Load <Booking>(o.IdBooking); ClientMatrix cm = session.Load <ClientMatrix>(p.ClientID); Client client = session.Load <Client>(p.ClientID); AuthorityHelper ah = new AuthorityHelper(cm.Matrix); if (o.InstructionCode.Equals(TotalOBHelper.RTGS)) { _amt = Double.Parse(ah.GetTransactionFee(session, 100, 2).ToString()); } else if (o.InstructionCode.Equals(TotalOBHelper.LLG)) { _amt = Double.Parse(ah.GetTransactionFee(session, 100, 3).ToString()); } int fid = 100; string fitur = TotalOBHelper.Payroll; string debitAcc = ""; string debitAccName = ""; string creditAcc = o.Account; string creditAccName = o.Name; string benAddress = o.BenAddress; string remark = o.TrxRemark.Trim(); string bucketAmt = b.Bucket; string chargeType = "OUR"; if (b.FeeBen > 0) { chargeType = "BEN"; } string debitAccAddress = client.Address1; try { IList <ClientAccount> clAccs = session.CreateCriteria(typeof(ClientAccount)) .Add(Expression.Eq("Number", p.DebitAccount)) .Add(Expression.Eq("Pid", p.ClientID)) .Add(Expression.Eq("StatusDel", 0)) .SetMaxResults(1) .List <ClientAccount>(); clientAcc = clAccs[0]; debitAcc = p.DebitAccount; debitAccName = clientAcc.Name; } catch { } #endregion #region PROCESS INSERT /*Modified by Mettaw : 1 Oct 2019 * * Terjadi perubahan Flow MBASE pada Payroll LLG (Kliring) namun tidak pada Payroll RTGS * Code Sedikit dirombak , bila RTGS pakai flow Lama, yaitu Insert ke tbl MBASEandWS * dan dimakan sama Sch MBASEAndWS * * Sedangkan LLG di insert ke tbl baru ExpressProcess. * dan dimakan sama ExpressProcessSch * */ if (o.InstructionCode.Equals(TotalOBHelper.RTGS)) { #region Insert to MBASEandWS log.Info(SchCode + " === (TrxID " + o.Id + ") === Begin Posting to MBASEANDWS"); if (MBASEAndWSHelper.insertMbaseandws(session, int.Parse(o.Id.ToString()), fid, fitur, p.ClientID, o.InstructionCode, debitAcc, debitAccName, creditAcc, creditAccName, benAddress, remark, bucketAmt, o.IdBooking, o.RemittanceNumber, o.BankCode.Trim(), b.JournalSeq.Trim(), chargeType, _amt, debitAccAddress, out outid, out outmsg)) { o.Status = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG; o.IdMBASEAndWS = outid; o.Description = "proses mbaseandws".ToUpper(); log.Info(SchCode + " === (TrxID " + o.Id + ") === Posting to MBASEANDWS SUCCESS"); } else { if (outid > 0) { o.Status = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG; o.IdMBASEAndWS = outid; o.Description = "proses mbaseandws".ToUpper(); log.Info(SchCode + " === (TrxID " + o.Id + ") === Already Exist, Posting to MBASEANDWS SUCCESS"); } else { //gagal insert Mbaseandws o.LastUpdate = DateTime.Now.AddMinutes(2); log.Error(SchCode + " === (TrxID " + o.Id + ") === Posting to MBASEANDWS FAILED: " + outmsg); } } session.Update(o); session.Flush(); log.Info(SchCode + " === (TrxID " + o.Id + ") === End Posting to MBASEANDWS"); #endregion } else if (o.InstructionCode.Equals(TotalOBHelper.LLG)) { #region Insert to ExpressProcess log.Info(SchCode + " === (TrxID " + o.Id + ") === Begin Posting to ExpressProcess"); #region PARAMETERS FOR ExpressProcess ExpressProcess exprocess = new ExpressProcess(); String _fitur = "PAYROLL LLG"; BankKliring bank = session.CreateCriteria(typeof(BankKliring)) .Add(Expression.Eq("BankCode", o.Account)) .UniqueResult <BankKliring>(); double _instamount = o.Amount; string _instcur = SchHelper._Currency(o.RemittanceNumber); string _benbankname = bank.Nama; #endregion #region ADD ExpressProcess /*New added by Mettaw : * tampung data disini... untuk parameter WS Express * dan insert ke tbl expressprocess * 9 september 2019*/ /*DATA MANDATORY*/ exprocess.Tanggal_Transaksi = DateTime.Now; exprocess.Sarana_Transaksi = "2"; exprocess.Kode_Transaksi = "50"; exprocess.Peserta_Pengirim_Asal = "BRINIDJA"; exprocess.Sandi_Kota_Asal = "0391"; exprocess.Peserta_Pengirim_Penerus = "BRINIDJA"; exprocess.Peserta_Penerima_Akhir = bank.BankCode; exprocess.Sandi_Kota_Tujuan = bank.SandiKota; exprocess.Peserta_Penerima_Penerus = bank.BankCode; exprocess.Jenis_Nasabah = "1"; exprocess.No_Rekening_Pengirim = debitAcc; exprocess.Nama_Pengirim = debitAccName; exprocess.No_Identitas_Pengirim = "NIKPENGRMCMS"; exprocess.Jenis_Nasabah_Pengirim = "1"; exprocess.Status_Kependudukan_Pengirim = "1"; exprocess.Alamat_Pengirim = client.Address1; exprocess.No_Rekening_Tujuan = creditAcc; exprocess.Nama_Penerima = creditAccName; exprocess.Jenis_Nasabah_Penerima = "1"; exprocess.Status_Kependudukan_Penerima = "1"; exprocess.Alamat_Penerima = benAddress; exprocess.Cara_Penyetoran = "DEBET_REK"; exprocess.No_Rekening_Asal = debitAcc; exprocess.Nama = debitAccName; exprocess.Jumlah_Dikirim = _instamount.ToString("0.00"); exprocess.Currency_Dikirim = _instcur; exprocess.Biaya = _amt.ToString("0.00"); exprocess.Total = (double.Parse(_instamount.ToString()) + _amt).ToString("0.00"); exprocess.Currency_Total = _instcur; exprocess.Kanca_Asal = "CMS"; exprocess.User_Approve = "0374891"; exprocess.Cabang = "0374"; exprocess.No_Remitance = o.RemittanceNumber; exprocess.Jurnal_Seq = o.IdBooking.ToString(); exprocess.Nama_Bank_Penerima = _benbankname; exprocess.Provinsi_Penerima = bank.SandiPropinsi; exprocess.Jenis_Badan_Usaha = bank.JenisUsaha.Trim(); exprocess.Kode_Bank_Brinets_Penerima = bank.Code; exprocess.Channel = "CMS"; exprocess.Booking_Id = o.IdBooking.ToString(); /*DATA TIDAK MANDATORY*/ exprocess.Telepon_Pengirim = "TELPPNGRMCMS"; exprocess.No_Identitas_Penerima = "NIKPENRMMCMS"; exprocess.Telepon_Penerima = "TELPPNRMCMS"; exprocess.NoCekBG = ""; exprocess.Berita = o.TrxRemark; exprocess.Sumber_Dana = ""; exprocess.Keperluan = ""; exprocess.Pekerjaan = ""; exprocess.Jabatan = ""; exprocess.Ttl = ""; exprocess.User_Id = ""; exprocess.Cif = ""; exprocess.Kode_Pos_Pengirim = ""; exprocess.Kode_Pos_Penerima = ""; exprocess.Remark = remark; #endregion #region PROCESS log.Info(SchCode + " === (TrxID " + o.Id + ") === DO INSERT TO ExpressProcess"); if (MBASEHelper.InsertMBASEExpress(session, o.Id, _fitur, exprocess, out outmsg, out outid)) { #region COMPLETE /*Express Process*/ exprocess.Status = ParameterHelper.SCH_MBASE_WAITING; /*1: Waiting*/ exprocess.Description = ParameterHelper.MBASEDESC_WAITINGMBASE; exprocess.LastUpdate = DateTime.Now; session.Update(exprocess); /*Trx Payroll*/ o.Status = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG; o.Description = "proses express".ToUpper(); log.Info(SchCode + " === (TrxID " + o.Id + ") === Posting to ExpressProcess SUCCESS"); #endregion } else { if (outid > 0) { #region COMPLETE /*bila gagal validasi insert, tapi id sudah terbuat, update aja coy */ /*Express Process*/ ExpressProcess ex = session.Load <ExpressProcess>(outid); ex.Status = ParameterHelper.SCH_MBASE_WAITING; /*1: Waiting MBASE*/ ex.Description = ParameterHelper.MBASEDESC_WAITINGMBASE; ex.LastUpdate = DateTime.Now; session.Update(ex); /*Trx Payroll*/ o.Status = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG; o.Description = "proses express".ToUpper(); log.Info(SchCode + " === (TrxID " + o.Id + ") === Already Exist, Posting to ExpressProcess SUCCESS"); #endregion } else { #region REVERSAL PROCESS /*Gagal Insert to ExpressProcess, do Reversal.*/ /*Booking*/ Booking book = session.Load <Booking>(o.IdBooking); book.StatusEC = ParameterHelper.SCH_ECWAITING; /*Trx Payroll*/ o.Status = ParameterHelper.TRXSTATUS_REJECT; o.Description = "REJECTED"; o.LastUpdate = DateTime.Now; session.Update(book); session.Flush(); log.Info(SchCode + " === (TrxID " + o.Id + " ) Insert to ExpressProcess FAILED: " + outmsg + ". DO Reject & REVERSAL"); #endregion } } session.Update(o); session.Flush(); log.Info(SchCode + " === (TrxID " + o.Id + ") === End Posting to ExpressProcess"); #endregion #endregion } else { log.Error(SchCode + " === " + SchName + " IntructionCode tidak terdefenisi "); } #endregion } catch (Exception ex) { log.Error(SchCode + " === (TrxID " + o.Id + ") === Exception: " + ex.Message + " >>> " + ex.InnerException + " >>> " + ex.StackTrace); } } } else { Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " - " + SchCode + " === Tidak ada Trx yang diproses"); } }
void IJob.Execute(JobExecutionContext context) { cfg = new Configuration(); cfg.AddAssembly("BRIChannelSchedulerNew"); ILog log = LogManager.GetLogger(typeof(UploadFileResponse)); Console.WriteLine(schInfo + SchCode + "STARTING SCHEDULLER COPY FILE RESPONSE PAYROLL TO SHARED FOLDER =="); try { if (factory == null) { cfg = new Configuration(); cfg.AddAssembly("BRIChannelSchedulerNew"); factory = cfg.BuildSessionFactory(); } ISession session = factory.OpenSession(); Parameter paramReport = session.Load <Parameter>("FOLDER_PAYROLL_OUTPUT"); String pathReport = paramReport.Data; Parameter paramClientId = session.Load <Parameter>("CLIENT_SHARED_FOLDER_PAYROLL"); String[] CId = paramClientId.Data.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries); IList <ClientMatrix> cm = session.CreateCriteria(typeof(ClientMatrix)) .Add(Expression.In("Id", CId)) .List <ClientMatrix>(); foreach (ClientMatrix cm1 in cm) { #region ger URL and kawan2 log.Info(schInfo + SchCode + "ClientID : " + cm1.Id + " - Start Checking URL"); AuthorityHelper ah = new AuthorityHelper(cm1.Matrix); url = ah.GetTransactionURL(100); //log.Info(url); uid = ah.GetTransactionUID(100); pass = ah.GetTransactionPASS(100); pid = ah.GetTransactionMAKER(100); //log.Info(maker); Email = ah.GetTransactionEmail(100); //get input url if (url.Contains("|")) { string[] url_temp = url.Split('|'); url = url_temp[1]; } IList <User> us = session.CreateCriteria(typeof(User)) .Add(Expression.Eq("Id", Convert.ToInt32(pid))) .List <User>(); foreach (User u in us) { maker = u.Handle; } log.Info(schInfo + SchCode + "ClientID : " + cm1.Id + " URL found : " + url + " for user : "******"ClientID", cm1.Id)) .Add(Expression.Eq("SharedFolderStatus", "YES|")) .Add(Expression.Like("FileDescription", maker, MatchMode.Anywhere)) .Add(Expression.Eq("Status", ParameterHelper.TRXSTATUS_REJECT)) .List <TrxPayroll>(); if (ohno.Count > 0) { #region Inquiry NACK log.Info(schInfo + SchCode + "Client Id = " + cm1.Id + ". Total File Error = " + ohno.Count.ToString()); foreach (TrxPayroll ppp in ohno) { compareTime = DateTime.Compare(ppp.LastUpdate.AddMinutes(5), DateTime.Now); if (compareTime < 0) //lASTUPDATE + 5 < NOW { FileInfo fi = new FileInfo(ppp.FilePath); string filename_error = fi.Name; localFile = pathReport + filename_error.Substring(0, filename_error.Length - 4) + ".nack"; TextWriter tw1 = new StreamWriter(pathReport + filename_error.Substring(0, filename_error.Length - 4) + ".nack"); //generate NACK int counter = 0; IList <TrxPayrollDetail> listPayDetail = ppp.TrxPayrollDetail; foreach (TrxPayrollDetail detail in listPayDetail) { string a = ""; string text_status = ""; //handling Exception (,) - Denny if (detail.Status == ParameterHelper.TRXSTATUS_SUCCESS) { if (text_status.Contains(",")) { text_status = "SUCCESS - " + detail.Description.Replace(",", " "); } else { text_status = "SUCCESS - " + detail.Description; } } else { if (text_status.Contains(",")) { text_status = "REJECTED - " + detail.Description.Replace(",", " "); } else { text_status = "REJECTED - " + detail.Description; } } if (counter == 0) { a = "NO,NAMA,ACCOUNT,AMOUNT,EMAIL,CUSTOMERREFF,STATUS"; tw1.WriteLine(a); } int no_urut = counter + 1; a = no_urut.ToString() + "," + detail.Name + "," + detail.Account + "," + detail.Amount + "," + detail.Email + "," + detail.CustomerReff + "," + text_status; tw1.WriteLine(a); counter++; } string[] batch_desc = ppp.Description.Split('|');//get batch desc tw1.WriteLine(batch_desc[0]); tw1.Close(); log.Info(schInfo + SchCode + "Client Id = " + cm1.Id + " File name : " + ppp.FileName + "Generate NACK Success"); Ext = ".nack"; string outUpload = ""; if (UploadToSharedFolder("3", filename_error.Substring(0, filename_error.Length - 4) + ".nack", pathReport, log, session, cm1, ppp.Id, SchCode, schInfo, url, uid, pass, localFile, ppp.SeqNumber, out outUpload)) { ppp.SharedFolderStatus += "1:NOT|";//a.k.a NACK } else { ppp.SharedFolderStatus += "Exception on NACK||"; ppp.ErrorDescription = "Exception on NACK||" + outUpload; } //update database session.Update(ppp); session.Flush(); } else { log.Info(schInfo + SchCode + "ClientID : " + cm1.Id + " Waiting DateTime to Retry NACK File (5 minutes)"); } } #endregion } else { #region Inquiry Exception NACK IList <TrxPayroll> ohnoex = session.CreateCriteria(typeof(TrxPayroll)) .Add(Expression.Eq("ClientID", cm1.Id)) .Add(Expression.Eq("SharedFolderStatus", "YES|Exception on NACK||")) .Add(Expression.Like("FileDescription", maker, MatchMode.Anywhere)) .Add(Expression.Eq("Status", ParameterHelper.TRXSTATUS_REJECT)) .List <TrxPayroll>(); if (ohnoex.Count > 0) { //Update status to retry sent response NACK foreach (TrxPayroll ohnoex2 in ohnoex) { ohnoex2.SharedFolderStatus = "YES|"; session.Update(ohnoex2); log.Info(schInfo + SchCode + "ClientID = " + cm1.Id + " Update Exception NACK to Retry again, SUCCESS "); } } #endregion end of Inquiry Exception NACK else { Console.WriteLine(schInfo + SchCode + "ClientID = " + cm1.Id + " Tidak ada data untuk NACK file "); } } //ACK FILE IList <TrxPayroll> ohyes = session.CreateCriteria(typeof(TrxPayroll)) .Add(Expression.Eq("ClientID", cm1.Id)) .Add(Expression.Eq("SharedFolderStatus", "YES|")) .Add(Expression.Like("FileDescription", maker, MatchMode.Anywhere)) .Add(Expression.Eq("Status", ParameterHelper.TRXSTATUS_COMPLETE)) .List <TrxPayroll>(); if (ohyes.Count > 0) { #region Inquiry ACk log.Info(schInfo + SchCode + "Client Id = " + cm1.Id + ". Total File Sukses = " + ohyes.Count.ToString()); foreach (TrxPayroll ppp in ohyes) { compareTime = DateTime.Compare(ppp.LastUpdate.AddMinutes(5), DateTime.Now); if (compareTime < 0) //lASTUPDATE + 5 < NOW { FileInfo fi = new FileInfo(ppp.FilePath); string filename_error = fi.Name; TextWriter tw1 = new StreamWriter(pathReport + filename_error.Substring(0, filename_error.Length - 4) + ".ack"); localFile = pathReport + filename_error.Substring(0, filename_error.Length - 4) + ".ack"; int counter = 0; IList <TrxPayrollDetail> listPayDetail = ppp.TrxPayrollDetail; totalRecord = listPayDetail.Count(); foreach (TrxPayrollDetail detail in listPayDetail) { string a = ""; string text_status = ""; //handling Exception (,) - Denny if (detail.Status == ParameterHelper.TRXSTATUS_SUCCESS) { if (text_status.Contains(",")) { text_status = "SUCCESS - " + detail.Description.Replace(",", " "); recordAck++; } else { text_status = "SUCCESS - " + detail.Description; recordAck++; } } else { if (text_status.Contains(",")) { text_status = "REJECTED - " + detail.Description.Replace(",", " "); recordNAPR++; } else { text_status = "REJECTED - " + detail.Description; recordNAPR++; } } if (counter == 0) { a = "NO,NAMA,ACCOUNT,AMOUNT,EMAIL,CUSTOMERREFF,STATUS"; tw1.WriteLine(a); } int no_urut = counter + 1; a = no_urut.ToString() + "," + detail.Name + "," + detail.Account + "," + detail.Amount + "," + detail.Email + "," + detail.CustomerReff + "," + text_status; tw1.WriteLine(a); counter++; } tw1.Close(); log.Info(schInfo + SchCode + "ClientID = " + cm1.Id + " File name : " + ppp.FileName + "Generate ACK Success"); Ext = ".ack"; string outUpload = ""; if (UploadToSharedFolder("", filename_error.Substring(0, filename_error.Length - 4) + ".ack", pathReport, log, session, cm1, ppp.Id, SchCode, schInfo, url, uid, pass, localFile, ppp.SeqNumber, out outUpload)) { ppp.SharedFolderStatus += "1:ACK|";//a.k.a NACK } else { ppp.SharedFolderStatus += "Exception on ACK||"; ppp.ErrorDescription = "Exception on ACK||" + outUpload; } //update database session.Update(ppp); session.Flush(); } else { log.Info(schInfo + SchCode + "ClientID : " + cm1.Id + " Waiting DateTime to Retry ACK File (5 minutes)"); } } } #endregion Inquiry ACK else { #region Inquiry Exception ACK IList <TrxPayroll> ohyesex = session.CreateCriteria(typeof(TrxPayroll)) .Add(Expression.Eq("ClientID", cm1.Id)) .Add(Expression.Eq("SharedFolderStatus", "YES|Exception on ACK||")) .Add(Expression.Like("FileDescription", maker, MatchMode.Anywhere)) .Add(Expression.Eq("Status", ParameterHelper.TRXSTATUS_COMPLETE)) .List <TrxPayroll>(); if (ohyesex.Count > 0) { //Update status to retry sent response ACK foreach (TrxPayroll ohyesex2 in ohyesex) { ohyesex2.SharedFolderStatus = "YES|"; session.Update(ohyesex2); log.Info(schInfo + SchCode + "ClientID = " + cm1.Id + " Update Exception ACk to Retry again, SUCCESS "); } } #endregion end of Inquiry Exception ACK else { Console.WriteLine(schInfo + SchCode + "ClientID = " + cm1.Id + " Tidak ada data untuk ACK file "); } } } /* Absensi SCHManager - Denny 20190207 * Absen dengan Message : RUNNING * SCHCODE harus sama dg SCHCODE di DB, sbg key * * Ketika absen UPDATE data dengan cek lastRun VS Jeda: * - Update schlast run = Date now * - Last update = Date Now * - Set message * * Ketika autorestart, * - melakukan rstart di semua job dalam 1 server * - Cek semua job support autorestart / tdk, jika tdk keluarkan message. */ #region Absensi job 1 try { Boolean absenSch = false; String outMsgAbsen = "Belum dilakukan absen"; absenSch = SchManagerHelper.AbsensiSch(session, SchCode, "RUNNING", out outMsgAbsen); Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " - " + SchCode + " === Absensi " + " :: " + outMsgAbsen); } catch (Exception ex) { //Cetak log kalo gagal Absen log.Error(SchCode + " === Gagal Absen Exception : " + ex.Message); log.Error(SchCode + " === Gagal Absen Inner Exception : " + ex.InnerException); log.Error(SchCode + " === Gagal Absen Stack Trace : " + ex.StackTrace); } #endregion Absensi job 1 } catch (Exception ex) { log.Error(ex.Message + " = " + ex.InnerException + " = " + ex.StackTrace); factory.Close(); factory.Dispose(); factory = null; cfg = null; GC.Collect(); } Console.WriteLine(schInfo + SchCode + "END OF SCHEDULLER FILE RESPONSE PAYROLL SHARED FOLDER =="); }
public static Boolean workflowCheckerPayroll(ISession session, Transaction trx, ILog log) { //get trxpayrolls object XmlDocument doc = new XmlDocument(); XmlSerializer ser = new XmlSerializer(typeof(TrxPayroll)); doc.LoadXml(trx.TObject); XmlNodeReader reader = new XmlNodeReader(doc.DocumentElement); object obj = ser.Deserialize(reader); TrxPayroll ObjPayroll = (TrxPayroll)obj; TrxPayroll payroll = session.Load <TrxPayroll>(ObjPayroll.Id); bool result = true; string HeaderErrorMsg = "||" + DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss") + " "; //invalid authority setting status string StatusInvalidAuth = ""; try { int user_id = 0; string clientID = trx.ClientId.ToString(); //sayedzul add - 20161108 #region cek rek debet notpool or not string debAcc = payroll.DebitAccount.Trim().PadLeft(15, '0'); NotionalPoolingMember npm = session.CreateCriteria(typeof(NotionalPoolingMember)) .Add(Expression.Eq("AccountNumber", debAcc)) .Add(Expression.Eq("Status", "A")) .UniqueResult <NotionalPoolingMember>(); if (npm != null) { String[] desc = payroll.Description.Split(new String[] { "||" }, StringSplitOptions.None); payroll.Status = ParameterHelper.TRXSTATUS_REJECT; payroll.StatusEmail = ParameterHelper.PAYROLL_NEEDEMAIL; payroll.Description = ParameterHelper.TRXDESCRIPTION_REJECT + " - Notional pooling account not permitted for payroll transaction||" + desc[1]; payroll.ErrorDescription += HeaderErrorMsg + "Notional pooling account not permitted for payroll transaction"; session.Update(payroll); //reject child string outRejectChild = ""; if (rejectAllChild(session, payroll, out outRejectChild, log)) { log.Info("Success Update All Child."); payroll.ErrorDescription += HeaderErrorMsg + " Success reject child"; //delete transactions session.Delete(trx); } else { payroll.Status = ParameterHelper.PAYROLL_EXCEPTION; payroll.ErrorDescription = HeaderErrorMsg + outRejectChild; } session.Update(payroll); session.Flush(); return(true); } #endregion //end sayedzul #region get usermaps/user_id UserMap umap = null; try { if (!string.IsNullOrEmpty(trx.Approver)) { String[] tempmaker = trx.Approver.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String makinfo in tempmaker) { String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries); umap = session.CreateCriteria(typeof(UserMap)) .Add(Expression.Like("UserHandle", detmake[0].Trim())) .Add(Expression.Like("ClientEntity", int.Parse(clientID))) .UniqueResult <UserMap>(); user_id = umap.UserEntity; } } else if (!string.IsNullOrEmpty(trx.Checker)) { String[] tempmaker = trx.Checker.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String makinfo in tempmaker) { String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries); umap = session.CreateCriteria(typeof(UserMap)) .Add(Expression.Like("UserHandle", detmake[0].Trim())) .Add(Expression.Like("ClientEntity", int.Parse(clientID))) .UniqueResult <UserMap>(); user_id = umap.UserEntity; } } else//maker { String[] tempmaker = trx.Maker.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String makinfo in tempmaker) { String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries); umap = session.CreateCriteria(typeof(UserMap)) .Add(Expression.Like("UserHandle", detmake[0].Trim())) .Add(Expression.Like("ClientEntity", int.Parse(clientID))) .UniqueResult <UserMap>(); user_id = umap.UserEntity; } } } catch (Exception ex) { payroll.ErrorDescription = "Exception on Scheduller Payroll Get Auth :: " + ex.Message + " => " + ex.StackTrace + " => " + ex.InnerException; payroll.Status = ParameterHelper.PAYROLL_EXCEPTION; session.Update(payroll); session.Flush(); log.Error("Exception on Scheduller Payroll Get Auth :: " + ex.Message + " => " + ex.StackTrace + " => " + ex.InnerException); //EvtLogger.Write("Exception on Scheduller Payroll Get Auth :: " + ex.Message + " => " + ex.StackTrace, System.Diagnostics.EventLogEntryType.Error); result = false; } log.Info("User Id : " + user_id); #endregion //get total TRX //|susccess|fail|total| ==> |1:200|:|2:300| //string[] total = payroll.TotalTrx.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); //string[] pecahan = total[2].Split(':'); //string counttrx = pecahan[0]; //string totalamount = pecahan[1]; //trx.TotalTrx = "|" + feeIFT + "|" + reject + "|" + totalTrx + "|" + feeRTG + "|" + feeLLG + "|"; if (payroll.TotalTrx.Equals("|0:0|0:0|0:0|0:0|0:0|")) { //countift : sumift| countrejectAll : sumrejectAll | countAll : sumAll | countRTG : sumRTG | countLLG : sumLLG| //ga dipake pun, ga usah lah int _countSuccess = payroll.TrxPayrollDetail.Where(x => x.Status != ParameterHelper.TRXSTATUS_REJECT).Count(); double _sumSuccess = payroll.TrxPayrollDetail.Where(x => x.Status != ParameterHelper.TRXSTATUS_REJECT).Sum(x => x.Amount / 100); int _countInvalid = payroll.TrxPayrollDetail.Where(x => x.Status == ParameterHelper.TRXSTATUS_REJECT).Count(); double _sumInvalid = payroll.TrxPayrollDetail.Where(x => x.Status == ParameterHelper.TRXSTATUS_REJECT).Sum(x => x.Amount / 100); int _countTotal = payroll.TrxPayrollDetail.Count(); double _sumTotal = payroll.TrxPayrollDetail.Sum(x => x.Amount / 100); payroll.TotalTrx = "|" + _countSuccess.ToString() + ":" + _sumSuccess.ToString() + "|" + _countInvalid.ToString() + ":" + _sumInvalid.ToString() + "|" + _countTotal.ToString() + ":" + _sumTotal.ToString() + "|"; //log.Info("Trx Id = " + payroll.Id + ", Total Trx : " + payroll.TotalTrx); //session.Update(trx); //session.Flush(); //Denny coba //string TotalTrxNew = "|0:0|0:0|0:0|0:0|0:0|"; //TotalTrxNew = "|" + _countSuccess.ToString() + ":" + _sumSuccess.ToString() + "|" + _countInvalid.ToString() + ":" + _sumInvalid.ToString() + "|" + _countTotal.ToString() + ":" + _sumTotal.ToString() + "|"; #region Native update Parent payroll //string temp_query2 = ""; //string msg2 = ""; //int count2 = 0; //string dbResult2 = ""; //temp_query2 = @"update trxpayrolls set totaltrx = '" + TotalTrxNew + "' where id = '" + payroll.Id + "';"; //if (!PayrollHelper.ExecuteQueryValue(session, temp_query2, out dbResult2, out msg2)) //{ // log.Error("(TrxID " + payroll.Id + ") Failed Query: " + temp_query2 + " " + msg2); //} #endregion native update } string counttrx = payroll.TrxPayrollDetail.Where(x => x.Status != ParameterHelper.TRXSTATUS_REJECT).Count().ToString(); double totalamount = payroll.TrxPayrollDetail.Where(x => x.Status != ParameterHelper.TRXSTATUS_REJECT).Sum(x => x.Amount / 100); //get debit acc string[] debAccArr = payroll.Description.Split(new String[] { "||" }, StringSplitOptions.RemoveEmptyEntries); string debitAccId = debAccArr[1]; ClientAccount ClientAcc = session.Load <ClientAccount>(int.Parse(debitAccId)); string debitAcc = ClientAcc.Number; string valueDate = payroll.ProcessTime.ToString("yyMMdd"); if (valueDate.Equals("010101")) { valueDate = "991231"; } #region cek limit-limit if (trx.CheckWork == 0 && trx.ApproveWork == 0) { string outMsgAuthorityError = ""; if (CekAuthority(session, 100, umap, "PAYROLL", valueDate, totalamount, "IDR", out outMsgAuthorityError)) { if (!outMsgAuthorityError.Equals("")) { StatusInvalidAuth = "[LIMIT]" + outMsgAuthorityError; } } else { StatusInvalidAuth = "[EXCEPTION]" + outMsgAuthorityError; } } #endregion #region cek Authority Setting //Pengecekkan bypass transaksi di Settingan LIsence - Denny bool isWithAuthority = true; IList <ClientMatrix> cm = session.CreateCriteria(typeof(ClientMatrix)) .Add(Expression.Eq("Id", trx.ClientId)) .List <ClientMatrix>(); foreach (ClientMatrix cm1 in cm) { AuthorityHelper ah = null; ah = new AuthorityHelper(cm1.Matrix); isWithAuthority = ah.isDirectTransaction(100); //Kondisi menggunakan Direct Transactions if (trx.CheckTotal == 0 && trx.ApproveTotal == 0 && isWithAuthority) { StatusInvalidAuth = ""; } if (trx.CheckWork == 0 && trx.ApproveWork == 0 && isWithAuthority == false) { log.Error("debit Account : " + debitAcc); log.Error("total Account : " + totalamount); log.Error("umap Client Entity : " + umap.ClientEntity); //string nextProcessor = UserGroupHelper.getNextAppTemp(session, 100, umap, trx.Approver, "Payroll", debitAcc, "IDR", double.Parse(totalamount)); string nextProcessorChecker = "GAK PAKE CHECKER"; string nextProcessorApprover = "GAK PAKE APPROVER"; if (trx.CheckTotal != 0) { nextProcessorChecker = UserGroupHelper.getNextCheTemp(session, 100, umap, "", "Payroll", debitAcc, "IDR", totalamount); } if (trx.ApproveTotal != 0) { nextProcessorApprover = UserGroupHelper.getNextAppTemp(session, 100, umap, "", "Payroll", debitAcc, "IDR", totalamount); } log.Error("Checker : " + nextProcessorChecker); log.Error("Approver : " + nextProcessorApprover); nextProcessorChecker = nextProcessorChecker.Replace("|", ""); nextProcessorApprover = nextProcessorApprover.Replace("|", ""); if (string.IsNullOrEmpty(nextProcessorChecker)) { StatusInvalidAuth += "CHECKER"; } if (string.IsNullOrEmpty(nextProcessorApprover)) { StatusInvalidAuth += " and APPROVER"; } } } #endregion if (StatusInvalidAuth.Equals(""))//authority valid { //transaction complete if (trx.CheckWork >= trx.CheckTotal) { if (trx.ApproveWork >= trx.ApproveTotal)//FINAL, transactions ready to process { //update trxpayroll String[] des = payroll.Description.Split(new String[] { "||" }, StringSplitOptions.None); if (payroll.ProcessTime.ToString("yyyy-MM-dd").Equals("0001-01-01")) { payroll.ProcessTime = DateTime.Now; } //20170423 sayedzul add handler payroll processtime if (payroll.IsPayrollBankLain == 1) { payroll.ProcessTime = PayrollHelper.GetRealProcessTime(session, payroll.ProcessTime); } payroll.Maker = trx.Maker; payroll.Checker = trx.Checker; payroll.Approver = trx.Approver; payroll.Status = ParameterHelper.TRXSTATUS_RUNNING_AFTERCHECKACCOUNT;//19 payroll.Description = "PROCESSED" + "||" + des[1]; session.Update(payroll); session.Flush(); //delete transactions session.Delete(trx); session.Flush(); log.Info("Finish. Data deleteled from table transactions"); } else { //Masih Butuh Approval log.Info("Total Amount" + totalamount); string nextProcessor = UserGroupHelper.getNextAppTemp(session, 100, umap, trx.Approver, "Payroll", debitAcc, "IDR", totalamount); trx.NextProcessor = nextProcessor; trx.Status = short.Parse(ParameterHelper.TRXSTATUS_APPROVE.ToString()); session.Update(trx); log.Info("Masih Butuh Approver"); session.Flush(); #region Send Notification if (!nextProcessor.Trim().Replace("|", "").Equals("")) { String[] uid_np = nextProcessor.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String idnp in uid_np) { UserMatrix umx = session.Load <UserMatrix>(int.Parse(idnp)); AuthorityHelper ahe = new AuthorityHelper(umx.Matrix); if (ahe.isNeedPendingEmail(100)) { User uid = session.Load <User>(int.Parse(idnp)); //state=0->inProcess verify; state=1->inProc Approve; state=2->Succed; state=3->reject EmailNotificationHelper.MassNotification(session, uid.Email, trx.ClientId, trx.Id, "Payroll", 1, payroll.FileDescription, counttrx, totalamount.ToString(), payroll.CreatedTime, trx.Maker, payroll.ProcessTime, "Need Approve"); } } } #endregion } } else { //Masih Butuh Checker Console.Write("===User Handle : " + umap.UserHandle); string nextProcessor = UserGroupHelper.getNextCheTemp(session, 100, umap, trx.Checker, "Payroll", debitAcc, "IDR", totalamount); trx.NextProcessor = nextProcessor; trx.Status = short.Parse(ParameterHelper.TRXSTATUS_VERIFY.ToString()); session.Update(trx); session.Flush(); log.Info("Next Processor : " + nextProcessor); log.Info("Masih Butuh Checker"); #region Send Notification if (!nextProcessor.Trim().Replace("|", "").Equals("")) { String[] uid_np = nextProcessor.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String idnp in uid_np) { UserMatrix umx = session.Load <UserMatrix>(int.Parse(idnp)); AuthorityHelper ahe = new AuthorityHelper(umx.Matrix); if (ahe.isNeedPendingEmail(100)) { User uid = session.Load <User>(int.Parse(idnp)); //state=0->inProcess verify; state=1->inProc Approve; state=2->Succed; state=3->reject EmailNotificationHelper.MassNotification(session, uid.Email, trx.ClientId, trx.Id, "Payroll", 0, payroll.FileDescription, counttrx, totalamount.ToString(), payroll.CreatedTime, trx.Maker, payroll.ProcessTime, "Need Verify"); } } } #endregion } } else//invalid authority setting { string invalidMsg = ""; if (StatusInvalidAuth.Equals(" and APPROVER")) { invalidMsg = "APPROVER"; } else { invalidMsg = StatusInvalidAuth; } String[] desc = payroll.Description.Split(new String[] { "||" }, StringSplitOptions.None); payroll.Status = ParameterHelper.TRXSTATUS_REJECT; payroll.StatusEmail = ParameterHelper.PAYROLL_NEEDEMAIL; if (invalidMsg.Contains("[LIMIT]")) { payroll.Description = ParameterHelper.TRXDESCRIPTION_REJECT + " - " + invalidMsg.Replace("[LIMIT]", "") + "||" + desc[1]; payroll.ErrorDescription += HeaderErrorMsg + "Invalid Authority Settting on " + invalidMsg; } else if (invalidMsg.Contains("[EXCEPTION]")) { payroll.Status = ParameterHelper.PAYROLL_EXCEPTION; payroll.ErrorDescription = HeaderErrorMsg + invalidMsg.Replace("[EXCEPTION]", ""); } else { payroll.Description = ParameterHelper.TRXDESCRIPTION_REJECT + " - Invalid Authority Setting on " + invalidMsg + "||" + desc[1]; payroll.ErrorDescription += HeaderErrorMsg + "Invalid Authority Settting on " + invalidMsg; } session.Update(payroll); //reject child string outRejectChild = ""; if (rejectAllChild(session, payroll, out outRejectChild, log)) { log.Info("Success Update All Child."); payroll.ErrorDescription += HeaderErrorMsg + " Success reject child"; //delete transactions session.Delete(trx); } else { payroll.Status = ParameterHelper.PAYROLL_EXCEPTION; payroll.ErrorDescription = HeaderErrorMsg + outRejectChild; } } session.Update(payroll); session.Flush(); result = true; } catch (Exception ex) { log.Error("Exception on Scheduller Workflow Check Payroll :: " + ex.Message + " => " + ex.StackTrace + " => " + ex.InnerException); //EvtLogger.Write("Exception on Scheduller FT Workflow Check :: " + ex.Message + " => " + ex.StackTrace, System.Diagnostics.EventLogEntryType.Error); payroll.ErrorDescription += HeaderErrorMsg + "|Exception on Scheduller Workflow Check Payroll :: " + ex.Message + " => " + ex.StackTrace + " => " + ex.InnerException; payroll.Status = ParameterHelper.PAYROLL_EXCEPTION; session.Update(payroll); session.Flush(); result = false; } return(result); }
private void Commitjob_transaction(ILog log) { IList <TrxPayroll> trxList = session.CreateCriteria(typeof(TrxPayroll)) .Add(Expression.Eq("Status", ParameterHelper.PAYROLL_DECRYPT_PROCESS)) .Add(Expression.Lt("LastUpdate", DateTime.Now)) .AddOrder(Order.Asc("CreatedTime")) .List <TrxPayroll>(); log.Info("Jumlah transaksi menunggu decript : " + trxList.Count); //we've found some data foreach (TrxPayroll payroll in trxList) { //get file //FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read); string file = payroll.FileName; FileInfo fi = new FileInfo(file); //create,edit file ClientMatrix cm = session.Load <ClientMatrix>(payroll.ClientID); //lisensi client AuthorityHelper ah = new AuthorityHelper(cm.Matrix); //wewenang client FileStream fs = null; // read write file string cms_encrypt_key = ParameterHelper.GetString("CMS_ENCRYPT_KEY", session); log.Info("isi encrypt key :: " + cms_encrypt_key); try { log.Info(":: Opening gpg file :: "); string file_hasil_decript = DecryptFile(session, payroll, fi, cms_encrypt_key, log); if (!file_hasil_decript.Equals("")) { fs = new FileStream(fi.DirectoryName + "\\" + file_hasil_decript, FileMode.Open, FileAccess.Read); log.Info("filename :: " + fs.Name); payroll.Status = ParameterHelper.PAYROLL_WAITINGSEQNUM; payroll.LastUpdate = DateTime.Now; payroll.Description += "||"; payroll.FileName = fs.Name; } else { payroll.LastUpdate = DateTime.Now.AddMinutes(5); payroll.ErrorDescription += "Decript gagal. Coba lagi nanti Gan!!!"; //sudah terlalu lama menunggu if (DateTime.Now > payroll.CreatedTime.AddHours(6)) { payroll.ErrorDescription += "Reject Gan, sudah terlalu lama menunggu!!!"; payroll.Status = ParameterHelper.TRXSTATUS_REJECT; payroll.StatusEmail = ParameterHelper.PAYROLL_NEEDEMAIL; payroll.Description = ParameterHelper.TRXDESCRIPTION_REJECT + "-" + "Decript failed, encription key not valid."; } } session.Update(payroll); session.Flush(); } catch (Exception exce) { log.Error(":: Opening file error : " + exce.Message + "||" + exce.InnerException + "||" + exce.StackTrace); payroll.LastUpdate = DateTime.Now; payroll.ErrorDescription += ":: Opening file error : " + exce.Message + "||" + exce.InnerException + "||" + exce.StackTrace; session.Update(payroll); session.Flush(); } } }
private void Commitjob_transaction(ILog log) { try { IList <TrxPayroll> trxList = session.CreateCriteria(typeof(TrxPayroll)) .Add(Expression.Eq("StatusEmail", ParameterHelper.PAYROLL_NEEDEMAIL)) .Add(Expression.Or(Expression.Eq("Status", ParameterHelper.TRXSTATUS_COMPLETE), Expression.Eq("Status", ParameterHelper.TRXSTATUS_REJECT))) .AddOrder(Order.Asc("CreatedTime")) .List <TrxPayroll>(); log.Info("Jumlah transaksi butuh email : " + trxList.Count); //we've found some data foreach (TrxPayroll trx in trxList) { try { //update status running trx.StatusEmail = ParameterHelper.PAYROLL_PROCESSEMAIL; session.Update(trx); session.Flush(); string user_id = ""; int clientID = trx.ClientID; #region get user id UserMap umap = null; if (!string.IsNullOrEmpty(trx.Approver)) { String[] tempmaker = trx.Approver.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String makinfo in tempmaker) { String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries); umap = session.CreateCriteria(typeof(UserMap)) .Add(Expression.Like("UserHandle", detmake[0].Trim())) .Add(Expression.Like("ClientEntity", clientID)) .UniqueResult <UserMap>(); user_id = umap.UserEntity.ToString(); } } if (!string.IsNullOrEmpty(trx.Checker)) { String[] tempmaker = trx.Checker.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String makinfo in tempmaker) { String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries); umap = session.CreateCriteria(typeof(UserMap)) .Add(Expression.Like("UserHandle", detmake[0].Trim())) .Add(Expression.Like("ClientEntity", clientID)) .UniqueResult <UserMap>(); user_id += "|" + umap.UserEntity.ToString(); } } if (!string.IsNullOrEmpty(trx.Maker)) { String[] tempmaker = trx.Maker.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String makinfo in tempmaker) { String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries); umap = session.CreateCriteria(typeof(UserMap)) .Add(Expression.Like("UserHandle", detmake[0].Trim())) .Add(Expression.Like("ClientEntity", clientID)) .UniqueResult <UserMap>(); user_id += "|" + umap.UserEntity.ToString(); } } log.Info("User ID will send email = " + user_id); #endregion #region counttrx ////trx.TrxPayrollDetail. string _theTotalTrx = ""; IList <TrxPayrollDetail> ListSuccess = trx.TrxPayrollDetail; int countSuccess = 0; int countFail = 0; int countTotal = ListSuccess.Count; double sumSuccess = 0; double sumFail = 0; double sumTotal = 0; foreach (TrxPayrollDetail a in ListSuccess) { if (a.Status == ParameterHelper.TRXSTATUS_SUCCESS) { countSuccess++; sumSuccess += a.Amount; } else if (a.Status == ParameterHelper.TRXSTATUS_REJECT) { countFail++; sumFail += a.Amount; } sumTotal += a.Amount; } //real amount sumSuccess = sumSuccess / 100; sumFail = sumFail / 100; sumTotal = sumTotal / 100; string _countSuccess = countSuccess.ToString(); string _sumSuccess = sumSuccess.ToString(); string _countFail = countFail.ToString(); string _sumFail = sumFail.ToString(); string _countTotal = countTotal.ToString(); string _sumTotal = sumTotal.ToString(); //|berhasil|gagal|total| //|17:56000|:|3:25612541| trx.LastUpdate = DateTime.Now; trx.TotalTrx = "|" + _countSuccess + ":" + _sumSuccess + "|" + _countFail + ":" + _sumFail + "|" + _countTotal + ":" + _sumTotal + "|"; _theTotalTrx = "|" + _countSuccess + ":" + _sumSuccess + "|" + _countFail + ":" + _sumFail + "|" + _countTotal + ":" + _sumTotal + "|"; log.Info("Trx Id = " + trx.Id + ", Total Trx : " + trx.TotalTrx); session.Update(trx); session.Flush(); #endregion #region send email String[] uid_np = user_id.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (String idnp in uid_np) { UserMatrix umx = session.Load <UserMatrix>(int.Parse(idnp)); AuthorityHelper ahe = new AuthorityHelper(umx.Matrix); if (ahe.isNeedPendingEmail(100)) { User uid = session.Load <User>(int.Parse(idnp)); //state=0->inProcess verify; state=1->inProc Approve; state=2->Succed; state=3->reject if (trx.Status == ParameterHelper.TRXSTATUS_COMPLETE) { EmailNotificationHelper.MassNotification(session, uid.Email, clientID, trx.SeqNumber, "Payroll", 2, trx.FileDescription, _theTotalTrx, "", trx.CreatedTime, trx.Maker, trx.ProcessTime, "Done"); } else if (trx.Status == ParameterHelper.TRXSTATUS_REJECT) { string rejectDesc = ""; if (!string.IsNullOrEmpty(trx.Rejecter)) { rejectDesc = "Rejected by " + trx.Rejecter; } else { string[] desc = trx.Description.Split(new String[] { "||" }, StringSplitOptions.RemoveEmptyEntries); rejectDesc = desc[0]; } EmailNotificationHelper.MassNotification(session, uid.Email, clientID, trx.SeqNumber, "Payroll", 3, trx.FileDescription, _countTotal, _sumTotal, trx.CreatedTime, trx.Maker, trx.ProcessTime, "Reject (" + rejectDesc + ")"); } } } log.Info("Email Send Successfully"); trx.StatusEmail = ParameterHelper.PAYROLL_DONEMAIL; session.Update(trx); session.Flush(); //if (trx.Status == ParameterHelper.TRXSTATUS_COMPLETE) //{ // String[] uid_np = nextProcessor.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries); // foreach (String idnp in uid_np) // { // UserMatrix umx = session.Load<UserMatrix>(int.Parse(idnp)); // AuthorityHelper ahe = new AuthorityHelper(umx.Matrix); // if (ahe.isNeedPendingEmail(3600)) // { // User uid = session.Load<User>(int.Parse(idnp)); // //state=0->inProcess verify; state=1->inProc Approve; state=2->Succed; state=3->reject // EmailNotificationHelper.MassNotification(session, uid.Email, o.ClientId, massSWIFfile.Id, "Mass SWIFT", 0, massSWIFfile.FileDescription, counttrx, totalamount, massSWIFfile.CreatedTime, massSWIFfile.Maker, massSWIFfile.Valuedate, "Need Verify"); // } // } //} //else if(trx.Status == ParameterHelper.TRXSTATUS_REJECT) //{ //} #endregion } catch (Exception e) { log.Error("Exception >>" + e.Message + ">>" + e.InnerException + ">>" + e.StackTrace); trx.ErrorDescription = "Send Email Exception >>" + e.Message + ">>" + e.InnerException + ">>" + e.StackTrace; trx.StatusEmail = ParameterHelper.PAYROLL_EXCEPTIONEMAIL; session.Update(trx); session.Flush(); } } } catch (Exception e) { log.Error("Exception Send Email >>" + e.Message + ">>" + e.InnerException + ">>" + e.StackTrace); } }