/// <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); } }
/// <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; } }