public IActionResult Settlement() { //Uri bbUri = new Uri("https://localhost:44305/api/Settlement"); Uri bbUri = new Uri("http://idtp-bangladeshbank-api.azurewebsites.net/api/Settlement"); List <TransactionRequestLog> logs = new List <TransactionRequestLog>(); List <ParticipantDebitCap> participants = new List <ParticipantDebitCap>(); var participantList = _businessLayer.GetAllParticipantDebitCaps().Where(x => x.SettlementStatus == false).ToList(); if (participantList.Count == 0) { TempData["TxSts"] = "Null"; return(RedirectToAction("Index", "Settlement")); } else { var responseResultFromBB = string.Empty; foreach (ParticipantDebitCap p in participantList) { TransactionRequestLog transactionRequestLog = new TransactionRequestLog(); TransactionRequestLog transactionRequestLogReceive = new TransactionRequestLog(); var bank = _businessLayer.GetBankById(p.Id); var sendingBankSwiftBic = bank.SwiftBic; var sendingBankCbaAcc = bank.CbaccountNo; var receiverBankSwiftBic = ""; var transactionId = ""; var receivingBankCbaAcc = ""; var SendingBankRoutingNo = ""; var ReceivingBankRoutingNo = ""; var narration = "Settlement"; string amount = Convert.ToString(p.CurrentNetDebitCap, new CultureInfo("en-US")); //var composer = new ISOComposer(); var pacs009xml = ISOComposer.GetDataForPacs009Single(sendingBankSwiftBic, receiverBankSwiftBic, transactionId, amount, SendingBankRoutingNo, sendingBankCbaAcc, ReceivingBankRoutingNo, receivingBankCbaAcc, narration); transactionRequestLog.RequestFrom = "IDTP"; transactionRequestLog.RequestTo = "Bangladesh Bank"; transactionRequestLog.RequestMessage = pacs009xml.InnerXml; transactionRequestLog.RequestTime = DateTime.Now; transactionRequestLog.EntityState = IDTPDomainModel.EntityState.Added; logs.Add(transactionRequestLog); responseResultFromBB = HttpClientHelper.Post(bbUri, pacs009xml.InnerXml); p.SettlementStatus = true; p.EntityState = IDTPDomainModel.EntityState.Modified; _businessLayer.UpdateParticipantDebitCap(p); transactionRequestLogReceive.RequestFrom = "Bangladesh Bank"; transactionRequestLogReceive.RequestTo = "IDTP"; transactionRequestLogReceive.RequestMessage = responseResultFromBB; transactionRequestLogReceive.RequestTime = DateTime.Now; transactionRequestLogReceive.EntityState = IDTPDomainModel.EntityState.Added; logs.Add(transactionRequestLogReceive); } _businessLayer.AddTransactionRequestLog(logs.ToArray()); XmlDocument doc = new XmlDocument(); DayEndTasks(); responseResultFromBB = responseResultFromBB.Replace("\\", "", StringComparison.CurrentCulture); responseResultFromBB = responseResultFromBB[1..^ 1];
public string TransferFund([FromBody] string xmlData) { // creating object of CultureInfo CultureInfo cultures = new CultureInfo("en-US"); try { var isSameBank = false; XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlData); #region xml validation for PACS.008 XMLValidator.ValidatePain008(doc); #endregion xml validation for PACS.008 #region data fetched from xml string txnId, amount, senderBIC, receiverBIC, senderAccNo, receiverAccNo, sendingBankRoutingNo, receivingBankRoutingNo, purpose = string.Empty; txnId = doc.GetElementsByTagName("TxId").Item(0).InnerText; amount = doc.GetElementsByTagName("IntrBkSttlmAmt").Item(0).InnerText; senderBIC = doc.GetElementsByTagName("BICFI").Item(0).InnerText; receiverBIC = doc.GetElementsByTagName("BICFI").Item(3).InnerText; senderAccNo = doc.GetElementsByTagName("Id").Item(0).InnerText; receiverAccNo = doc.GetElementsByTagName("Id").Item(8).InnerText; sendingBankRoutingNo = doc.GetElementsByTagName("Id").Item(2).InnerText; receivingBankRoutingNo = doc.GetElementsByTagName("Id").Item(5).InnerText; purpose = doc.GetElementsByTagName("Ustrd").Item(0).InnerText; DateTime txnDt = DateTime.Now; DateTime stlmntDt = DateTime.Now; #endregion #region data fetched from db for further operation var sender = _businessLayer.GetAllBankUsers().SingleOrDefault(m => m.AccountNumber == senderAccNo); var receiver = _businessLayer.GetAllBankUsers().SingleOrDefault(m => m.AccountNumber == receiverAccNo); var senderBank = _businessLayer.GetAllBanks().SingleOrDefault(m => m.SwiftBic == senderBIC); var receiverBank = _businessLayer.GetAllBanks().SingleOrDefault(m => m.SwiftBic == receiverBIC); #endregion if (senderBank.Id == receiverBank.Id) { isSameBank = true; } //DBManager db = new DBManager(transactionRepository, sendingBankUserRepository, receivingBankUserRepository, bankNetDebitCapRepository, suspenseTransactionRepository, bankRepository); //update Sending Bank Net Debit Cap var senderInstitutionDebitCap = _businessLayer.GetParticipantDebitCapById(senderBank.Id); senderInstitutionDebitCap.CurrentNetDebitCap -= System.Convert.ToDecimal(amount, cultures); senderInstitutionDebitCap.EntityState = EntityState.Modified; _businessLayer.UpdateParticipantDebitCap(senderInstitutionDebitCap); //create suspense transaction var suspenseTransaction = new SuspenseTransaction { SuspenseTransactionId = Guid.NewGuid(), SenderAccountNo = senderAccNo, SendingBankId = senderBank.Id, SendingBankSuspanseAccount = senderBank.SuspenseAccount, Amount = Convert.ToDecimal(amount, cultures), TransactionInitiatedOn = txnDt, SuspenseClearingTime = DateTime.Now, TransactionId = txnId, SuspenseStatus = false, EntityState = EntityState.Added }; _businessLayer.AddSuspenseTransaction(suspenseTransaction); TransactionRequestLog transactionRequestLog = new TransactionRequestLog(); TransactionRequestLog transactionRequestLogReceive = new TransactionRequestLog(); List <TransactionRequestLog> logs = new List <TransactionRequestLog>(); var responseResult = string.Empty; var responseResultFromBB = string.Empty; using (var client = new HttpClient()) { transactionRequestLog.TransactionId = txnId; transactionRequestLog.RequestFrom = "IDTP"; transactionRequestLog.RequestTo = receiverBank.FinancialInstitution.InstitutionName; transactionRequestLog.RequestMessage = xmlData; transactionRequestLog.RequestTime = DateTime.Now; transactionRequestLog.EntityState = EntityState.Added; transactionRequestLog.CreatedBy = receiverBank.FinancialInstitution.InstitutionName; transactionRequestLog.CreatedOn = DateTime.Now; transactionRequestLog.ModifiedBy = receiverBank.FinancialInstitution.InstitutionName; transactionRequestLog.ModifiedOn = DateTime.Now; logs.Add(transactionRequestLog); //receiver bank call responseResult = HttpClientHelper.Post(new Uri("https://localhost:44372/api/Receiver"), xmlData); //responseResult = HttpClientHelper.Post(new Uri("https://idtp-external-receiver.azurewebsites.net/api/Receiver"), xmlData); #region xml validation for PACS.002 responseResult = responseResult.Replace("\\", "", StringComparison.CurrentCulture); responseResult = responseResult[1..^ 1];
public string TransactionBill([FromBody] string xmlData) { // creating object of CultureInfo CultureInfo cultures = new CultureInfo("en-US"); try { XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlData); #region data fetched from xml string txnId, amount, senderBIC, receiverBIC, senderAccNo, receiverAccNo, sendingBankRoutingNo, receivingBankRoutingNo, purpose = string.Empty; txnId = doc.GetElementsByTagName("TxId").Item(0).InnerText; amount = doc.GetElementsByTagName("IntrBkSttlmAmt").Item(0).InnerText; senderBIC = doc.GetElementsByTagName("BICFI").Item(0).InnerText; receiverBIC = doc.GetElementsByTagName("BICFI").Item(3).InnerText; senderAccNo = doc.GetElementsByTagName("Id").Item(0).InnerText; receiverAccNo = doc.GetElementsByTagName("Id").Item(8).InnerText; sendingBankRoutingNo = doc.GetElementsByTagName("Id").Item(2).InnerText; receivingBankRoutingNo = doc.GetElementsByTagName("Id").Item(5).InnerText; purpose = doc.GetElementsByTagName("Ustrd").Item(0).InnerText; DateTime txnDt = DateTime.Now; DateTime stlmntDt = DateTime.Now; #endregion #region data fetched from db for further operation var sender = _businessLayer.GetAllBankUsers().SingleOrDefault(m => m.AccountNumber == senderAccNo); var senderBank = _businessLayer.GetAllBanks().SingleOrDefault(m => m.SwiftBic == senderBIC); #endregion //DBManager db = new DBManager(transactionRepository, sendingBankUserRepository, receivingBankUserRepository, bankNetDebitCapRepository, suspenseTransactionRepository, bankRepository); //update Sending Bank Net Debit Cap var senderInstitutionDebitCap = _businessLayer.GetParticipantDebitCapById(senderBank.Id); senderInstitutionDebitCap.CurrentNetDebitCap -= System.Convert.ToDecimal(amount, cultures); senderInstitutionDebitCap.EntityState = EntityState.Modified; _businessLayer.UpdateParticipantDebitCap(senderInstitutionDebitCap); //create suspense transaction var suspenseTransaction = new SuspenseTransaction { SuspenseTransactionId = Guid.NewGuid(), SenderAccountNo = senderAccNo, SendingBankId = senderBank.Id, SendingBankSuspanseAccount = senderBank.SuspenseAccount, Amount = Convert.ToDecimal(amount, cultures), TransactionInitiatedOn = txnDt, SuspenseClearingTime = DateTime.Now, TransactionId = txnId, SuspenseStatus = false, EntityState = EntityState.Added }; _businessLayer.AddSuspenseTransaction(suspenseTransaction); TransactionRequestLog transactionRequestLog = new TransactionRequestLog(); List <TransactionRequestLog> logs = new List <TransactionRequestLog>(); var responseResult = string.Empty; var responseResultFromBB = string.Empty; var responseDesco = string.Empty; using (var client = new HttpClient()) { transactionRequestLog.TransactionId = txnId; transactionRequestLog.RequestFrom = "IDTP"; transactionRequestLog.RequestTo = "Desco"; transactionRequestLog.RequestMessage = xmlData; transactionRequestLog.RequestTime = DateTime.Now; transactionRequestLog.CreatedBy = "IDTP"; transactionRequestLog.CreatedOn = DateTime.Now; transactionRequestLog.ModifiedBy = "IDTP"; transactionRequestLog.ModifiedOn = DateTime.Now; transactionRequestLog.EntityState = EntityState.Added; //_businessLayer.AddTransactionRequestLog(transactionRequestLog); logs.Add(transactionRequestLog); TransactionBillDTO tbd = new TransactionBillDTO { TransactionId = txnId, SenderAccNo = senderAccNo, SenderBankId = senderBank.Id, Amount = decimal.Parse(amount, cultures) }; //receiver bank call //responseResult = HttpClientHelper.Post("https://*****:*****@"\", "", StringComparison.CurrentCulture); TransactionRequestLog transactionRequestLogReceive = new TransactionRequestLog { TransactionId = txnId, RequestFrom = "Desco", RequestTo = "IDTP", RequestMessage = xmlReturn, RequestTime = DateTime.Now, CreatedBy = "IDTP", CreatedOn = DateTime.Now, ModifiedOn = DateTime.Now, ModifiedBy = "IDTP", EntityState = EntityState.Added }; //_businessLayer.AddTransactionRequestLog(transactionRequestLogReceive); logs.Add(transactionRequestLogReceive); _businessLayer.AddTransactionRequestLog(logs.ToArray()); return(xmlReturn); } catch (Exception ex) { throw new Exception(ex.Message); } }
public async Task <IActionResult> Create([FromForm] TransactionBillDTO tbd) { // creating object of CultureInfo try { CultureInfo cultures = new CultureInfo("en-US"); if (tbd != null) { #region fetch data db var sender = _businessLayer.GetAllBankUsers().Where(u => u.AccountNumber == tbd.SenderAccNo).FirstOrDefault(); if (sender == null) { TempData["error"] = "User Not Found"; return(RedirectToAction(nameof(Index))); } var SenderBank = _businessLayer.GetAllBanks().Where(b => b.Id == tbd.SenderBankId).FirstOrDefault(); var senderBranch = _businessLayer.GetAllBranchs().Where(br => br.Id == tbd.SenderBranchId).FirstOrDefault(); #endregion var senderBankRoutingNo = senderBranch.RoutingNumber; //var receiverBankRoutingNo = receiverBranch.RoutingNumber; var transactionId = SenderBank.SwiftBic.Substring(0, 4) + DateTime.Now.ToString("yyyyMMddHHmmss", cultures); #region create pacs008 xml //ISOComposer composer = new ISOComposer(); var pacs008xml = ISOComposer.GetPacs008Data(SenderBank.SwiftBic, "", sender.AccountName, tbd.ReceiverName, transactionId, tbd.SenderAccNo, senderBankRoutingNo, SenderBank.CbaccountNo, "", "", "", tbd.Amount.ToString(), "Bill Payment"); #endregion #region fetch data db sender.Balance -= tbd.Amount; sender.EntityState = EntityState.Modified; _businessLayer.UpdateBankUser(sender); #endregion #region get token for session //login as user LoginDTO loginDTO = new LoginDTO { UserName = Helper.Constants.UserName, MasterToken = Helper.Constants.UserSecret }; //get token string token = await HttpClientAuthorization.GetAuthorizationToken(loginDTO); HttpContext.Session.SetString("token", token); #endregion TransactionRequestLog transactionRequestLog = new TransactionRequestLog(); TransactionRequestLog transactionRequestLogReceive = new TransactionRequestLog(); List <TransactionRequestLog> logs = new List <TransactionRequestLog>(); var responseResult = string.Empty; //Uri uri = new Uri("https://localhost:44321/TransactionBill"); //var uri = "https://idtp-fundtransfer.azurewebsites.net/TransactionBill"; var uri = new Uri(Helper.Constants.IDTPApiGatewayUrl + "ft/TransactionBill"); using (var client = new HttpClient()) { transactionRequestLog.TransactionId = transactionId; transactionRequestLog.RequestFrom = SenderBank.FinancialInstitution.InstitutionName; transactionRequestLog.RequestTo = "IDTP"; transactionRequestLog.RequestMessage = pacs008xml.InnerXml; transactionRequestLog.RequestTime = DateTime.Now; transactionRequestLog.CreatedBy = SenderBank.FinancialInstitution.InstitutionName; transactionRequestLog.CreatedOn = DateTime.Now; transactionRequestLog.ModifiedBy = SenderBank.FinancialInstitution.InstitutionName; transactionRequestLog.ModifiedOn = DateTime.Now; transactionRequestLog.EntityState = EntityState.Added; logs.Add(transactionRequestLog); //_businessLayer.AddTransactionRequestLog(transactionRequestLog); //calling to IDTP API responseResult = HttpClientHelper.Post(uri, pacs008xml.InnerXml, token); } responseResult = responseResult.Replace("\\", "", StringComparison.CurrentCulture); responseResult = responseResult.Substring(1, responseResult.Length - 2); transactionRequestLogReceive.TransactionId = transactionId; transactionRequestLogReceive.RequestFrom = "IDTP"; transactionRequestLogReceive.RequestTo = SenderBank.FinancialInstitution.InstitutionName; transactionRequestLogReceive.RequestMessage = responseResult; transactionRequestLogReceive.RequestTime = DateTime.Now; transactionRequestLogReceive.CreatedBy = "IDTP"; transactionRequestLogReceive.CreatedOn = DateTime.Now; transactionRequestLogReceive.ModifiedBy = "IDTP"; transactionRequestLogReceive.ModifiedOn = DateTime.Now; transactionRequestLogReceive.EntityState = EntityState.Added; logs.Add(transactionRequestLogReceive); _businessLayer.AddTransactionRequestLog(logs.ToArray()); //responseResult = "<" + responseResult + ">"; XmlDocument doc = new XmlDocument(); doc.LoadXml(responseResult); TempData["txnId"] = doc.GetElementsByTagName("OrgnlTxId").Item(0).InnerText; } return(RedirectToAction(nameof(Index))); } catch (Exception ex) { TempData["error"] = ex.Message; return(RedirectToAction(nameof(Index))); } }