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));
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
            }
        }
示例#5
0
        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);
            }
        }