/// <summary>
        /// This Function Will Validate User
        /// With the Organization ID
        /// </summary>
        /// <param name="username">username</param>
        /// <param name="password">password</param>
        /// <param name="organizationID">organizationID</param>
        /// <returns></returns>
        public static bool ValidateUser(string username, string password, int organizationID)
        {
            bool   isValidated     = false;
            int    accountType     = 0;
            int    userType        = 0;
            int    userID          = 0;
            int    accountCode     = 0;
            string userDisplayName = string.Empty;

            try
            {
                var userBO = new UserBO();
                isValidated = userBO.ValidateUser(username, password, organizationID, ref userID, ref userType, ref accountType, ref accountCode, ref userDisplayName);

                //if true
                if (isValidated)
                {
                    //Get account creation rules
                    var accCreationRuleBO = new AccountCreationRuleBO();
                    var rules             = accCreationRuleBO.GetRule(organizationID);

                    var ruleInfo = new AccountNumberRuleInfo();

                    //Assign in session variables rules
                    foreach (var rule in rules)
                    {
                        if (rule.Meaning == Constants.K_ACC_RULE_CURRENCY)
                        {
                            ruleInfo.CurrencyPosition = (int)rule.Position;
                        }
                        else if (rule.Meaning == Constants.K_ACC_RULE_ACC_NUMBER)
                        {
                            ruleInfo.AccountNumberPosition = (int)rule.Position;
                        }
                    }

                    //Assign login info in session
                    var loginInfo = new LoginInformation()
                    {
                        UserID      = userID,
                        UserEmail   = username,
                        AccountType = accountType,
                        AccountCode = accountCode
                    };

                    if (userType == Constants.K_BROKER_LIVE)
                    {
                        loginInfo.LogAccountType = LoginAccountType.LiveAccount;
                    }
                    else if (userType == Constants.K_BROKER_PARTNER)
                    {
                        loginInfo.LogAccountType = LoginAccountType.PartnerAccount;
                    }
                    else if (userType == Constants.K_BROKER_ADMIN)
                    {
                        loginInfo.LogAccountType = LoginAccountType.AdminAccount;
                    }

                    SessionManagement.UserInfo             = loginInfo;
                    SessionManagement.DisplayName          = userDisplayName;
                    SessionManagement.ImageURL             = GetImageURL(loginInfo.UserID);
                    SessionManagement.IsLoginAuthenticated = true;
                    SessionManagement.OrganizationID       = organizationID;
                    SessionManagement.AccountRuleInfo      = ruleInfo;

                    return(true);
                }

                return(false);
            }
            catch
            {
                return(false);
            }
        }
Exemple #2
0
        /// <summary>
        /// This action creates new account number for live user after successful
        /// registration and inserts into ClientAccounts table
        /// </summary>
        /// <param name="newClient"></param>
        public static int CreateAccountNumberForUser(Client newClient)
        {
            try
            {
                var tradingAccountNumber   = string.Empty;
                var landingAccountNumber   = string.Empty;
                var landingAccCurrencyCode = string.Empty;
                var lAccNumber             = 0L;

                //Get organization id from session
                var organizationID = (int)SessionManagement.OrganizationID;

                var rulelist    = accountCreationRuleBO.GetRule(organizationID).OrderBy(c => c.Position);
                var currencyID  = curencyBO.GetCurrencyLookUpID(newClient.FK_AccountCurrencyID);
                var currAccCode = currencyBO.GetCurrencyAccountCode(currencyID);

                //Iterating through each rule/steps of account creation
                foreach (var item in rulelist)
                {
                    //Currency
                    if (item.Meaning == Constants.K_ACC_RULE_CURRENCY)
                    {
                        tradingAccountNumber += currAccCode + "-";
                        landingAccountNumber += currAccCode + "-";
                    }
                    //Account Number Belonging to that Currency
                    else if (item.Meaning == Constants.K_ACC_RULE_CURR_NUMBER)
                    {
                        var template = item.Template;

                        var tradingAccCount = clientAccBO.GetNumberOfSameCurrencyTradingAccountForUser(LoginAccountType.LiveAccount, newClient.PK_ClientID, currencyID);

                        tradingAccountNumber += (tradingAccCount + 1).ToString("D" + template.Length) + "-";

                        //Required for creating landing account
                        for (var ctDigit = 0; ctDigit < template.Length; ctDigit++)
                        {
                            landingAccCurrencyCode += "0";
                        }
                        landingAccountNumber += landingAccCurrencyCode + "-";
                    }
                    //Client Account Number
                    else if (item.Meaning == Constants.K_ACC_RULE_ACC_NUMBER)
                    {
                        var template          = item.Template;
                        var existingAccNumber = clientAccBO.GetUserExistingAccountNumber(LoginAccountType.LiveAccount, newClient.PK_ClientID);
                        var latestAccNumber   = clientAccBO.GetLatestAccountNumber(organizationID);

                        //If no previous account exists for the user
                        if (existingAccNumber == "")
                        {
                            //If any acc number exists in db
                            if (latestAccNumber != "")
                            {
                                lAccNumber            = Convert.ToInt64(latestAccNumber);
                                tradingAccountNumber += (lAccNumber + 1).ToString("D" + template.Length) + "-";
                                landingAccountNumber += (lAccNumber + 1).ToString("D" + template.Length) + "-";
                                lAccNumber++;
                            }
                            //If no acc number exists in db
                            else
                            {
                                lAccNumber            = 1;
                                tradingAccountNumber += lAccNumber.ToString("D" + template.Length) + "-";
                                landingAccountNumber += lAccNumber.ToString("D" + template.Length) + "-";
                            }
                        }
                        //If user has acc number in system
                        else
                        {
                            tradingAccountNumber += existingAccNumber.Split('-')[((int)item.Position - 1)] + "-";
                            landingAccountNumber += existingAccNumber.Split('-')[((int)item.Position - 1)] + "-";

                            lAccNumber = Convert.ToInt64(existingAccNumber.Split('-')[((int)item.Position - 1)]);
                        }
                    }
                }

                //Insert client account information in ClientAccounts table
                return(clientAccBO.InsertAccountNumberForUser(LoginAccountType.LiveAccount, newClient.PK_ClientID, newClient.FK_AccountID, currencyID, landingAccountNumber.TrimEnd('-'), tradingAccountNumber.TrimEnd('-'), lAccNumber, organizationID));
            }
            catch (Exception ex)
            {
                CurrentDeskLog.Error(ex.Message, ex);
                throw;
            }
        }