public JsonResult GetDisputeInfoByTransID(string TransactionId) { var transaction = new ParticipantDisputeResponseDTO(); if (TransactionId != null && !string.IsNullOrEmpty(TransactionId)) { TransactionFund tf = _businessLayer.GetAllTransactions().Where(x => x.TransactionId == TransactionId).FirstOrDefault(); if (tf != null) { transaction.Id = tf.Id; transaction.SenderId = tf.Sender?.AccountNumber; transaction.ReceiverId = tf.Receiver?.AccountNumber; //transaction.SenderId = _businessLayer.GetBankUserById((int)tf.SenderId).AccountNumber + "@idtp"; transaction.TransactionAmount = (double)tf.Amount; //transaction.ReceiverId = _businessLayer.GetBankUserById((int)tf.ReceiverId).AccountNumber + "@idtp"; tf.EntityState = EntityState.Unchanged; DisputeTransactionFund dt = _businessLayer.GetDisputeTransactionById(tf.Id); transaction.DisputeTitle = dt.DisputeTitle; transaction.DisputeDetails = dt.DisputeDetail; transaction.DisputeSeverity = dt.DisputeSeverity.Name; transaction.ParticipantAction = dt.ParticipantAction.ToString(); transaction.ParticipantResponse = dt.ParticipantResponseText; dt.EntityState = EntityState.Unchanged; } } return(Json(transaction)); }
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 string TransferFund([FromBody] string xmlData) { // creating object of CultureInfo CultureInfo cultures = new CultureInfo("en-US"); var responseResult = string.Empty; try { var isSameBank = false; 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 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 { 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 responseResultFromBB = string.Empty; using (var client = new HttpClient()) { transactionRequestLog.RequestFrom = "IDTP"; transactionRequestLog.RequestTo = receiverBank.FinancialInstitution.InstitutionName; transactionRequestLog.RequestMessage = xmlData; transactionRequestLog.RequestTime = DateTime.Now; transactionRequestLog.CreatedBy = receiverBank.FinancialInstitution.InstitutionName; transactionRequestLog.CreatedOn = DateTime.Now; transactionRequestLog.ModifiedBy = receiverBank.FinancialInstitution.InstitutionName; transactionRequestLog.ModifiedOn = DateTime.Now; transactionRequestLog.EntityState = EntityState.Added; 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); transactionRequestLogReceive.RequestFrom = receiverBank.FinancialInstitution.InstitutionName; transactionRequestLogReceive.RequestTo = "IDTP"; 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()); } //create transaction var newTransactionFund = new TransactionFund { SenderId = sender.Id, ReceiverId = receiver.Id, Amount = System.Convert.ToDecimal(amount, cultures), Narration = purpose, SenderBankId = senderBank.Id, ReceiverBankId = receiverBank.Id, SendingBankRoutingNo = sendingBankRoutingNo, ReceivingBankRoutingNo = receivingBankRoutingNo, TransactionId = txnId, TransactionDate = txnDt, EntityState = EntityState.Added }; _businessLayer.AddTransaction(newTransactionFund); //update receiver bank net debit cap if (isSameBank) { senderInstitutionDebitCap.CurrentNetDebitCap += System.Convert.ToDecimal(amount, cultures); senderInstitutionDebitCap.EntityState = EntityState.Modified; _businessLayer.UpdateParticipantDebitCap(senderInstitutionDebitCap); } else { var receiverInstitutionDebitCap = _businessLayer.GetParticipantDebitCapById(receiverBank.Id); receiverInstitutionDebitCap.CurrentNetDebitCap += System.Convert.ToDecimal(amount, cultures); receiverInstitutionDebitCap.EntityState = EntityState.Modified; _businessLayer.UpdateParticipantDebitCap(receiverInstitutionDebitCap); } //update suspense transaction record suspenseTransaction.SuspenseStatus = true; suspenseTransaction.Amount = 0; suspenseTransaction.EntityState = EntityState.Modified; _businessLayer.UpdateSuspenseTransaction(suspenseTransaction); return(responseResult); } catch (Exception) { responseResult = IDTPXmlParser.PrepareFailResponse("TransferFund"); return(responseResult); } }