private static bool ValidateReturnTransaction(MaintenanceWorkflowOutstandingTransaction wat, TransitionEventCode eventNameEng) { bool valid = false; if (TransitionEventCode.ReturnEvent == eventNameEng) { if (wat.Transaction is EnableUserTransaction || wat.Transaction is DisableUserTransaction || wat.Transaction is TerminateMemberUserTransaction) { valid = true; } } return(valid); }
public static TransitionEvent GetTransitionEventOf(MaintenanceWorkflowOutstandingTransaction transaction, params TransitionEventCode[] transitionEventCodes) { foreach (var c in transitionEventCodes) { foreach (var e in transaction.PermissibleEvents) { if (e.TransitionEvent.Code == c) { return(e.TransitionEvent); } } } return(null); }
public static void ApproveTransaction(BizPortalSessionContext context, string[] eventNameAndId, string remark, ref string message, ref int warningCount) { TransitionEventCode eventNameEng = convertThaiEventToEngEvent(eventNameAndId[0]); string eventNameThai = eventNameAndId[0]; string lange = context.CurrentLanguage.Code; string mark = ""; MaintenanceWorkflowOutstandingTransaction wat = null; bool isAddFunctionWorkflowTransaction = false; int functionID = 0; using (ITransaction tx = context.PersistenceSession.BeginTransaction()) { try { wat = new MaintenanceWorkflowOutstandingTransaction(context, eventNameAndId[1]); if (wat.Workflow.MemberFunction == null) { warningCount++; message = Messages.Genaral.IsNotMemberFunction.Format(context.CurrentLanguage.Code); } mark = wat.CurrentStateRemark; // is not use wat.CurrentStateRemark case bug user null if (ValidateReturnTransaction(wat, eventNameEng)) { warningCount++; message = Messages.Genaral.IsNotReturnTransaction.Format(context.CurrentLanguage.Code); } if (wat.Transaction is EnableUserTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is DisableUserTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateMemberUserTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is AddMaintenanceWorkflowTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateMaintenanceWorkflowTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is AddMemberGroupTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateMemberGroupTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is AddMemberGroupUserTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateMemberGroupUserTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is AddMemberUserTransaction && wat.Transaction.FunctionID != (int)BankMakerFunctionID.AddMemberUser && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is ChangeConfigurationTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is ChangeMemberProfileTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is AddMultipleHolidaysTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateHoliday && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is AddMultipleMemberGroupUsersTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateMultipleMemberGroupUsersTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is ChangeUserGroupMembersTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateServiceWorkflowTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is RetryDebitTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is OverrideDebitTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateServiceTransactionTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is RefundSuccessTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is ReExportServiceTransactionTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is ChangeEffectiveDateOfServiceTransactionTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is ChangeServiceOfServiceTransactionTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is RetryCreditTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is SetStateOfCreditTransactionTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is AddServiceOptionItemTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is ChangeServiceOptionItemTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateServiceOptionItemTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is AddMemberServiceTransaction && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } else if (wat.Transaction is TerminateMemberService && eventNameEng == TransitionEventCode.ReturnEvent) { warningCount++; message += string.Format("- รายการ {0} สามารถเลือกอนุมัติหรือไม่อนุมัติเท่านั้น </br>", mark); } if (wat.Transaction.EffectiveDate < DateTime.Now) { warningCount++; message += string.Format("- รายการ {0} ไม่สมารถอนุมัติได้ เนื่องจากวันที่มีผลใช้งานเป็นวันย้อนหลัง </br>", mark); } if (warningCount == 0) { //Is Transaction type Add function work flow if (wat.Transaction is AddMaintenanceWorkflowTransaction && eventNameEng == TransitionEventCode.ApproveFinalEvent) { isAddFunctionWorkflowTransaction = true; } //Re-layout Personalization ReLayoutByWorkflowOutstandingTransaction(context, wat); // functionID = wat.Transaction.FunctionID; wat.Transaction.Transit(context, wat.Workflow, mark, eventNameEng); wat.Transaction.Remark = remark; #region GeneratePW & SendEmail, SMS สำหรับการสร้าง User ของ AddMemberUserTransaction และ AddMemberTransaction if (wat.Transaction is AddMemberUserTransaction) { AddMemberUserTransaction trans = (AddMemberUserTransaction)wat.Transaction; SelfAuthenticatedUser user = trans.Target as SelfAuthenticatedUser; if (null != user) { user.GenerateAndSendPasswordOfNewUser(context); } } else if (wat.Transaction is AddMemberTransaction) { AddMemberTransaction trans = (AddMemberTransaction)wat.Transaction; foreach (MemberUser mu in trans.Target.MemberUsers) { SelfAuthenticatedUser user = mu as SelfAuthenticatedUser; if (null != user) { user.GenerateAndSendPasswordOfNewUser(context); } } } #endregion GeneratePW & SendEmail, SMS สำหรับการสร้าง User ของ AddMemberUserTransaction และ AddMemberTransaction message = string.Format("{0} {1}", eventNameAndId[0], Messages.Genaral.ApprovalSuccess.Format(context.CurrentLanguage.Code)); //if (isAddFunctionWorkflowTransaction && wat.TargetMember.SystemID != SystemEnum.BankSystem)// only system 42 // FunctionWorkflowService.TerminateTransaction(context, wat.TargetMember, wat.Transaction); wat.Transaction.Persist(context); tx.Commit(); context.Log(functionID, 0, 0, GetFunctionName(lange, eventNameEng), mark); } } catch (System.Data.SqlTypes.SqlTypeException ex) { warningCount++; message = Messages.Genaral.TransactionNoThrowException.Format(lange) + newLineHTML; tx.Rollback(); context.PersistenceSession.Clear(); context.Log(functionID, 0, 0, Messages.Action.Approval.Format(lange, ""), mark + Messages.Genaral.TransactionException.Format(lange, ex.Message)); } catch (System.NullReferenceException ex) { warningCount++; message += Messages.Genaral.TransactionNoThrowException.Format(lange) + newLineHTML; tx.Rollback(); context.PersistenceSession.Clear(); context.Log(functionID, 0, 0, Messages.Action.Approval.Format(lange, ""), mark + Messages.Genaral.TransactionException.Format(lange, ex.Message)); } catch (Exception ex) { warningCount++; if (Messages.Genaral.TransactionNotPermitToConsider.Format(lange) == ex.Message) { message = Messages.Genaral.TransactionNotPermitToConsider.Format(lange); } else { message = Messages.Genaral.TransactionNoThrowException.Format(lange); } tx.Rollback(); context.PersistenceSession.Clear(); context.Log(functionID, 0, 0, GetFunctionName(lange, eventNameEng), mark + Messages.Genaral.TransactionException.Format(lange, ex.Message)); message = string.Format("{0} {1}", eventNameAndId[0], Messages.Genaral.TransactionException.Format(lange, ex.Message));//by kittikun } } }
public static void ReLayoutByWorkflowOutstandingTransaction(BizPortalSessionContext context, MaintenanceWorkflowOutstandingTransaction wat) { bool addMaintenanceWorkflow = wat.Transaction is AddMaintenanceWorkflowTransaction; bool terMaintenanceWorkflow = wat.Transaction is TerminateMaintenanceWorkflowTransaction; bool addGroupUser = wat.Transaction is AddMemberGroupUserTransaction; bool terGroupUser = wat.Transaction is TerminateMemberGroupUserTransaction; //1.2A bool addServiceWorkflow = wat.Transaction is AddServiceWorkflowTransaction; bool terServiceWorkflow = wat.Transaction is TerminateServiceWorkflowTransaction; if (addGroupUser) { AddMemberGroupUserTransaction addMemberGroupUserTransaction = ((AddMemberGroupUserTransaction)wat.Transaction); if (addMemberGroupUserTransaction.Target.User.Personalizations.Any()) { addMemberGroupUserTransaction.Target.User.Personalizations.LastOrDefault().PageID = 1; } } else if (terGroupUser) { TerminateMemberGroupUserTransaction terMemberGroupUserTransaction = ((TerminateMemberGroupUserTransaction)wat.Transaction); if (terMemberGroupUserTransaction.Target.User.Personalizations.Any()) { terMemberGroupUserTransaction.Target.User.Personalizations.LastOrDefault().PageID = 1; } } else if (addMaintenanceWorkflow) { AddMaintenanceWorkflowTransaction addMaintenanceWorkflowTransaction = ((AddMaintenanceWorkflowTransaction)wat.Transaction); //foreach (MemberUserGroup mug in FunctionWorkflowService.GetMemberUserGroup((MaintenanceWorkflow)addFunctionWorkflowTransaction.Target)) foreach (MemberUserGroup mug in FunctionWorkflowService.GetMemberUserGroup(addMaintenanceWorkflowTransaction.Target)) { foreach (UserGroupUser ugu in mug.GetEffectiveUsers(context)) { if (ugu.User.Personalizations.Any()) { ugu.User.Personalizations.LastOrDefault().PageID = 1; } } } } else if (terMaintenanceWorkflow) { TerminateMaintenanceWorkflowTransaction terMaintenanceWorkflowTransaction = ((TerminateMaintenanceWorkflowTransaction)wat.Transaction); foreach (MemberUserGroup mug in FunctionWorkflowService.GetMemberUserGroup(terMaintenanceWorkflowTransaction.Target)) { foreach (UserGroupUser ugu in mug.GetEffectiveUsers(context)) { if (ugu.User.Personalizations.Any()) { ugu.User.Personalizations.LastOrDefault().PageID = 1; } } } } //1.2A by kittikun 2014-08-31 else if (addServiceWorkflow) { AddServiceWorkflowTransaction addServiceWorkflowTransaction = ((AddServiceWorkflowTransaction)wat.Transaction); foreach (MemberUserGroup mug in FunctionWorkflowService.GetMemberUserGroup(addServiceWorkflowTransaction.Target)) { foreach (UserGroupUser ugu in mug.GetEffectiveUsers(context)) { if (ugu.User.Personalizations.Any()) { ugu.User.Personalizations.LastOrDefault().PageID = 1; } } } } else if (terServiceWorkflow) { TerminateServiceWorkflowTransaction terServiceWorkflowTransaction = ((TerminateServiceWorkflowTransaction)wat.Transaction); foreach (MemberUserGroup mug in FunctionWorkflowService.GetMemberUserGroup(terServiceWorkflowTransaction.Target)) { foreach (UserGroupUser ugu in mug.GetEffectiveUsers(context)) { if (ugu.User.Personalizations.Any()) { ugu.User.Personalizations.LastOrDefault().PageID = 1; } } } } }