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