public Result <Transaction> Register(int accountID, RegisterTransactionOptions options) { var result = _account.GetAccountbyID(accountID); if (result.Code != ResultCodes.Success) { return new Result <Transaction>() { Code = ResultCodes.BadRequest, Message = $"Could not find Account ID {accountID}" } } ; // check account balance. Must be >= options.Type * options.Amount if (options.Type == Model.Types.TransactionType.Credit && result.Data.Balance + (int)options.Type * options.Amount < 0) { return new Result <Transaction>() { Code = ResultCodes.BadRequest, Message = $"Not enough balance for Account ID {accountID} !" } } ; var transaction = new Transaction() { Amount = options.Amount, Type = options.Type, TransDescr = options.TransDescr }; // update account balance result.Data.Balance += (int)options.Type * options.Amount; result.Data.Transactions.Add(transaction); try { _dBContext.SaveChanges(); return(new Result <Transaction>() { Code = ResultCodes.Success, Message = $"New Transaction amount {options.Amount} {((options.Type == Model.Types.TransactionType.Credit) ? "Deducted" : "Added")} for Acount {result.Data.AccountNumber}", Data = transaction }); } catch (Exception ex) { return(new Result <Transaction>() { Code = ResultCodes.InternalServerError, Message = $"Fail to save Transaction for account ID {accountID}. Details: {ex.Message}" }); } }
public void Add_New_Account() { using var dbContext = new TinyBankDBContext(GetDBOptions().Options); var account = new Accounts() { State = AccountStateTypes.Active, AccountDescription = "My Personal Account", AccountNumber = "1558642182", Currency = "EUR", Balance = 1500.0m }; dbContext.Add(account); dbContext.SaveChanges(); }
public void Add_New_Customer() { using var dbContext = new TinyBankDBContext(GetDBOptions().Options); var customer = new Customer() { Active = true, Address = "Test Address", CustBankID = "032846778", CustType = CustomerType.Personal, Name = "Kostas", SureName = "Parginos", VatNumber = "123456789" }; dbContext.Add(customer); dbContext.SaveChanges(); }
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(); }
public Result <Accounts> Register(int customerID, RegisterAccountOptions options) { if (string.IsNullOrWhiteSpace(options.AccountNumber)) { return new Result <Accounts>() { Code = ResultCodes.BadRequest, Message = "Account Number is invalid!" } } ; if (string.IsNullOrWhiteSpace(options.AccountDescr)) { return new Result <Accounts>() { Code = ResultCodes.BadRequest, Message = "Account Description not set" } } ; if (string.IsNullOrWhiteSpace(options.Currency)) { return new Result <Accounts>() { Code = ResultCodes.BadRequest, Message = "Currency is invalid" } } ; var result = _customer.GetCustomerbyID(customerID); if (result.Code != ResultCodes.Success) { return new Result <Accounts>() { Code = result.Code, Message = result.Message } } ; var account = new Accounts() { AccountDescription = options.AccountDescr, AccountNumber = options.AccountNumber, Currency = options.Currency, }; result.Data.Accounts.Add(account); _dBContext.SaveChanges(); return(new Result <Accounts>() { Code = ResultCodes.Success, Data = account }); }
/// <summary> /// Adds a new customer /// </summary> /// <param name="options">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> Register(RegisterCustomerOptions options) { if (string.IsNullOrWhiteSpace(options.Name)) { return new Result <Customer>() { Code = ResultCodes.BadRequest, Message = $"Customer name is empty!" } } ; if (string.IsNullOrWhiteSpace(options.SureName)) { return new Result <Customer>() { Code = ResultCodes.BadRequest, Message = $"Customer sure name is empty!" } } ; var validVatNumber = IsValidVatNumber(options.CountryCode, options.VATNumber); if (!validVatNumber.IsSuccess()) { return(new Result <Customer>() { Code = validVatNumber.Code, Message = validVatNumber.Message }); } if (_dbContext.Set <Customer>() .Any(c => c.VatNumber == options.VATNumber)) { return(new Result <Customer>() { Code = ResultCodes.BadRequest, Message = $"Specific Vat Number {options.VATNumber} already exists!" }); } var customer = new Customer() { Name = options.Name, SureName = options.SureName, VatNumber = options.VATNumber, CustBankID = options.CustomerBankID, CustType = options.CustType, Address = options.Address }; _dbContext.Add <Customer>(customer); _dbContext.SaveChanges(); return(new Result <Customer>() { Code = ResultCodes.Success, Data = customer }); }