public async Task <IHttpActionResult> PutCustomerAccountDTO(int id, CustomerAccountDTO customerAccountDTO) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != customerAccountDTO.Id) { return(BadRequest()); } db.Entry(customerAccountDTO).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CustomerAccountDTOExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
/// <summary> /// Create or Post a transaction /// </summary> /// <param name="trans">Transaction details</param> /// <returns></returns> public async Task <string> Create_Transactions(TransactionDTO trans) { string msg = ""; try { using (db = new PROVISIODBContext()) { //get associated customer accont and update the balance var customer = await db.CustomerAccount.FirstOrDefaultAsync(c => c.ReferenceNumber == trans.ReferenceNumber); if (customer == null) { msg = $"No customer found with Reference Number: {trans.ReferenceNumber}."; } else { var t = await db.Transactions.FindAsync(trans.EntryID); if (t == null)//transaction found { var transaction = new Transactions { EntryID = trans.EntryID, ReferenceNumber = trans.ReferenceNumber, B_AcountNumber = trans.ReferenceNumber, TransactionType = trans.TransactionType, Comments = trans.Comments, TransactionAmount = trans.TransactionAmount, TansactionDate = trans.TansactionDate, TransactionCode = trans.TransactionCode }; db.Transactions.Add(transaction); customer.CustomerBalance = GetNewBalance(customer.CustomerBalance, trans.TransactionAmount, trans.TransactionType); var i = await db.SaveChangesAsync(); msg = i > 0 ? "Transaction Saved successfully" : "Something went wrong. Try again later"; } else //transaction with found with the EntryID { //update the customer msg = await Update_TransactionsAsync(trans); } } } } catch (Exception ex) { msg = ex.Message; } return(msg); }
/// <summary> /// Update an existing transaction, by EntryID, /// </summary> /// <param name="transaction">Transaxtion object</param> /// <returns>Response indicating success or failure</returns> public async Task <string> Update_TransactionsAsync(TransactionDTO transaction) { string msg = ""; try { using (db = new PROVISIODBContext()) { var customer = await db.CustomerAccount.FirstOrDefaultAsync(c => c.ReferenceNumber == transaction.ReferenceNumber); if (customer == null) { msg = $"No customer found with Reference Number: {transaction.ReferenceNumber}."; } else { var t = await db.Transactions.FindAsync(transaction.EntryID); if (t == null) { msg = "No transaction found to Update"; } else { t.EntryID = transaction.EntryID; t.TransactionAmount = transaction.TransactionAmount; t.TansactionDate = transaction.TansactionDate; t.TransactionCode = transaction.TransactionCode; t.Comments = transaction.Comments; t.LastUpdated = DateTime.Now; customer.CustomerBalance = GetNewBalance(customer.CustomerBalance, transaction.TransactionAmount, transaction.TransactionType); } var i = await db.SaveChangesAsync(); msg = i > 0 ? "Transaction Saved successfully" : "Something went wrong. Try again later"; } } } catch (Exception ex) { msg = ex.Message; } return(msg); }
/// <summary> /// Create a Customer account /// </summary> /// <param name="customer"></param> /// <returns></returns> public async Task <string> AddCustomerAccount(CustomerAccountDTO customer) { if (customer == null) { return("Please provide a valid customer information."); } try { using (db = new PROVISIODBContext()) { var IsExistingCustomer = db.CustomerAccount.Any(c => c.ReferenceNumber == customer.ReferenceNumber || c.B_AccountNumber == customer.B_AccountNumber || c.MomoNumber == customer.MomoNumber); if (IsExistingCustomer) { TransactionErrorMessage = "There's an existing customer with the same Reference/Account number or Momo number"; return(null); } var new_customer = new CustomerAccount { Id = customer.Id, ReferenceNumber = customer.ReferenceNumber, B_AccountNumber = customer.B_AccountNumber, B_AccountName = customer.B_AccountName, B_Name = customer.B_Name, MomoNumber = customer.MomoNumber, MomoProvider = customer.MomoProvider, CustomerBalance = customer.CustomerBalance, TelephoneNumber = customer.TelephoneNumber, LastAccessed = customer.LastAccessed, Notes = customer.Notes }; db.CustomerAccount.Add(new_customer); var i = await db.SaveChangesAsync(); return(i > 0 ? "Account Created Successfully" : "Unale to Create Account, please contact API provider."); } } catch (Exception ex) { return(ex.Message); } }
public async Task <string> DeleteTansaction(int entryID) { try { using (db = new PROVISIODBContext()) { var transaction = await db.Transactions.FindAsync(entryID); if (transaction == null) { return($"This transaction could not be found to delete."); } db.Transactions.Remove(transaction); var i = await db.SaveChangesAsync(); return(i > 0 ? "Transaction deleted successfully" : "Something went wrong, try again later."); } } catch (Exception ex) { return(ex.Message); } }