Esempio n. 1
0
        public JsonResult UpdateResponsibleOrgUnits(long[] agencies)
        {
            try
            {
                if (agencies.Length <= 0)
                {
                    return(Json(new { Success = true, Message = "กรุณาตรวจสอบข้อมูล" }, JsonRequestBehavior.AllowGet));
                }

                SelfAuthenticatedUser user = SessionContext.User;

                //Expire all
                foreach (var item in user.ResponsibleOrgUnits)
                {
                    item.EffectivePeriod = new TimeInterval(TimeInterval.MaxDate, TimeInterval.MinDate);
                }

                //update
                for (int i = 0; i < agencies.Length; i++)
                {
                    if (user.ResponsibleOrgUnits.Any(x => x.OrgUnit.ID == agencies[i]))
                    {
                        user.ResponsibleOrgUnits.Where(x => x.OrgUnit.ID == agencies[i]).SingleOrDefault().EffectivePeriod = TimeInterval.EffectiveNow;
                    }
                    else
                    {
                        UserOrgUnit userOrgUnitNew = new UserOrgUnit(user, OrgUnit.Find(SessionContext, agencies[i]));
                        user.ResponsibleOrgUnits.Add(userOrgUnitNew);
                    }
                }

                using (ITransaction tx = SessionContext.PersistenceSession.BeginTransaction())
                {
                    try
                    {
                        SessionContext.Persist(user);
                        tx.Commit();

                        SessionContext.Log(0, pageID, 0, MessageException.ProjectMessage.EditProfile, MessageException.Success(user.LoginName));
                    }
                    catch (Exception ex)
                    {
                        tx.Rollback();

                        SessionContext.LogButNotFlush(0, pageID, 0, MessageException.ProjectMessage.EditProfile, MessageException.Fail(ex.Message));
                        return(Json(new { Success = false, Message = MessageException.Error }, JsonRequestBehavior.AllowGet));
                    }
                }

                return(Json(new { Success = true, Message = "บันทึกเรียบร้อย" }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                SessionContext.LogButNotFlush(0, pageID, 0, MessageException.ProjectMessage.EditProfile, MessageException.Fail(ex.Message));
                return(Json(new { Success = false, Message = MessageException.Error }, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 2
0
 public static void ResetPassword(BizPortalSessionContext context, MemberUser memberUser)
 {
     using (ITransaction tx = context.PersistenceSession.BeginTransaction())
     {
         try
         {
             SelfAuthenticatedUser u = ((SelfAuthenticatedUser)memberUser);
             u.ResetPassword(context.Configuration.Security.PasswordPolicy, "aA=00000");
             u.Persist(context);
             tx.Commit();
         }
         catch (Exception)
         {
             tx.Rollback();
             throw;
         }
     }
 }
Esempio n. 3
0
        public ActionResult ChangeProfile()
        {
            ViewBag.TabMenu = "4";

            SelfAuthenticatedUser u = SessionContext.User;

            UserViewModel uViewModel = new UserViewModel
            {
                Id          = u.ID,
                IdCard      = u.Person.OfficialIDNo,
                FirstNameTh = u.Person.CurrentName.FirstName.GetValue(Formetter.LanguageTh),
                LastNameTh  = u.Person.CurrentName.LastName.GetValue(Formetter.LanguageTh),
                FirstNameEn = u.Person.CurrentName.FirstName.GetValue(Formetter.LanguageEn),
                LastNameEn  = u.Person.CurrentName.LastName.GetValue(Formetter.LanguageEn),

                Address     = u.Address,
                PhoneCenter = u.PhoneCenter,
                PhoneDirect = u.PhoneDirect,
                Email       = u.EMailAddress,
            };

            IList <SelectListItem> roles = new List <SelectListItem>
            {
                new SelectListItem
                {
                    Text     = u.UserRoles[0].Role.Code == "User" ? u.UserRoles[0].Role.Description.Split(',')[0] : u.UserRoles[0].Role.Description,
                    Value    = u.UserRoles[0].ID.ToString(),
                    Selected = true
                }
            };

            ViewBag.ddlRoles = roles;

            ViewBag.ddlMinistry = SessionContext.PersistenceSession
                                  .QueryOver <Organization>().List()
                                  .Select(x => new SelectListItem {
                Text = x.Code + " / " + x.CurrentName.Name.GetValue(SessionContext.CurrentLanguage.Code), Value = Convert.ToString(x.ID)
            });

            return(View(uViewModel));
        }
Esempio n. 4
0
        private static void InitAdminUser()
        {
            Organization          org     = context.PersistenceSession.Get <Organization>(1L);
            OrgUnit               orgUnit = org.OrgUnits.Where(x => x.Code == "01007").SingleOrDefault();
            SelfAuthenticatedUser admin   = new SelfAuthenticatedUser
                                            (
                SystemEnum.RiskAssessmentAdminSystem, //SessionContext.MySystem.SystemID,
                org,                                  //org,
                orgUnit,                              //orgUnit,
                "0000000000000",                      //idCard,
                "admin",                              //loginName,
                "แอดมิน",                             //firstNameTH,
                "admin",                              //firstNameEN,
                "แอดมิน",                             //lastNameTH,
                "admin",                              //lastNameEN,
                "",                                   //middleNameTH,
                "",                                   //middleNameEN,
                "",                                   //email,
                "",                                   //mobilePhone,
                "",                                   //telephone,
                "",                                   //toNumber,
                "",                                   //directTelephone
                "",                                   //Address
                true
                                            );

            admin.EffectivePeriod = TimeInterval.EffectiveNow;
            admin.UserRoles       = new List <UserRole>
            {
                new UserRole {
                    User            = admin,
                    Role            = context.PersistenceSession.QueryOver <Role>().Where(x => x.SystemID == SystemEnum.RiskAssessmentAdminSystem).SingleOrDefault(),
                    EffectivePeriod = TimeInterval.EffectiveNow,
                }
            };

            admin.Persist(context);
        }
Esempio n. 5
0
        public static SelfAuthenticatedUser CreateSelfAuthenticatedUser(SystemEnum systemId, Member member, Organization org, string officialIDNo, string loginName, string languageCcode, string firstName, string lastName, string middleName, string emailAddress, string mobilePhone, string division, string position) //, string password)
        {
            SelfAuthenticatedUser selfAuthenticatedUser = new SelfAuthenticatedUser(systemId, member, org, officialIDNo, loginName, languageCcode, firstName, lastName, middleName, emailAddress, mobilePhone, position, division);

            return(selfAuthenticatedUser);
        }
Esempio n. 6
0
        public JsonResult Register(string idcard, string firstNameTH, string lastNameTH, string firstNameEN,
                                   string lastNameEN, string address, string telephone, string toNumber, string phoneIn, string smartPhone,
                                   string email, string status, long ministry, long departments)
        {
            try
            {
                if (string.IsNullOrEmpty(idcard) && string.IsNullOrEmpty(firstNameTH) &&
                    string.IsNullOrEmpty(lastNameTH) && string.IsNullOrEmpty(firstNameEN) &&
                    string.IsNullOrEmpty(lastNameEN) && string.IsNullOrEmpty(address) &&
                    string.IsNullOrEmpty(email) && string.IsNullOrEmpty(status) &&
                    ministry == 0 && departments == 0)
                {
                    return(Json(new { Success = false, Message = "กรุณาตรวจสอบข้อมูล" }, JsonRequestBehavior.AllowGet));
                }

                if (SessionContext.PersistenceSession.QueryOver <iSabaya.User>().List().Any(x => x.Person.OfficialIDNo == idcard))
                {
                    return(Json(new { Success = false, Message = "เลขบัตรประชาชนนี้ได้ลงทะเบียนแล้ว ไม่สามารถลงทะเบียนซ้ำได้" }, JsonRequestBehavior.AllowGet));
                }

                Organization org     = Organization.Find(SessionContext, ministry);
                OrgUnit      orgUnit = OrgUnit.Find(SessionContext, departments);

                SelfAuthenticatedUser user = new SelfAuthenticatedUser(
                    SessionContext.MySystem.SystemID,
                    org,
                    orgUnit,
                    idcard,
                    firstNameEN,
                    firstNameTH, firstNameEN,
                    lastNameTH, lastNameEN,
                    "", "",
                    email,
                    smartPhone, telephone, toNumber, phoneIn, address);

                user.UserRoles = new List <UserRole>
                {
                    new UserRole(user, SessionContext.PersistenceSession.QueryOver <iSabaya.Role>().List().SingleOrDefault(x => x.SystemID == SystemEnum.RiskAssessmentProjectOwnerSystem))
                };

                // user is first register , user is not active and then administrator activate
                user.IsDisable = true;
                // set is not finali flag to admin activate and update approve action
                user.IsNotFinalized = true;

                using (ITransaction tx = SessionContext.PersistenceSession.BeginTransaction())
                {
                    try
                    {
                        user.Persist(SessionContext);
                        tx.Commit();

                        SessionContext.Log(0, PageID, 0, "User Register : " + user.LoginName, "Success");
                    }
                    catch (Exception ex)
                    {
                        tx.Rollback();

                        SessionContext.LogButNotFlush(0, PageID, 0, "User Register : " + user.LoginName, "Fail : " + ex.Message);
                        return(Json(new { Success = false, Message = MessageException.Error }, JsonRequestBehavior.AllowGet));
                    }
                }

                return(Json(new { Success = true, Message = "บันทึกเรียบร้อย" }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                SessionContext.LogButNotFlush(0, PageID, 0, "User Register", "Fail : " + ex.Message);
                return(Json(new { Success = false, Message = MessageException.Error }, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 7
0
        public JsonResult RegisterStaff(string idCard, string firstNameTH, string lastNameTH,
                                        string firstNameEN, string lastNameEN, string address, string telephone, string toNumber, string directTelephone
                                        , string mobilePhone, string email, string institute, int roleId, long ministryId, long[] agencies)
        {
            try
            {
                if (string.IsNullOrEmpty(idCard) || string.IsNullOrEmpty(firstNameTH) || string.IsNullOrEmpty(lastNameTH) || string.IsNullOrEmpty(firstNameEN) ||
                    string.IsNullOrEmpty(lastNameEN) || string.IsNullOrEmpty(address) || string.IsNullOrEmpty(email) ||
                    roleId < 0 || ministryId < 0 || agencies.Length <= 0)
                {
                    return(Json(new { Success = true, Message = "กรุณาตรวจสอบข้อมูล" }, JsonRequestBehavior.AllowGet));
                }

                if (SessionContext.PersistenceSession.QueryOver <iSabaya.User>().List().Any(x => x.Person.OfficialIDNo == idCard))
                {
                    return(Json(new { Success = false, Message = "เลขบัตรประชาชนนี้ได้ลงทะเบียนแล้ว ไม่สามารถลงทะเบียนซ้ำได้" }, JsonRequestBehavior.AllowGet));
                }

                Organization org     = SessionContext.PersistenceSession.QueryOver <Organization>().Where(o => o.Code == "01000").SingleOrDefault(); //กระทรวงสำนักนายกรัฐมนตรี 01000
                OrgUnit      orgUnit = SessionContext.PersistenceSession.QueryOver <OrgUnit>().Where(o => o.Code == "01007").SingleOrDefault();      //หน่วยงาน สำนักงบประมาณ 01007

                SelfAuthenticatedUser user = new SelfAuthenticatedUser(
                    SessionContext.MySystem.SystemID,
                    org,
                    orgUnit,
                    idCard,
                    firstNameEN,
                    firstNameTH, firstNameEN,
                    lastNameTH, lastNameEN,
                    "", "",
                    email,
                    mobilePhone, telephone, toNumber, directTelephone, address);

                // user is first register , user is not active and then administrator activate
                user.IsDisable = true;
                // set is not finali flag to admin activate and update approve action
                user.IsNotFinalized = true;

                user.UserRoles = new List <UserRole>
                {
                    new UserRole(user, SessionContext.PersistenceSession
                                 .QueryOver <iSabaya.Role>().List()
                                 .SingleOrDefault(x => x.Id == roleId))
                };

                IList <UserOrgUnit> userOrgUnits = new List <UserOrgUnit>();
                for (int i = 0; i < agencies.Length; i++)
                {
                    userOrgUnits.Add(new UserOrgUnit(user, OrgUnit.Find(SessionContext, agencies[i])));
                }

                user.ResponsibleOrgUnits = userOrgUnits;

                using (ITransaction tx = SessionContext.PersistenceSession.BeginTransaction())
                {
                    try
                    {
                        user.Persist(SessionContext);
                        tx.Commit();

                        SessionContext.Log(0, pageID, 0, MessageException.RegisterMessage.StaffRegister, MessageException.Success(user.LoginName));
                    }
                    catch (Exception ex)
                    {
                        tx.Rollback();

                        SessionContext.Log(0, pageID, 0, MessageException.RegisterMessage.StaffRegister, MessageException.Fail(ex.Message));
                        return(Json(new { Success = false, Message = MessageException.Error }, JsonRequestBehavior.AllowGet));
                    }
                }

                return(Json(new { Success = true, Message = "บันทึกเรียบร้อย" }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                SessionContext.Log(0, pageID, 0, MessageException.RegisterMessage.StaffRegister, MessageException.Fail(ex.Message));
                return(Json(new { Success = false, Message = MessageException.Error }, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 8
0
 public BudgetUserSession(iSystem iSystem, SelfAuthenticatedUser user, string fromIPAddress)
     : base(iSystem, user, fromIPAddress)
 {
 }
Esempio n. 9
0
        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
                }
            }
        }