/// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public ActionResult Create(int nUserInfoID = 0)
        {
            LoginUserDetails     objLoginUserDetails     = (LoginUserDetails)Common.Common.GetSessionValue(ConstEnum.SessionValue.UserDetails);
            EmployeeModel        objEmployeeModel        = new EmployeeModel();
            UserInfoModel        objUserInfoModel        = new UserInfoModel();
            DMATDetailsModel     objDMATDetailsModel     = new DMATDetailsModel();
            DocumentDetailsModel objDocumentDetailsModel = new DocumentDetailsModel();
            UserInfoSL           objUserInfoSL           = new UserInfoSL();

            try
            {
                if (nUserInfoID != 0)
                {
                    UserInfoDTO objUserInfoDTO = new UserInfoDTO();
                    objUserInfoDTO = objUserInfoSL.GetUserDetails(objLoginUserDetails.CompanyDBConnectionString, nUserInfoID);
                    string sPwdMask = "●●●●●●●●●●●●●";
                    objUserInfoDTO.Password = sPwdMask.PadRight(15, '●');
                    Common.Common.CopyObjectPropertyByName(objUserInfoDTO, objUserInfoModel);
                    objDMATDetailsModel.UserInfoID = nUserInfoID;
                }

                objEmployeeModel.userInfoModel        = objUserInfoModel;
                objEmployeeModel.dmatDetailsModel     = objDMATDetailsModel;
                objEmployeeModel.documentDetailsModel = objDocumentDetailsModel;
                PopulateCombo();
                return(View("Create", objEmployeeModel));
            }
            catch (Exception exp)
            {
                string sErrMessage = Common.Common.getResource(exp.InnerException.Data[0].ToString());
                ModelState.AddModelError("Error", sErrMessage);
                return(View("Create", objEmployeeModel));
            }
            finally
            {
                objLoginUserDetails     = null;
                objEmployeeModel        = null;
                objUserInfoModel        = null;
                objDMATDetailsModel     = null;
                objDocumentDetailsModel = null;
                objUserInfoSL           = null;
            }
        }
        public ActionResult Create(int acid, int nUserInfoID = 0, bool isPPD_Details_Saved = false, bool isNonEmployee = true)
        {
            bool show_create_role_link       = true;
            bool show_not_login_user_details = true;

            UserInfoDTO objUserInfoDTO = null;

            bool show_confirm_personal_details_btn = false;
            bool showMsgConfirmPersonalDetails     = false;

            int user_action_ViewDetails = 0;

            ViewBag.UserDetailsSaved = false;

            LoginUserDetails      objLoginUserDetails      = null;
            EmployeeModel         objEmployeeModel         = new EmployeeModel();
            UserInfoModel         objUserInfoModel         = new UserInfoModel();
            DMATDetailsModel      objDMATDetailsModel      = new DMATDetailsModel();
            DocumentDetailsModel  objDocumentDetailsModel  = new DocumentDetailsModel();
            ImplementedCompanyDTO objImplementedCompanyDTO = new ImplementedCompanyDTO();

            try
            {
                objLoginUserDetails = (LoginUserDetails)Common.Common.GetSessionValue(ConstEnum.SessionValue.UserDetails);
                using (CompaniesSL objCompaniesSL = new CompaniesSL())
                {
                    objImplementedCompanyDTO = objCompaniesSL.GetDetails(objLoginUserDetails.CompanyDBConnectionString, 0, 1);
                }

                objUserInfoDTO = new UserInfoDTO();

                if (nUserInfoID != 0)
                {
                    using (UserInfoSL objUserInfoSL = new UserInfoSL())
                    {
                        objUserInfoDTO = objUserInfoSL.GetUserDetails(objLoginUserDetails.CompanyDBConnectionString, nUserInfoID);
                    }
                    Common.Common.CopyObjectPropertyByName(objUserInfoDTO, objUserInfoModel);

                    objDMATDetailsModel.UserInfoID          = nUserInfoID;
                    objDocumentDetailsModel.MapToTypeCodeId = ConstEnum.Code.UserDocument;
                    objDocumentDetailsModel.MapToId         = nUserInfoID;
                    objDocumentDetailsModel.PurposeCodeId   = null;
                }
                else
                {
                    ViewBag.NewNonEmpRegistration = true;
                }

                ViewBag.EmpPANNumber = objUserInfoModel.PAN;

                PopulateCombo(objImplementedCompanyDTO.CompanyId);

                objUserInfoModel.UPSIAccessOfCompanyID   = objImplementedCompanyDTO.CompanyId;
                objUserInfoModel.UPSIAccessOfCompanyName = objImplementedCompanyDTO.CompanyName;

                objEmployeeModel.userInfoModel        = objUserInfoModel;
                objEmployeeModel.dmatDetailsModel     = objDMATDetailsModel;
                objEmployeeModel.documentDetailsModel = objDocumentDetailsModel;

                objUserInfoModel.DefaultRole  = FillComboValues(ConstEnum.ComboType.RoleList, ConstEnum.Code.NonEmployeeType.ToString(), null, null, null, null, true);
                objUserInfoModel.AssignedRole = FillComboValues(ConstEnum.ComboType.RoleList, ConstEnum.Code.NonEmployeeType.ToString(), nUserInfoID.ToString(), null, null, null, false);

                //set flag to show applicability define or not msg
                if (nUserInfoID != 0 && nUserInfoID != objLoginUserDetails.LoggedInUserID)
                {
                    //check if user has policy document and trading policy appliable by checking count and set flag to show warning msg if applicabiliyt not define
                    using (ApplicabilitySL objApplicabilitySL = new ApplicabilitySL())
                    {
                        int pcount = objApplicabilitySL.UserApplicabilityCount(objLoginUserDetails.CompanyDBConnectionString, nUserInfoID, ConstEnum.Code.PolicyDocument);
                        int tcount = objApplicabilitySL.UserApplicabilityCount(objLoginUserDetails.CompanyDBConnectionString, nUserInfoID, ConstEnum.Code.TradingPolicy);

                        bool showMsgPolicyDocNotApplicable     = (pcount <= 0) ? true : false;
                        bool showMsgTradingPolicyNotApplicable = (tcount <= 0) ? true : false;

                        ViewBag.IsShowMsgPDocNotApp = showMsgPolicyDocNotApplicable;
                        ViewBag.IsShowMsgTPocNotApp = showMsgTradingPolicyNotApplicable;
                    }
                }
                else
                {
                    ViewBag.IsShowMsgPDocNotApp = false;
                    ViewBag.IsShowMsgTPocNotApp = false;
                }

                //check if details being shown for login user then set flag to do not show create role link
                if (nUserInfoID != 0 && nUserInfoID == objLoginUserDetails.LoggedInUserID)
                {
                    show_create_role_link       = false;
                    show_not_login_user_details = false;

                    //check if login user has already confirm personal details - if user has confirm personal details then do not show confirm button
                    if (objUserInfoDTO.IsRequiredConfirmPersonalDetails != null && (bool)objUserInfoDTO.IsRequiredConfirmPersonalDetails)
                    {
                        show_confirm_personal_details_btn = true;
                        showMsgConfirmPersonalDetails     = true;
                    }
                }
                ViewBag.show_create_role_link       = show_create_role_link;
                ViewBag.show_not_login_user_details = show_not_login_user_details;

                ViewBag.user_action = acid;

                ViewBag.IsShowMsgConfirmDetails           = showMsgConfirmPersonalDetails;
                ViewBag.show_confirm_personal_details_btn = show_confirm_personal_details_btn;

                switch (objLoginUserDetails.UserTypeCodeId)
                {
                case ConstEnum.Code.Admin:
                case ConstEnum.Code.COUserType:
                    user_action_ViewDetails = ConstEnum.UserActions.INSIDER_INSIDERUSER_VIEW;
                    break;

                case ConstEnum.Code.NonEmployeeType:
                    user_action_ViewDetails = ConstEnum.UserActions.VIEW_DETAILS_PERMISSION_FOR_NON_EMPLOYEE_USER;
                    break;
                }

                ViewBag.user_action_ViewDetails = user_action_ViewDetails;

                Session["UserInfoId"] = objUserInfoModel.UserInfoId;
                Session["Confirm_PersonalDetails_Required"]  = objUserInfoModel.IsRequiredConfirmPersonalDetails;
                Session["show_confirm_personal_details_btn"] = ViewBag.show_confirm_personal_details_btn;
                Session["NonEmployeeType"] = isNonEmployee;
                Session["EmployeeType"]    = false;
                WorkandEducationDetailsConfigurationDTO objWorkandEducationDetailsConfigurationDTO = new WorkandEducationDetailsConfigurationDTO();
                using (var objCompaniesSL = new CompaniesSL())
                {
                    objWorkandEducationDetailsConfigurationDTO = objCompaniesSL.GetWorkandeducationDetailsConfiguration(objLoginUserDetails.CompanyDBConnectionString, 1);
                }
                ViewBag.WorkandEducationDetailsConfiguration = objWorkandEducationDetailsConfigurationDTO.WorkandEducationDetailsConfigurationId;
                Session["WorkandEducationConfiguration"]     = ViewBag.WorkandEducationDetailsConfiguration;
                if (isPPD_Details_Saved)
                {
                    ViewBag.UserDetailsSaved = true;
                    return(View("NonEmployeeDmatDetails", objEmployeeModel));
                }
                else
                {
                    return(View(objEmployeeModel));
                }
            }
            catch (Exception exp)
            {
            }
            finally
            {
                objLoginUserDetails      = null;
                objUserInfoDTO           = null;
                objEmployeeModel         = null;
                objUserInfoModel         = null;
                objDMATDetailsModel      = null;
                objDocumentDetailsModel  = null;
                objImplementedCompanyDTO = null;
            }
            return(View("Create"));
        }