コード例 #1
0
        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}"
                });
            }
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: CustomerTests.cs プロジェクト: kparginos/TinyBank
        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();
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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();
        }
コード例 #6
0
ファイル: AccountsService.cs プロジェクト: kparginos/TinyBank
        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
            });
        }
コード例 #7
0
ファイル: CustomerService.cs プロジェクト: kparginos/TinyBank
        /// <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
            });
        }