public IActionResult ApproveLoanProductOrder(ApproveLoanProductOrderRequest request) { if (ModelState.IsValid) { var response = new SingleResponse <long>() { ResultCode = ResultCodes.normal }; LoanProductOrder order = new LoanProductOrder(); AuthorizedCustomer authorizedCustomer = _cacheHelper.GetAuthorizedCustomer(); if (request.ProductType == 1) { order = _xbService.GetLoanOrder(request.Id); } if (request.ProductType == 2) { order = _xbService.GetCreditLineOrder(request.Id); } if (request.ProductType == 3) { order = _xbService.GetCreditLineOrder(request.Id); } ActionResult saveResult = _xbService.ApproveLoanProductOrder(order); response.ResultCode = ResultCodeFormatter.FromPersonalAccountSecurityService(saveResult.ResultCode); response.Result = saveResult.Id; response.Description = utils.GetActionResultErrors(saveResult.Errors); return(ResponseExtensions.ToHttpResponse(response)); } else { return(ValidationError.GetValidationErrorResponse(ModelState)); } }
public override void OnActionExecuting(ActionExecutingContext context) { ApproveIdRequest request = null; ProductIdApproveRequest productIdRequest = null; ApproveLoanProductOrderRequest approveLoan = null; ListDocIdRequest listRequest = null; Dictionary <long, ApprovalOrderType> Types = new Dictionary <long, ApprovalOrderType>(); string sessionId = ""; string otp = ""; byte language = 0; bool isSigned = false; string ipAddress = ""; Dictionary <string, string> signData = null; SourceType sourceType = SourceType.NotSpecified; // հայտի մուտքագրման աղբյուրի ստացում Header-ից if (!string.IsNullOrEmpty(context.HttpContext.Request.Headers["SourceType"])) { Enum.TryParse(context.HttpContext.Request.Headers["SourceType"], out sourceType); } // Սեսիայի ստացում Header-ից if (!string.IsNullOrEmpty(context.HttpContext.Request.Headers["SessionId"])) { sessionId = context.HttpContext.Request.Headers["SessionId"]; } // Լեզվի ստացում Header-ից if (!string.IsNullOrEmpty(context.HttpContext.Request.Headers["language"])) { byte.TryParse(context.HttpContext.Request.Headers["language"], out language); } // IP հասցեի ստացում if (!string.IsNullOrEmpty(context.HttpContext.Request.Headers["LocalIPAddress"])) { ipAddress = context.HttpContext.Request.Headers["LocalIPAddress"]; } // Փոխանցված պարամետրի ստացում var argument = context.ActionArguments.Values.First(); //Approve մեթոդների համար if (argument is ApproveIdRequest) { request = argument as ApproveIdRequest; Types.Add(request.Id, _type); otp = request.OTP; } //ApproveOrders մեթոդի համար else if (argument is ListDocIdRequest) { listRequest = argument as ListDocIdRequest; foreach (var item in listRequest.ListDocId) { Types.Add(item, GetOrderType(_xbService.GetDocumentType(item))); } otp = listRequest.OTP; } else if (argument is ProductIdApproveRequest) { productIdRequest = argument as ProductIdApproveRequest; Types.Add((long)productIdRequest.ProductId, _type); otp = productIdRequest.OTP; } else if (argument is ApproveLoanProductOrderRequest) { approveLoan = argument as ApproveLoanProductOrderRequest; Types.Add(approveLoan.Id, _type); otp = approveLoan.OTP; } //Հայտի ստեղծում, քեշավորում, և Sign լինող պարամետրերի փոխանցում foreach (var x in Types) { switch (x.Value) { case ApprovalOrderType.PaymentOrder: { PaymentOrder order = (PaymentOrder)_cacheHelper.SetApprovalOrder(_xbService.GetPaymentOrder(x.Key)); CollectParameters(order.Id.ToString(), order.DebitAccount.AccountNumber.ToString(), order.ReceiverAccount.AccountNumber.ToString(), Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.PlasticCardOrder: { PlasticCardOrder order = (PlasticCardOrder)_cacheHelper.SetApprovalOrder(_xbService.GetPlasticCardOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.PlasticCard.Currency, ipAddress); } break; case ApprovalOrderType.UtilityPaymentOrder: { UtilityPaymentOrder order = (UtilityPaymentOrder)_cacheHelper.SetApprovalOrder(_xbService.GetUtilityPaymentOrder(x.Key)); CollectParameters(order.Id.ToString(), order.DebitAccount.AccountNumber.ToString(), "0", Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.MatureOrder: { MatureOrder order = (MatureOrder)_cacheHelper.SetApprovalOrder(_xbService.GetMatureOrder(x.Key)); CollectParameters(order.Id.ToString(), order.Account.AccountNumber.ToString(), "0", Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.ReferenceOrder: { ReferenceOrder order = (ReferenceOrder)_cacheHelper.SetApprovalOrder(_xbService.GetReferenceOrder(x.Key)); if (order.FeeAccount != null) { CollectParameters(order.Id.ToString(), order.FeeAccount.AccountNumber.ToString(), "0", Math.Truncate(order.Amount).ToString(), ipAddress); } else { CollectParameters(order.Id.ToString(), "0", "0", Math.Truncate(order.Amount).ToString(), ipAddress); } } break; case ApprovalOrderType.LoanProductOrder: { LoanProductOrder order = null; var type = _xbService.GetDocumentType((int)x.Key); switch (type) { case OrderType.CreditSecureDeposit: order = (LoanProductOrder)_cacheHelper.SetApprovalOrder(_xbService.GetLoanOrder(x.Key)); break; default: order = (LoanProductOrder)_cacheHelper.SetApprovalOrder(_xbService.GetCreditLineOrder(x.Key)); break; } CollectParameters(order.Id.ToString(), "0", "0", Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.ReceivedFastTransferPaymentOrder: { ReceivedFastTransferPaymentOrder order = (ReceivedFastTransferPaymentOrder)_cacheHelper.SetApprovalOrder(_xbService.GetReceivedFastTransferPaymentOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", order.ReceiverAccount.AccountNumber.ToString(), Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.AccountClosingOrder: { AccountClosingOrder order = (AccountClosingOrder)_cacheHelper.SetApprovalOrder(_xbService.GetAccountClosingOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", "0", ipAddress); } break; case ApprovalOrderType.SwiftCopyOrder: { SwiftCopyOrder order = (SwiftCopyOrder)_cacheHelper.SetApprovalOrder(_xbService.GetSwiftCopyOrder(x.Key)); if (order.FeeAccount != null) { CollectParameters(order.Id.ToString(), order.FeeAccount.AccountNumber.ToString(), "0", Math.Truncate(order.Amount).ToString(), ipAddress); } else { CollectParameters(order.Id.ToString(), "0", "0", Math.Truncate(order.Amount).ToString(), ipAddress); } } break; case ApprovalOrderType.CredentialOrder: { CredentialOrder order = (CredentialOrder)_cacheHelper.SetApprovalOrder(_xbService.GetCredentialOrder(x.Key)); if (order.Fees != null && order.Fees[0] != null && order.Fees[0].Account != null) { CollectParameters(order.Id.ToString(), order.Fees[0].Account.AccountNumber.ToString(), "0", Math.Truncate(order.Amount).ToString(), ipAddress); } else { CollectParameters(order.Id.ToString(), "0", "0", Math.Truncate(order.Amount).ToString(), ipAddress); } } break; case ApprovalOrderType.DepositOrder: { DepositOrder order = (DepositOrder)_cacheHelper.SetApprovalOrder(_xbService.GetDepositorder(x.Key)); CollectParameters(order.Id.ToString(), order.DebitAccount.AccountNumber.ToString(), "0", Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.AccountOrder: { AccountOrder order = (AccountOrder)_cacheHelper.SetApprovalOrder(_xbService.GetAccountOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.Currency, ipAddress); } break; case ApprovalOrderType.CashOrder: { CashOrder order = (CashOrder)_cacheHelper.SetApprovalOrder(_xbService.GetCashOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.CreditLineTerminationOrder: { CreditLineTerminationOrder order = (CreditLineTerminationOrder)_cacheHelper.SetApprovalOrder(_xbService.GetCreditLineTerminationOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.Currency, ipAddress); } break; case ApprovalOrderType.CardClosingOrder: { CardClosingOrder order = (CardClosingOrder)_cacheHelper.SetApprovalOrder(_xbService.GetCardClosingOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.ProductId.ToString(), ipAddress); } break; case ApprovalOrderType.CustomerDataOrder: { CustomerDataOrder order = (CustomerDataOrder)_cacheHelper.SetApprovalOrder(_xbService.GetCustomerDataOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.Password, ipAddress); } break; case ApprovalOrderType.StatmentByEmailOrder: { StatmentByEmailOrder order = (StatmentByEmailOrder)_cacheHelper.SetApprovalOrder(_xbService.GetStatmentByEmailOrder(x.Key)); } break; case ApprovalOrderType.DepositTerminationOrder: { DepositTerminationOrder order = (DepositTerminationOrder)_cacheHelper.SetApprovalOrder(_xbService.GetDepositTerminationOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.ProductId.ToString(), ipAddress); } break; case ApprovalOrderType.ReestrTransferOrder: { ReestrTransferOrder order = (ReestrTransferOrder)_cacheHelper.SetApprovalOrder(_xbService.GetReestrTransferOrder(x.Key)); CollectParameters(order.Id.ToString(), order.DebitAccount.AccountNumber.ToString(), "0", Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.ArcaCardsTransactionOrder: { ArcaCardsTransactionOrder order = (ArcaCardsTransactionOrder)_cacheHelper.SetApprovalOrder(_xbService.GetArcaCardsTransactionOrder(x.Key)); CollectParameters(order.Id.ToString(), order.CardNumber.Substring(0, 10), "0", "0", ipAddress); } break; case ApprovalOrderType.CardToCardOrder: { CardToCardOrder order = (CardToCardOrder)_cacheHelper.SetApprovalOrder(_xbService.GetCardToCardOrder(x.Key)); CollectParameters(order.Id.ToString(), order.DebitCardNumber.Substring(0, 10), order.CreditCardNumber, Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.CardLimitChangeOrder: { CardLimitChangeOrder order = (CardLimitChangeOrder)_cacheHelper.SetApprovalOrder(_xbService.GetCardLimitChangeOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", Math.Truncate(order.Limits[0].LimitValue).ToString(), ipAddress); } break; case ApprovalOrderType.PeriodicPaymentOrder: { PaymentOrder order = (PaymentOrder)_cacheHelper.SetApprovalOrder(_xbService.GetPaymentOrder(x.Key)); CollectParameters(order.Id.ToString(), order.DebitAccount.AccountNumber.ToString(), "0", Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.InternationalPaymentOrder: { InternationalPaymentOrder order = (InternationalPaymentOrder)_cacheHelper.SetApprovalOrder(_xbService.GetInternationalPaymentOrder(x.Key)); CollectParameters(order.Id.ToString(), order.DebitAccount.AccountNumber.ToString(), order.ReceiverAccount.AccountNumber.ToString(), Math.Truncate(order.Amount).ToString(), ipAddress); } break; case ApprovalOrderType.AccountReOpenOrder: { AccountReOpenOrder order = (AccountReOpenOrder)_cacheHelper.SetApprovalOrder(_xbService.GetAccountReOpenOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", "0", ipAddress); } break; case ApprovalOrderType.PlasticCardSmsServiceOrder: { PlasticCardSMSServiceOrder order = (PlasticCardSMSServiceOrder)_cacheHelper.SetApprovalOrder(_xbService.GetPlasticCardSMSServiceOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.ProductID.ToString(), ipAddress); } break; case ApprovalOrderType.RemovalOrder: { RemovalOrder order = context.ActionArguments.Values.First() as RemovalOrder; CollectParameters("0", order.RemovingOrderId.ToString(), "0", "0", ipAddress); } break; case ApprovalOrderType.PeriodicTerminationOrder: { PeriodicTerminationOrder order = (PeriodicTerminationOrder)_cacheHelper.SetApprovalOrder(_xbService.GetPeriodicTerminationOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.ProductId.ToString(), ipAddress); } break; case ApprovalOrderType.PeriodicDataChangeOrder: { PeriodicTransferDataChangeOrder order = (PeriodicTransferDataChangeOrder)_cacheHelper.SetApprovalOrder(_xbService.GetPeriodicDataChangeOrder(x.Key)); CollectParameters(order.Id.ToString(), "0", "0", order.ProductId.ToString(), ipAddress); } break; case ApprovalOrderType.CardActivationOrder: { CollectParameters(x.Key.ToString(), "0", "0", "0", ipAddress); } break; default: break; } } ; //CheckSign Filter-ն անհրաժեշտ է աշխատի միայն sourceType-ը 5-ի՝ MobileBanking-ի դեպքում if (sourceType != SourceType.MobileBanking) { return; } else { signData = this.GenerateSignData(TransactionID, SenderAccount, RecepientAccount, Amount, IpAddress); } isSigned = _xbSecurityService.SingData(sessionId, otp, signData, language); //թեստային միջավայրի համար if ((sessionId == "ba0f312d-8487-445e-aee2-d5877ac1d4de" || otp == "0123456") && Convert.ToBoolean(_config["TestVersion"])) { return; } if (!isSigned) { Response response = new Response(); response.ResultCode = ResultCodes.validationError; response.Description = (Languages)language == Languages.hy ? "Սխալ PIN կոդ։" : "Incorrect PIN code."; context.Result = ResponseExtensions.ToHttpResponse(response); } }
public string PrintFastOverdraftContract(long docId, ulong customerNumber, bool fromApprove = false) { string result = null; LoanProductOrder productOrder = _xBService.GetCreditLineOrder(docId); Card card = _xBService.GetCardWithOutBallance(productOrder.ProductAccount.AccountNumber); Dictionary <string, string> contractInfo = _xBService.GetDepositCreditLineContractInfo((int)docId).ToDictionary(x => x.Key, x => x.Value); CreditLinePrecontractData precontractData = _xBService.GetCreditLinePrecontractData(productOrder.StartDate, productOrder.EndDate, productOrder.InterestRate, 0, card.CardNumber, productOrder.Currency, productOrder.Amount, 8); short filialCode = _xBService.GetCustomerFilial(); double penaltyRate = _xBInfoService.GetPenaltyRateOfLoans(54, productOrder.StartDate); string contractName = "CreditLineContract"; Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add(key: "customerNumberHB", value: customerNumber.ToString()); Contract contract = null; if (fromApprove == true) { contract = new Contract(); parameters.Add(key: "attachFile", value: "1"); contract.AttachDocType = 12; contract.AttachFile = 1; contract.ContractName = contractName; contract.DocID = (int)docId; contract.ParametersList = new List <ContractServiceRef.StringKeyValue>(); } parameters.Add(key: "appID", value: "0"); parameters.Add(key: "bln_with_enddate", value: "True"); parameters.Add(key: "visaNumberHB", value: card.CardNumber); parameters.Add(key: "HbDocID", value: docId.ToString()); parameters.Add(key: "dateOfBeginningHB", value: productOrder.StartDate.ToString("dd/MMM/yy")); parameters.Add(key: "currencyHB", value: productOrder.Currency); parameters.Add(key: "penaltyAddPercentHB", value: penaltyRate.ToString()); parameters.Add(key: "startCapitalHB", value: productOrder.Amount.ToString()); parameters.Add(key: "clientTypeHB", value: ""); parameters.Add(key: "filialCodeHB", value: filialCode.ToString()); parameters.Add(key: "creditLineTypeHB", value: "54"); parameters.Add(key: "provisionNumberHB", value: "01"); parameters.Add(key: "interestRateHB", value: productOrder.InterestRate.ToString()); parameters.Add(key: "securityCodeHB", value: contractInfo["security_code_2"].ToString()); parameters.Add(key: "loanProvisionPercentHB", value: "0"); parameters.Add(key: "interestRateFullHB", value: (precontractData.InterestRate / 100).ToString()); parameters.Add(key: "connectAccountFullNumberHB", value: productOrder.ProductAccount.AccountNumber); parameters.Add(key: "interestRateEffectiveWithoutAccountServiceFee", value: precontractData.InterestRateEffectiveWithoutAccountServiceFee.ToString()); parameters.Add(key: "dateOfNormalEndHB", value: productOrder.EndDate.ToString("dd/MMM/yy")); parameters.Add(key: "RepaymentKurs", value: contractInfo["repayment_kurs"].ToString() == null ? "0" : contractInfo["repayment_kurs"].ToString()); result = _contractService.RenderContract(contractName, parameters, "FastOverdraftContract.pdf", contract); //File.WriteAllBytes(@"C:\YourPDFLoan.pdf", result); return(result); }
public string PrintDepositCreditLineContract(long docId, ulong customerNumber, bool fromApprove = false) { string result = null; LoanProductOrder loanProductOrder = _xBService.GetCreditLineOrder(docId); Card card = _xBService.GetCardWithOutBallance(loanProductOrder.ProductAccount.AccountNumber); CreditLinePrecontractData preContractDate = _xBService.GetCreditLinePrecontractData(loanProductOrder.StartDate, (loanProductOrder.ProductType == 51 || loanProductOrder.ProductType == 50) ? loanProductOrder.ValidationDate.Value : loanProductOrder.EndDate, loanProductOrder.InterestRate, 0, card.CardNumber, loanProductOrder.Currency, loanProductOrder.Amount, 8); Dictionary <string, string> contractInfo = _xBService.GetDepositCreditLineContractInfo((int)docId).ToDictionary(x => x.Key, x => x.Value); short fillialCode = _xBService.GetCustomerFilial(); int cardType = _xBService.GetCardType(card.CardNumber); double kursForLoan = _xBService.GetCBKursForDate(loanProductOrder.StartDate, loanProductOrder.Currency); double kursForProvision = _xBService.GetCBKursForDate(loanProductOrder.StartDate, loanProductOrder.PledgeCurrency); double decreasingAmount = _xBService.GetCreditLineDecreasingAmount(loanProductOrder.Amount, loanProductOrder.Currency, loanProductOrder.StartDate, (loanProductOrder.ProductType == 51 || loanProductOrder.ProductType == 50) ? loanProductOrder.ValidationDate.Value : loanProductOrder.EndDate); double penaltyRate = _xBInfoService.GetPenaltyRateOfLoans(30, loanProductOrder.StartDate); string contractName = string.Empty; if (cardType != 40) { contractName = "CreditLineContract"; } else { contractName = "CreditLineAmex"; } Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add(key: "customerNumberHB", value: customerNumber.ToString()); Contract contract = null; if (fromApprove == true) { contract = new Contract(); parameters.Add(key: "attachFile", value: "1"); contract.AttachDocType = 12; contract.AttachFile = 1; contract.ContractName = contractName; contract.DocID = (int)docId; contract.ParametersList = new List <ContractServiceRef.StringKeyValue>(); } parameters.Add(key: "appID", value: "0"); parameters.Add(key: "bln_with_enddate", value: "True"); parameters.Add(key: "visaNumberHB", value: card.CardNumber); parameters.Add(key: "HbDocID", value: docId.ToString()); parameters.Add(key: "dateOfBeginningHB", value: loanProductOrder.StartDate.ToString("MM/dd/yyyy")); parameters.Add(key: "currencyHB", value: loanProductOrder.Currency); parameters.Add(key: "penaltyAddPercentHB", value: penaltyRate.ToString()); parameters.Add(key: "startCapitalHB", value: loanProductOrder.Amount.ToString()); parameters.Add(key: "provisionNumberHB", value: "01"); parameters.Add(key: "clientTypeHB", value: ""); parameters.Add(key: "filialCodeHB", value: fillialCode.ToString()); parameters.Add(key: "creditLineTypeHB", value: loanProductOrder.ProductType.ToString()); parameters.Add(key: "securityCodeHB", value: contractInfo["security_code_2"].ToString()); parameters.Add(key: "loanProvisionPercentHB", value: ((loanProductOrder.Amount * kursForLoan) / (loanProductOrder.ProvisionAmount * kursForProvision) * 100).ToString()); parameters.Add(key: "interestRateHB", value: loanProductOrder.InterestRate.ToString()); parameters.Add(key: "interestRateFullHB", value: (preContractDate.InterestRate / 100).ToString()); parameters.Add(key: "connectAccountFullNumberHB", value: loanProductOrder.ProductAccount.AccountNumber.ToString()); parameters.Add(key: "interestRateEffectiveWithoutAccountServiceFeeHB", value: preContractDate.InterestRateEffectiveWithoutAccountServiceFee.ToString()); if (cardType == 40) { parameters.Add(key: "contractPersonCountHB", value: "2"); } parameters.Add(key: "repaymentPercentHB", value: contractInfo["repayment_percent"].ToString()); parameters.Add(key: "RepaymentKurs", value: contractInfo["repayment_kurs"].ToString() == null ? "0" : contractInfo["repayment_kurs"].ToString()); parameters.Add(key: "decrAmountHB", value: loanProductOrder.ProductType == 50 ? decreasingAmount.ToString() : "0"); result = _contractService.RenderContract(contractName, parameters, contractName + ".pdf", contract); return(result); }