Example #1
0
        public async Task <IActionResult> SaveAndApproveTokenReplacementOrder([FromBody] TokenOperationRequest request)
        {
            if (ModelState.IsValid)
            {
                double oldDayLimit   = 400000;
                double oldTransLimit = 400000;
                if (!request.IsNewHbUser)
                {
                    SingleResponse <long> response = new SingleResponse <long>();
                    byte language = 1;
                    if (!string.IsNullOrEmpty(Request.Headers["language"]))
                    {
                        byte.TryParse(Request.Headers["language"], out language);
                    }
                    AuthorizedCustomer authorizedCustomer = _cacheHelper.GetAuthorizedCustomer();
                    ulong              id             = _xBInfoService.GetLastKeyNumber(22000, 74);
                    List <HBToken>     activehBTokens = new List <HBToken>();
                    HBApplicationOrder order          = new HBApplicationOrder()
                    {
                        Source              = SourceType.MobileBanking,
                        HBApplication       = new HBApplication(),
                        HBApplicationUpdate = new HBApplicationUpdate
                        {
                            AddedItems       = new List <object>(),
                            DeactivatedItems = new List <object>(),
                            UpdatedItems     = new List <object>()
                        }
                    };
                    _xBService.Use(client =>
                    {
                        activehBTokens = client.GetFilteredHBTokensAsync(authorizedCustomer.UserId, HBTokenQuality.Active).Result;
                    });
                    oldDayLimit   = (activehBTokens.OrderByDescending(x => x.ActivationDate).FirstOrDefault()?.DayLimit ?? 0) != 0 ? activehBTokens.OrderByDescending(x => x.ActivationDate).FirstOrDefault().DayLimit : 400000;
                    oldTransLimit = (activehBTokens.OrderByDescending(x => x.ActivationDate).FirstOrDefault()?.TransLimit ?? 0) != 0 ? activehBTokens.OrderByDescending(x => x.ActivationDate).FirstOrDefault().TransLimit : 400000;
                    ActionResult result = _xBService.SaveAndApproveHBApplicationNewOrder(order, out HBToken hBToken, id, authorizedCustomer.UserId, oldDayLimit, oldTransLimit);
                    if (result.ResultCode == (ResultCode)ResultCodes.normal)
                    {
                        hBToken.HBUser.IsCas = true;
                        HBServletRequestOrder hBServletRequestOrder = new HBServletRequestOrder
                        {
                            RegistrationDate = DateTime.Now,
                            OperationDate    = _xBService.GetCurrentOperDay(),
                            ServletAction    = HBServletAction.ActivateToken,
                            Type             = OrderType.HBServletRequestTokenActivationOrder,
                            SubType          = 1,
                            CustomerNumber   = authorizedCustomer.CustomerNumber,
                            ServletRequest   = null,
                            Source           = SourceType.MobileBanking,
                            PhoneNumber      = GetCustomerRegPhone(authorizedCustomer.CustomerNumber),
                            HBtoken          = new HBToken
                            {
                                TokenNumber  = hBToken.TokenNumber,
                                DayLimit     = oldDayLimit,
                                TransLimit   = oldTransLimit,
                                ID           = hBToken.ID,
                                GID          = hBToken.GID,
                                TokenType    = hBToken.TokenType,
                                HBUser       = hBToken.HBUser,
                                IsRegistered = true
                            },
                            FilialCode = 22000
                        };
                        ActionResult saveActionResult = _xBService.SaveAndApproveTokenOrder(hBServletRequestOrder);
                        if (saveActionResult.ResultCode == ResultCode.DoneAndReturnedValues || saveActionResult.ResultCode == ResultCode.Normal) //եթե հին մոբայլի user -  ը (iscas == false)  ստանում է նոր տոկեն աֆտոմատ սարքում ենք նոր մոբայլի user
                        {
                            _xBService.MigrateOldUserToCas(hBToken.HBUser.ID);
                            response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveActionResult.ResultCode);
                            response.Result      = saveActionResult.Id;
                            response.Description = (Languages)language == Languages.hy ? "Ակտիվացման կոդը ուղարկվել է Ձեր էլ. փոստին, իսկ PIN կոդը կստանանք SMS-ի տեսքով:" : "The activation code was sent to your email. PIN code was sent by SMS.";
                        }
                        else
                        {
                            response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveActionResult.ResultCode);
                            response.Result      = saveActionResult.Id;
                            response.Description = saveActionResult.Errors[0].Code == 0 ? saveActionResult.Errors[0].Description : _xBService.GetTerm(saveActionResult.Errors[0].Code, null, (Languages)language);
                        }
                    }
                    else
                    {
                        response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(result.ResultCode);
                        response.Result      = result.Id;
                        response.Description = _xBService.GetTerm(result.Errors[0].Code, null, Languages.hy);
                    }
                    return(ResponseExtensions.ToHttpResponse(response));
                }
                else
                {
                    SingleResponse <long>      response     = new SingleResponse <long>();
                    ActionResult               result       = new ActionResult();
                    List <HBActivationRequest> hBActivation = new List <HBActivationRequest>();
                    HBApplicationOrder         order        = new HBApplicationOrder()
                    {
                        Source = SourceType.MobileBanking
                    };
                    HBActivationOrder      hBActivationOrder = new HBActivationOrder();
                    List <HBToken>         hBTokens          = new List <HBToken>();
                    HBToken                hBToken           = new HBToken();
                    HBApplication          hBApplication     = new HBApplication();
                    Task <List <HBToken> > hBTokensTask      = null;
                    Task <HBToken>         hBTokenTask       = null;
                    Task <HBApplication>   hBApplicationTask = null;
                    ulong id = _xBInfoService.GetLastKeyNumber(22000, 74);
                    AuthorizedCustomer authorizedCustomer = _cacheHelper.GetAuthorizedCustomer();
                    byte language = 1;
                    if (!string.IsNullOrEmpty(Request.Headers["language"]))
                    {
                        byte.TryParse(Request.Headers["language"], out language);
                    }

                    _xBService.Use(client =>
                    {
                        hBTokensTask = client.GetFilteredHBTokensAsync(authorizedCustomer.UserId, HBTokenQuality.NotDefined);
                    });
                    _xBService.Use(client =>
                    {
                        hBTokenTask = client.GetHBTokenWithSerialNumberAsync(request.TokenSerial);
                    });
                    _xBService.Use(client =>
                    {
                        hBApplicationTask = client.GetHBApplicationAsync();
                    });
                    hBTokens      = await hBTokensTask;
                    hBApplication = await hBApplicationTask;
                    hBToken       = await hBTokenTask;
                    oldDayLimit   = (hBToken?.DayLimit ?? 0) != 0 ? hBToken.DayLimit : 400000;
                    oldTransLimit = (hBToken?.TransLimit ?? 0) != 0 ? hBToken.TransLimit : 400000;
                    if (authorizedCustomer.TypeOfClient != 6 && hBTokens.All(x => x.TokenType == HBTokenTypes.Token) && hBApplication?.ContractDate < new DateTime(2015, 7, 25)) // Ն-19051
                    {
                        response.ResultCode  = ResultCodes.validationError;
                        response.Description = (Languages)language == Languages.hy ? "Փոխարինման հայտը հնարավոր չէ ուղարկել: Խնդրում ենք դիմել Բանկ:" : "Can't send replacement request. Please contact the Bank.";
                        return(ResponseExtensions.ToHttpResponse(response));
                    }
                    if (hBToken == null)
                    {
                        result.ResultCode    = ResultCode.ValidationError;
                        response.Description = (Languages)language == Languages.hy ? "Տվյալ համարով տոկեն գոյություն չունի։" : "Token not exist.";
                        return(ResponseExtensions.ToHttpResponse(response));
                    }
                    HBServletRequestOrder hBServletRequestOrder = new HBServletRequestOrder
                    {
                        RegistrationDate = DateTime.Now,
                        OperationDate    = _xBService.GetCurrentOperDay(),
                        ServletAction    = HBServletAction.DeactivateToken,
                        Type             = XBS.OrderType.HBServletRequestTokenDeactivationOrder,
                        SubType          = 1,
                        CustomerNumber   = authorizedCustomer.CustomerNumber,
                        ServletRequest   = null,
                        Source           = SourceType.MobileBanking,
                        HBtoken          = hBToken,
                        FilialCode       = 22000
                    };
                    ActionResult saveActionResult = _xBService.SaveAndApproveTokenOrder(hBServletRequestOrder);
                    if (saveActionResult.ResultCode == (ResultCode)ResultCodes.normal)
                    {
                        result = _xBService.SaveAndApproveHBApplicationReplacmentOrder(order, ref hBToken, id, authorizedCustomer.UserId, request.TokenSerial, oldDayLimit, oldTransLimit);
                        if (result.ResultCode == (ResultCode)ResultCodes.normal)
                        {
                            hBServletRequestOrder.RegistrationDate = DateTime.Now;
                            hBServletRequestOrder.OperationDate    = _xBService.GetCurrentOperDay();
                            hBServletRequestOrder.ServletAction    = HBServletAction.ActivateToken;
                            hBServletRequestOrder.Type             = OrderType.HBServletRequestTokenActivationOrder;
                            hBServletRequestOrder.SubType          = 1;
                            hBServletRequestOrder.Source           = SourceType.MobileBanking;
                            hBServletRequestOrder.CustomerNumber   = authorizedCustomer.CustomerNumber;
                            hBServletRequestOrder.PhoneNumber      = GetCustomerRegPhone(authorizedCustomer.CustomerNumber);
                            hBServletRequestOrder.ServletRequest   = null;
                            hBServletRequestOrder.HBtoken          = new HBToken
                            {
                                TokenNumber  = hBToken.TokenNumber,
                                DayLimit     = oldDayLimit,
                                TransLimit   = oldTransLimit,
                                ID           = hBToken.ID,
                                GID          = hBToken.GID,
                                TokenType    = hBToken.TokenType,
                                HBUser       = hBToken.HBUser,
                                IsRegistered = true
                            };
                            hBServletRequestOrder.FilialCode = 22000;

                            ActionResult saveTokenResult = _xBService.SaveAndApproveTokenOrder(hBServletRequestOrder);
                            if ((saveTokenResult.ResultCode == ResultCode.DoneAndReturnedValues || saveTokenResult.ResultCode == ResultCode.Normal)) //եթե հին մոբայլի user -  ը (iscas == false)  ստանում է նոր տոկեն աֆտոմատ սարքում ենք նոր մոբայլի user
                            {
                                response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveTokenResult.ResultCode);
                                response.Result      = saveTokenResult.Id;
                                response.Description = (Languages)language == Languages.hy ? "Ակտիվացման կոդը ուղարկվել է Ձեր էլ. փոստին, իսկ PIN կոդը կստանանք SMS-ի տեսքով:" : "The activation code was sent to your email. PIN code was sent by SMS.";
                            }
                            else
                            {
                                response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(result.ResultCode);
                                response.Result      = result.Id;
                                response.Description = _xBService.GetTerm(saveTokenResult.Errors[0].Code, null, (Languages)language);
                            }
                        }
                        else
                        {
                            response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(result.ResultCode);
                            response.Result      = result.Id;
                            response.Description = _xBService.GetTerm(result.Errors[0].Code, null, (Languages)language);
                        }
                    }
                    else
                    {
                        response.ResultCode  = ResultCodeFormatter.FromPersonalAccountSecurityService(saveActionResult.ResultCode);
                        response.Result      = saveActionResult.Id;
                        response.Description = _xBService.GetTerm(saveActionResult.Errors[0].Code, null, (Languages)language);
                    }
                    return(ResponseExtensions.ToHttpResponse(response));
                }
            }
            else
            {
                return(ValidationError.GetValidationErrorResponse(ModelState));
            }
        }
        public IActionResult GetIBankingHomePage()
        {
            if (ModelState.IsValid)
            {
                var response = new SingleResponse <IBankingHomePage>()
                {
                    ResultCode = ResultCodes.normal
                };
                var        result        = _xbService.GetIBankingHomePage();
                SourceType sourceType    = _cacheHelper.GetSourceType();
                int        productsCount = 0;
                if (sourceType == SourceType.MobileBanking)
                {
                    productsCount = 1;
                }


                if (result.Loans.Content != null && result.Loans.Content.Count > 0)
                {
                    result.Loans.Content.RemoveAll(m => m.Quality == 10 && !m.Is_24_7);
                }


                if (result.Accounts.Content != null && result.Accounts.Content.Count > 0)
                {
                    Parallel.ForEach(result.Accounts.Content, x => {
                        x.DigitalAvailabelBanlanaceAMD = _xbService.GetLastExchangeRate(x.Currency, 2, 2) * x.AvailableBalance;
                    });
                    if (sourceType != SourceType.MobileBanking)
                    {
                        productsCount = result.Accounts.Content.Count;
                    }
                    result.Accounts.Content = result.Accounts.Content.OrderByDescending(x => x.DigitalAvailabelBanlanaceAMD).Take(productsCount).ToList();
                }

                if (result.Cards.Content != null && result.Cards.Content.Count > 0)
                {
                    result.Cards.Content.RemoveAll(x => x.SupplementaryType != SupplementaryType.Main);
                    foreach (var item in result.Cards.Content)
                    {
                        item.ArCaBalance             = _xbService.GetArcaBalance(item.CardNumber);
                        item.CardAccount.ArcaBalance = item.ArCaBalance;
                    }


                    Parallel.ForEach(result.Cards.Content, x =>
                    {
                        if (x.ArCaBalance.HasValue)
                        {
                            x.DigitalAvailabelBanlanaceAMD = _xbService.GetLastExchangeRate(x.Currency, 2, 2) * x.ArCaBalance.Value;
                        }
                        else
                        {
                            x.DigitalAvailabelBanlanaceAMD = null;
                        }
                    });

                    if (sourceType != SourceType.MobileBanking)
                    {
                        productsCount = result.Cards.Content.Count;
                    }
                    result.Cards.Content = result.Cards.Content.OrderByDescending(x => x.DigitalAvailabelBanlanaceAMD).Take(productsCount).ToList();
                }

                if (result.Deposits.Content != null && result.Deposits.Content.Count > 0)
                {
                    Parallel.ForEach(result.Deposits.Content, x => {
                        x.DigitalAvailabelBanlanaceAMD = _xbService.GetLastExchangeRate(x.Currency, 2, 2) * x.Balance;
                    });
                    if (sourceType != SourceType.MobileBanking)
                    {
                        productsCount = result.Deposits.Content.Count;
                    }
                    result.Deposits.Content = result.Deposits.Content.OrderByDescending(x => x.DigitalAvailabelBanlanaceAMD).Take(productsCount).ToList();
                }

                if (result.Loans.Content != null && result.Loans.Content.Count > 0)
                {
                    foreach (Loan loan in result.Loans.Content)
                    {
                        if (loan.ContractDate != null)
                        {
                            loan.StartDate = loan.ContractDate ?? loan.StartDate;
                        }

                        if (loan.Is_24_7)
                        {
                            loan.CurrentCapital = loan.ContractAmount;
                        }
                    }
                    if (sourceType != SourceType.MobileBanking)
                    {
                        productsCount = result.Loans.Content.Count;
                    }
                    result.Loans.Content = result.Loans.Content.OrderByDescending(x => x.NextRepayment.RepaymentDate).Take(productsCount).ToList();
                }
                response.Result = result;
                return(ResponseExtensions.ToHttpResponse(response));
            }
            else
            {
                return(ValidationError.GetValidationErrorResponse(ModelState));
            }
        }
        public IActionResult GetCurrentAccountTarriffs()
        {
            if (ModelState.IsValid)
            {
                SingleResponse <string> response = new SingleResponse <string>();
                var    language = _cacheHelper.GetLanguage();
                string HTMLCode = string.Empty;
                if (language == 1)
                {
                    HTMLCode = @"<!DOCTYPE html>
                                    <html>
                                    <head>
                                        <meta charset=" + "utf-8" + @" />
                                         <title></title>
                                    </head>
                                    <body>
                                        <div> 
                                         <b>Ընթացիկ հաշվի սպասարկման միջնորդավճար</b>
                                            <p>300 ՀՀ դրամ ամսական – եթե ամսվա միջին օրական մնացորդը բոլոր ընթացիկ և ավանդային հաշիվների գծով փոքր  է 20,000  ՀՀ դրամից ռեզիդենտ հաճախորդների դեպքում կամ 50,000  ՀՀ դրամից` ոչ ռեզիդենտ հաճախորդների դեպքում:</p>
                                            <p>Անվճար - ամսվա միջին օրական մնացորդը բոլոր ընթացիկ և ավանդային հաշիվների գծով մեծ կամ հավասար է վերոնշյալ շեմին:</p>
                                            <p><b>Կանխիկացում</b></p>
                                            <ul>
                                                <li>Անվճար- Հաշվից կանխիկացման միջնորդավճար կանխիկ մուտքի դեպքում</li>
                                                <li><p>0.3% (նվազագույնը 200 AMD) -Հաշվից կանխիկացման միջնորդավճար անկանխիկ մուտքի դեպքում (ՀՀ դրամով հաշիվներ)</p></li>
                                                <li><p>0.5% (նվազագույնը 1000 ՀՀ դրամ)- Հաշվից կանխիկացման միջնորդավճար անկանխիկ մուտքի դեպքում (արտարժութային հաշիվներ)</p></li>
                                            </ul>
                                        </div>
                                        <br>
                                       <div>
                                        <p>Պայմաններին առավել մանրամասն ծանոթանալու համար կարող եք այցելել <a href=" + @"https://www.acba.am/hy/individuals/Manage-accounts/current-account" + @" target=" + @"_blank" + @">acba.am</a></p>
                                     </div>
                                    </body>
                                    </html>";
                }
                else
                {
                    HTMLCode = @"<!DOCTYPE html>
                                    <html>
                                    <head>
                                        <meta charset=" + "utf-8" + @" />
                                         <title></title>
                                    </head>
                                    <body>
                                        <div> 
                                         <b>Current account service fee</b>
                                            <p>300 AMD monthly- if the average daily balance for all current and deposit accounts is less than 20,000 AMD for resident customers or 50,000 AMD for non-resident customers.</p>
                                            <p>Free of charge- if the average daily balance for all current and deposit accounts is equal or more than the amount mentioned above.</p>
                                            <p><b>Cash withdrawal</b></p>
                                            <ul>
                                                <li>Free of charge - in case if account was replenished in cash method</li>
                                                <li><p>0.3% (minimum 200 AMD)- in case if account was replenished in non-cash method (AMD currency accounts)</p></li>
                                                <li><p>0.5% (minimum 1000 AMD)- )- in case if account was replenished in non-cash method (foreign currency accounts)</p></li>
                                            </ul>
                                        </div>
                                        <br>
                                       <div>
                                        <p>For more information you can visit <a href=" + @"https://www.acba.am/hy/individuals/Manage-accounts/current-account" + @" target=" + @"_blank" + @">acba.am</a></p>
                                     </div>
                                    </body>
                                    </html>";
                }

                response.Result     = HTMLCode;
                response.ResultCode = ResultCodes.normal;
                return(ResponseExtensions.ToHttpResponse(response));
            }
            else
            {
                return(ValidationError.GetValidationErrorResponse(ModelState));
            }
        }
Example #4
0
        public IActionResult GetCustomerInfoForAuthentication([FromBody] CustomerAuthenticationRequest request)
        {
            if (ModelState.IsValid)
            {
                var response = new SingleResponse <CustomerInfoForAuthentication>()
                {
                    Result = new CustomerInfoForAuthentication()
                };
                response.ResultCode = ResultCodes.normal;

                //Եթե նշված չէ կամ սխալ է փաստաթղթի տեսակը։
                if (request.DocumentType != DocumentType.IdentifierCard && request.DocumentType != DocumentType.RApassport && request.DocumentType != DocumentType.BiometricPassport)
                {
                    response.ResultCode  = ResultCodes.validationError;
                    response.Description = "Incorect request data";
                    response.Result      = null;
                    return(ResponseExtensions.ToHttpResponse(response));
                }

                CustomerIdentificationResult identificationResult = null;
                var notIdentifiedCustomer = new PhysicalCustomer()
                {
                    person = new Person()
                    {
                        documentList = new List <CustomerDocument>()
                    }
                };
                notIdentifiedCustomer.person.documentList.Add(new CustomerDocument()
                {
                    documentGroup = new KeyValue()
                    {
                        key = 1
                    }, documentType = new KeyValue()
                    {
                        key = (short)request.DocumentType
                    }, documentNumber = request.DocumentValue
                });

                try
                {
                    identificationResult = _acbaOperationService.IdentifyCustomer(notIdentifiedCustomer);
                }
                catch
                {
                    response.Result.ProcessResultCode = CustomerAuthenticationResult.NonCustomer;
                    response.Result.TypeOfDocument    = CustomerAuthenticationInfoType.Empty;
                    response.Result.ResultDescription = "Հնարավոր չէ կատարել նույնականացում։";
                    return(ResponseExtensions.ToHttpResponse(response));
                }

                bool hasCustomerOnlineBanking = _xbService.HasCustomerOnlineBanking(identificationResult.CustomerNumber);

                if (hasCustomerOnlineBanking)
                {
                    response.Result.ProcessResultCode = CustomerAuthenticationResult.CustomerWithOnlineBanking;
                    response.Result.TypeOfDocument    = CustomerAuthenticationInfoType.Empty;
                    response.Result.CustomerNumber    = identificationResult.CustomerNumber;
                    response.Result.ResultDescription = "Հաճախորդը ունի օնլայն բանկինգ։";
                    return(ResponseExtensions.ToHttpResponse(response));
                }

                response.Result.CustomerNumber    = identificationResult.CustomerNumber;
                response.Result.ProcessResultCode = CustomerAuthenticationResult.CustomerWithAttachment;
                response.Result.ResultDescription = "Հաճախորդը գտնված է։";

                //Հաճախորդի անձը հաստատող փաստաթղթեր
                var documents = _acbaOperationService.GetCustomerDocumentList((uint)_acbaOperationService.GetIdentityId(identificationResult.CustomerNumber)).FindAll(doc => doc.documentGroup.key == 1);
                documents.Sort((x, y) => y.id.CompareTo(x.id));

                foreach (var document in documents)
                {
                    var attachments = _acbaOperationService.GetAttachmentDocumentList(Convert.ToUInt64(document.id));
                    if (attachments.Count != 0)
                    {
                        attachments.Sort((x, y) => x.PageNumber.CompareTo(y.PageNumber));
                        attachments.ForEach(item =>
                        {
                            response.Result.Data.Add(new KeyValuePair <string, string>(Convert.ToBase64String(_acbaOperationService.GetOneAttachment(item.id)), ((TypeOfAttachments)item.FileExtension).ToString()));
                        });
                        response.Result.TypeOfDocument = CustomerAuthenticationInfoType.Document;
                        break;
                    }
                }

                if (response.Result.Data.Count == 0)
                {
                    response.Result.ProcessResultCode = CustomerAuthenticationResult.CustomerWithNoAttachments;
                    response.Result.TypeOfDocument    = CustomerAuthenticationInfoType.Empty;
                    response.Result.ResultDescription = "Առկա չէ հաճախորդին կցված փաստաթուղթ։";
                }

                return(ResponseExtensions.ToHttpResponse(response));
            }
            else
            {
                return(ValidationError.GetValidationErrorResponse(ModelState));
            }
        }
Example #5
0
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            Response           response           = new Response();
            AuthorizedCustomer authorizedCustomer = new AuthorizedCustomer();
            string             sessionId          = "";
            byte       language = 0;
            string     ipAddress;
            SourceType sourceType = SourceType.NotSpecified;

            if (context.Filters.Any(item => item is IAllowAnonymousFilter))
            {
                return;
            }

            //Սեսիայի նունականացման համար
            if (!string.IsNullOrEmpty(context.HttpContext.Request.Headers["SessionId"]))
            {
                sessionId = context.HttpContext.Request.Headers["SessionId"];
            }

            //Լեզու
            if (!string.IsNullOrEmpty(context.HttpContext.Request.Headers["language"]))
            {
                byte.TryParse(context.HttpContext.Request.Headers["language"], out language);
            }

            //Տվյալների մուտքագրման աղբյուր
            if (!string.IsNullOrEmpty(context.HttpContext.Request.Headers["SourceType"]))
            {
                SourceType.TryParse(context.HttpContext.Request.Headers["SourceType"], out sourceType);
            }

            //IP հասցե
            ipAddress = context.HttpContext.Connection.RemoteIpAddress.ToString();

            if (sessionId == "ba0f312d-8487-445e-aee2-d5877ac1d4de" && Convert.ToBoolean(_config["TestVersion"]))
            {
                authorizedCustomer = _xbService.GetTestMobileBankingUser();
                authorizedCustomer.CustomerNumber = Convert.ToUInt64(context.HttpContext.Request.Headers["customerNumber"]);
                authorizedCustomer.IsEmployee     = _xbService.IsEmployee(authorizedCustomer.CustomerNumber);
                if (authorizedCustomer.CustomerNumber == 0)
                {
                    authorizedCustomer.CustomerNumber = 1111;
                }

                _cache.Set(sessionId + "_ClientIp", "169.169.169.166");
                _cache.Set(sessionId + "_Language", language);
                _cache.Set(sessionId + "_authorizedCustomer", authorizedCustomer);
                _cache.Set(sessionId + "_SourceType", sourceType);
                authorizedCustomer.UserId = 55;
                if (authorizedCustomer.LimitedAccess != 0)
                {
                    _cache.Set(sessionId + "_userProductPermission", _xbService.GetUserProductsPermissions(authorizedCustomer.UserName));
                }
            }
            else
            {
                if (sessionId != "")
                {
                    OnlineBankingUser onlineUserData = new OnlineBankingUser();
                    onlineUserData = _xbSecurityService.CheckAuthorization(sessionId, language);

                    if (onlineUserData.AuthorizationResult.IsAuthorized)
                    {
                        authorizedCustomer.CustomerNumber         = ulong.Parse(onlineUserData.CustomerNumber);
                        authorizedCustomer.UserName               = onlineUserData.UserName;
                        authorizedCustomer.UserId                 = onlineUserData.UserID;
                        authorizedCustomer.DailyTransactionsLimit = onlineUserData.DailyTransactionsLimit;
                        authorizedCustomer.OneTransactionLimit    = onlineUserData.OneTransactionLimit;
                        _cache.Set(sessionId + "_ClientIp", ipAddress);
                        authorizedCustomer.ApprovementScheme = short.Parse(onlineUserData.ApprovementScheme.ToString());
                        authorizedCustomer.LimitedAccess     = onlineUserData.LimitedAccess;
                        authorizedCustomer.TypeOfClient      = onlineUserData.TypeOfClient;
                        authorizedCustomer.Permission        = onlineUserData.Permission;
                        authorizedCustomer.SecondConfirm     = onlineUserData.SecondConfirm;
                        authorizedCustomer.IsLastConfirmer   = onlineUserData.IsLastConfirmer;
                        authorizedCustomer.BranchCode        = onlineUserData.BranchCode;
                        authorizedCustomer.IsEmployee        = _xbService.IsEmployee(authorizedCustomer.CustomerNumber);

                        _cache.Set(sessionId + "_Language", language);
                        if (authorizedCustomer.LimitedAccess != 0)
                        {
                            List <HBProductPermission> _userProductPermission = _xbService.GetUserProductsPermissions(authorizedCustomer.UserName);
                            _cache.Set(sessionId + "_userProductPermission", _xbService.GetUserProductsPermissions(authorizedCustomer.UserName));
                        }
                        _cache.Set(sessionId + "_authorizedCustomer", authorizedCustomer);
                        _cache.Set(sessionId + "_SourceType", sourceType);
                    }
                    else
                    {
                        response.ResultCode = ResultCodes.notAuthorized;
                        context.Result      = ResponseExtensions.ToHttpResponse(response);
                    }
                }
                else
                {
                    response.ResultCode = ResultCodes.notAuthorized;
                    context.Result      = ResponseExtensions.ToHttpResponse(response);
                }
            }
        }