public IHttpActionResult PutAssociatedAccount(int id, AssociatedAccount associatedAccount) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != associatedAccount.AssociatedAccountID) { return(BadRequest()); } db.Entry(associatedAccount).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!AssociatedAccountExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult GetAssociatedAccount(int id) { AssociatedAccount associatedAccount = db.AssociatedAccounts.Find(id); if (associatedAccount == null) { return(NotFound()); } return(Ok(associatedAccount)); }
public IHttpActionResult PostAssociatedAccount(AssociatedAccount associatedAccount) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.AssociatedAccounts.Add(associatedAccount); db.SaveChanges(); return(CreatedAtRoute("DefaultApi", new { id = associatedAccount.AssociatedAccountID }, associatedAccount)); }
public IHttpActionResult DeleteAssociatedAccount(int id) { AssociatedAccount associatedAccount = db.AssociatedAccounts.Find(id); if (associatedAccount == null) { return(NotFound()); } db.AssociatedAccounts.Remove(associatedAccount); db.SaveChanges(); return(Ok(associatedAccount)); }
public IHttpActionResult PostUpdateAssociatedAccount(AssociatedAccount associatedAccoount) { var userId = User.Identity.GetUserId(); var userAccounts = db.AssociatedAccounts.Where(p => p.UserID == userId); var currentAccount = userAccounts.Where(p => p.AssociatedAccountID == associatedAccoount.AssociatedAccountID).First(); currentAccount.Description3 = associatedAccoount.Description3; if (associatedAccoount.DefaultAccount) { foreach (var account in userAccounts) { account.DefaultAccount = false; } currentAccount.DefaultAccount = associatedAccoount.DefaultAccount; } db.SaveChanges(); //currentAccount. return(Ok(currentAccount)); }
public async Task <IHttpActionResult> PostTopUpRequest(TopUpRequest topUpRequest) { //return NotFound(); Guid fiId = Guid.Parse(fiIdString); TopUpResponse topUpResponse = new TopUpResponse(); Helpers.Transfer_Light transfer = new Helpers.Transfer_Light(); switch (topUpRequest.CarrierID) { case "Digicel": string userId = User.Identity.GetUserId(); var userAccounts = db.AssociatedAccounts.Where(p => p.UserID.Equals(userId)); var fromAcct = userAccounts.Where(p => p.AssociatedAccountID == topUpRequest.AssociatedAccountID).FirstOrDefault(); var minorAcct = userAccounts.Where(p => p.Description2.Equals("EPAY DIGICEL TOPUP")).FirstOrDefault(); if (fromAcct == null) { topUpResponse.Message = "Invalid source account specified."; topUpResponse.Successful = false; } //if(minorAcct != null) //{ ////################################################### //// Set maximum TopUps to a single number ////################################################### //int totalTopUps = db.Transfers.Where(p => p.BillerAccountNumber.Equals(topUpRequest.MobileNumber)).Count(); //if (totalTopUps > 2) //{ // topUpResponse.Message = "Test credit has been depleted."; // topUpResponse.Successful = false; //} //else //{ // topUpRequest.Amount = 5; // //return Ok(DigicelTopUp.TopUp(topUpRequest.MobileNumber, topUpRequest.Amount)); // DigicelTopUpResponse digicelTopUpResponse = DigicelTopUp.TopUp(topUpRequest.Territory, topUpRequest.MobileNumber, topUpRequest.Amount); // topUpResponse.Successful = digicelTopUpResponse.Code == "0"; // topUpResponse.Message = digicelTopUpResponse.Message; // topUpResponse.TransactionID = digicelTopUpResponse.TransactionID; //} ////############################################## //################################################ // LIVE CODE //################################################ //DigicelTopUpResponse digicelTopUpResponse = DigicelTopUp.TopUp(topUpRequest.Territory, topUpRequest.MobileNumber, topUpRequest.Amount); //topUpResponse.Successful = digicelTopUpResponse.Code == "0"; //topUpResponse.Message = digicelTopUpResponse.Message; //topUpResponse.TransactionID = digicelTopUpResponse.TransactionID; //################################################ //################################################ // TEST CODE //################################################ DigicelTopUpResponse digicelTopUpResponse = new DigicelTopUpResponse { Code = "0", Message = "TopUp to " + topUpRequest.MobileNumber + " Successful", TransactionID = Guid.NewGuid().ToString() }; topUpResponse.Successful = digicelTopUpResponse.Code == "0"; topUpResponse.Message = digicelTopUpResponse.Message; topUpResponse.TransactionID = digicelTopUpResponse.TransactionID; //################################################ //} //else //{ // topUpResponse.Message = "Your account has not been provisioned for this transaction."; // topUpResponse.Successful = false; //} if (!topUpResponse.Successful) { return(Ok(topUpResponse.Message)); } //################################################ // LIVE CODE //################################################ //string encryptedPin = db.PINs.Where(p => p.FinancialInstitutionID == fiId && p.UserID == userId).Select(p => p.Pin).First(); //string decryptedPin = Helpers.StringCipher.Decrypt(encryptedPin, userId); //transfer.fromAcct = fromAcct.AccountNumber; //transfer.amount = (double)topUpRequest.Amount; //transfer.toAccountNumber = minorAcct.AccountNumber; //transfer.memid = fromAcct.MemberID; //transfer.pin = decryptedPin; //string transferResponse = await COB.TransferFunds(transfer); //string[] transferResponseArray = transferResponse.Split(new string[] { "ITC" }, StringSplitOptions.RemoveEmptyEntries)[0].Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); //if (transferResponseArray[1][0] != '1') //{ // //topUpResponse.Successful = false; // topUpResponse.Message = transferResponseArray[1]; // //return Ok(topUpResponse); //} //################################################ break; case "Ozone": BillPaymentResponse response = await MiddleWare.Ozone.OzoneBillPaymentProxy.PayBill(new BillPaymentRequest { Amount = topUpRequest.Amount, AssociatedAccountID = topUpRequest.AssociatedAccountID, BillerAccountNumber = topUpRequest.MobileNumber, BillerID = "869cd85f-c155-429e-8ded-b92f41b61ec1" }); topUpResponse.Successful = response.Successful; topUpResponse.Message = response.Message; topUpResponse.TransactionID = response.TransactionID; break; default: topUpResponse.Successful = false; topUpResponse.Message = "Invalid Mobile Provider"; break; } AssociatedAccount account = db.AssociatedAccounts.Where(p => p.AssociatedAccountID == topUpRequest.AssociatedAccountID).First(); Guid billerId = db.Billers.Where(p => p.Name.Equals(topUpRequest.CarrierID)).Select(p => p.BillerID).First(); db.Transfers.Add(new E_Pay_Web_API.Models.Transfer { SourceTransactionID = DateTime.Now.ToString("yyyyMMdd-mmss"), SourceAccountNumber = account.AccountNumber, SourceAccountID = account.AssociatedAccountID, SourceInstitutionID = account.FinancialInstitutionID, MinorAccountNumber = transfer.toAccountNumber, BillerID = billerId, //BillerID = Guid.Parse(topUpRequest.CarrierID), BillerAccountNumber = topUpRequest.MobileNumber, BillerTransactionID = topUpResponse.TransactionID, TransferAmount = topUpRequest.Amount, TransferDescription = topUpRequest.CarrierID + " - TopUp", Status = topUpResponse.Successful ? "Successful" : "Error", StatusDescription = topUpResponse.Message, Created = DateTime.Now }); db.SaveChanges(); if (topUpResponse.Successful) { MailSender.SendMessage( User.Identity.GetUserName(), "E-Pay Top Up Confirmation and Receipt of Mobile Top Up Sent", "Congratulations your order has been completed successfully.\r\n\r\n" + "1 successful\r\n\r\n" + "Order ID: " + topUpResponse.TransactionID + "\r\n" + "Product: Mobile Top Up\r\n" + "Number: " + topUpRequest.MobileNumber + "\r\n" + "Country: Barbados\r\n" + "Top-up Amount: BBD $" + topUpRequest.Amount.ToString() + "\r\n" + "Receive Amount: BBD $" + topUpRequest.Amount.ToString() + "\r\n\r\n\r\n" + "Date & Time: " + DateTime.Now.ToString() + "\r\n\r\n" + "Amount Paid: BBD $" + topUpRequest.Amount.ToString() + "\r\n\r\n" + "From Account: " + account.Description + ": " + account.Description3 + " - " + account.AccountNumber + "\r\n\r\n" + "If you have any queries, please contact our customer care team.\r\n" + "Thanks,\r\n" + "The E-Pay Team" ); } return(Ok(topUpResponse)); //return NotFound(); }
//################################################ // LIVE CODE //################################################ //public async Task<string> PostTransfer(E_Pay_Web_API.Helpers.Transfer_Light transfer) //################################################ //################################################ // TEST CODE //################################################ public string PostTransfer(E_Pay_Web_API.Helpers.Transfer_Light transfer) //################################################ { try { Guid fiId = Guid.Parse(fiIdString); string userId = User.Identity.GetUserId(); var manager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext())); ApplicationUser targetUser = new ApplicationUser(); AssociatedAccount targetAccount = new AssociatedAccount(); switch (transfer.toInfoType) { case "EmailAddress": targetUser = manager.FindByEmail(transfer.toEmailAddress); if (targetUser == null) { return("The email address provided was invalid. No account found."); } targetAccount = db.AssociatedAccounts.Where(p => p.UserID == targetUser.Id && p.DefaultAccount).FirstOrDefault(); break; case "AccountNumber": targetAccount = db.AssociatedAccounts.Where(p => p.AccountNumber.Equals(transfer.toAccountNumber) && p.DefaultAccount).FirstOrDefault(); targetUser = manager.FindById(targetAccount.UserID); break; case "MyAccount": targetAccount = db.AssociatedAccounts.Where(p => p.AccountNumber.Equals(transfer.toAccountNumber) && p.UserID == userId).FirstOrDefault(); targetUser = manager.FindById(targetAccount.UserID); break; } // var fromAccount = db.AssociatedAccounts.Where(p => p.AssociatedAccountID.ToString() == transfer.fromAcct).First(); if (targetAccount == null) { return("Recipient does not have a default account or the account number provided is invalid."); } string encryptedPin = db.PINs.Where(p => p.FinancialInstitutionID == fiId && p.UserID == userId).Select(p => p.Pin).First(); string decryptedPin = Helpers.StringCipher.Decrypt(encryptedPin, userId); transfer.fromEmailAddress = userId; transfer.memid = fromAccount.MemberID; transfer.fromAcct = fromAccount.AccountNumber; transfer.toAccountNumber = targetAccount.AccountNumber; transfer.pin = decryptedPin; //################################################ // LIVE CODE //################################################ //string transferResponse = await COB.TransferFunds(transfer); //char transferResponseCode = transferResponse.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries)[2][1]; //string transferMessage = transferResponse.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries)[2].Substring(1); //################################################ //################################################ // TEST CODE //################################################ string transferMessage = "OKITC"; //################################################ db.Transfers.Add(new Transfer { SourceInstitutionID = fiId, SourceAccountID = fromAccount.AssociatedAccountID, SourceAccountNumber = fromAccount.AccountNumber, SourceTransactionID = "", BillerID = Guid.Parse(fiIdString), BillerAccountNumber = targetAccount.AccountNumber, BillerTransactionID = "", TransferAmount = (decimal)transfer.amount, TransferDescription = "COB Internal Transfer", Status = transferMessage.Equals("OKITC") ? "Successful" : "Error", StatusDescription = transferMessage, Created = DateTime.Now }); db.SaveChanges(); return(transferMessage); } catch (Exception ex) { return("A fatal error has occurred. Please try again later."); } }