/// <summary> /// Updates a given customer Id /// </summary> /// <param name="customerID">The customer Id to updated</param> /// <param name="options">The information to be updated as type of RegisterCustomerOptions </param> /// <returns> /// Result.Code should be Success(200) /// Check Result.Code and Result.Message to get more details about possible errors /// </returns> public Result <Customer> UpdateCustomer(int customerID, RegisterCustomerOptions options) { if (options == null) { return(new Result <Customer>() { Code = ResultCodes.BadRequest, Message = $"Options must be specified" }); } var result = GetCustomerbyID(customerID); if (result.IsSuccess()) { var customer = result.Data; customer.Address = options.Address; customer.CustBankID = options.CustomerBankID; customer.CustType = options.CustType; customer.Name = options.Name; customer.SureName = options.SureName; customer.VatNumber = options.VATNumber; _dbContext.Update(customer); _dbContext.SaveChanges(); return(new Result <Customer>() { Code = ResultCodes.Success, Message = $"Customer ID {customerID} updated successfully", Data = customer }); } else { return(new Result <Customer>() { Code = ResultCodes.BadRequest, Message = $"Failed to update information for Customer ID {customerID}" }); } }
public Result <Accounts> SetState(int accountID, AccountStateTypes state) { var result = GetAccountbyID(accountID); if (result.Code == ResultCodes.Success) { var account = result.Data; if (account.Balance != 0.0m && state == AccountStateTypes.Closed) { // Account has balance and therefor cannot be closed return(new Result <Accounts>() { Code = ResultCodes.BadRequest, Message = $"Account has balance and therefor cannot be closed", Data = account }); } else { account.State = state; _dBContext.Update(account); _dBContext.SaveChanges(); return(new Result <Accounts>() { Code = result.Code, Message = $"Account ID {accountID} changed to {state} successfully", Data = account }); } } else { return(new Result <Accounts>() { Code = result.Code, Message = result.Message }); } }
public void Add_New_Transaction_To_Account() { var config = new ConfigurationBuilder() .SetBasePath($"{AppDomain.CurrentDomain.BaseDirectory}") .AddJsonFile("appsettings.json", false) .Build(); var connString = config.ReadAppConfiguration(); var options = new DbContextOptionsBuilder <TinyBankDBContext>(); options.UseSqlServer(connString.ConnString, options => { options.MigrationsAssembly("TinyBank"); }); using var dbContext = new TinyBankDBContext(options.Options); var savedCustomer = dbContext.Set <Customer>() .Where(c => c.CustBankID == "032846778") .SingleOrDefault(); Assert.NotNull(savedCustomer); var savedAccount = dbContext.Set <Accounts>() .Where(a => a.AccountNumber == "1558642182") .SingleOrDefault(); Assert.NotNull(savedAccount); savedAccount.Transactions.Add(new Transaction() { Amount = 150.0m, TransDescr = "Tablet purchase", Type = TransactionType.Credit }); dbContext.Update(savedAccount); dbContext.SaveChanges(); }
public void Add_New_Account_To_Customer() { var config = new ConfigurationBuilder() .SetBasePath($"{AppDomain.CurrentDomain.BaseDirectory}") .AddJsonFile("appsettings.json", false) .Build(); var connString = config.ReadAppConfiguration(); var options = new DbContextOptionsBuilder <TinyBankDBContext>(); options.UseSqlServer(connString.ConnString, options => { options.MigrationsAssembly("TinyBank"); }); using var dbContext = new TinyBankDBContext(options.Options); var savedCustomer = dbContext.Set <Customer>() .Where(c => c.CustBankID == "032846778") .SingleOrDefault(); Assert.NotNull(savedCustomer); savedCustomer.Accounts.Add(new Accounts() { State = AccountStateTypes.Active, AccountDescription = "My Personal Account", AccountNumber = "1558642123", Currency = "EUR", Balance = 1800.0m }); dbContext.Update(savedCustomer); dbContext.SaveChanges(); }