/// <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();
        }
Exemple #4
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();
        }