Пример #1
0
        public void ShouldOpenAccountForNewClient()
        {
            //Arrange
            ClientsService         clientsService = new ClientsService(clientsTableRepository, accountTableRepository, stockPriceTableRepository, stockOfClientTableRepository, logger);
            ClientRegistrationInfo args           = new ClientRegistrationInfo();

            args.Name        = "John";
            args.Surname     = "Jaymson";
            args.PhoneNumber = "+78908901234";

            AccountRegistrationInfo argsForAcc = new AccountRegistrationInfo();

            argsForAcc.Balance = 10m;
            argsForAcc.Stocks  = new List <StockOfClientEntity>();
            argsForAcc.Zone    = "white";

            //Act
            argsForAcc.ClientId = clientsService.RegisterNewClient(args);
            clientsService.CreateNewAccountForNewClient(argsForAcc);

            //Assert
            accountTableRepository.Received(1).Add(Arg.Is <AccountEntity>(
                                                       w => w.Balance == argsForAcc.Balance &&
                                                       w.ClientId == argsForAcc.ClientId &&
                                                       w.Stocks == argsForAcc.Stocks &&
                                                       w.Zone == argsForAcc.Zone));
            accountTableRepository.Received(1).SaveChanges();
        }
Пример #2
0
        public void ShouldNotOpenAccountForNewClientIfItExists()
        {
            //Arrange
            ClientsService         clientsService = new ClientsService(clientsTableRepository, accountTableRepository, stockPriceTableRepository, stockOfClientTableRepository, logger);
            ClientRegistrationInfo args           = new ClientRegistrationInfo();

            args.Name        = "John";
            args.Surname     = "Jaymson";
            args.PhoneNumber = "+78908901234";

            AccountRegistrationInfo argsForAcc = new AccountRegistrationInfo();

            argsForAcc.Balance = 10m;
            argsForAcc.Stocks  = new List <StockOfClientEntity>();
            argsForAcc.Zone    = "white";

            AccountEntity ShouldReturnAcc = new AccountEntity();

            ShouldReturnAcc.Balance = 10m;
            ShouldReturnAcc.Stocks  = new List <StockOfClientEntity>();
            ShouldReturnAcc.Zone    = "white";

            //Act
            argsForAcc.ClientId = clientsService.RegisterNewClient(args);

            ShouldReturnAcc.AccountId = clientsService.CreateNewAccountForNewClient(argsForAcc);

            ShouldReturnAcc.ClientId = argsForAcc.ClientId;

            accountTableRepository.GetAccountByClientId(Arg.Is <int>(w => w == argsForAcc.ClientId)).Returns(ShouldReturnAcc);

            clientsService.CreateNewAccountForNewClient(argsForAcc);
        }
Пример #3
0
        public int CreateNewAccountForNewClient(AccountRegistrationInfo args)
        {
            var entityToAdd = new AccountEntity()
            {
                ClientId = args.ClientId,
                Balance  = args.Balance,
                Stocks   = args.Stocks
            };

            if (entityToAdd.Balance > 0)
            {
                entityToAdd.Zone = "white";
            }

            if (entityToAdd.Balance == 0)
            {
                entityToAdd.Zone = "orange";
            }

            if (entityToAdd.Balance < 0)
            {
                entityToAdd.Zone = "black";
            }

            if (this.accountTableRepository.GetAccountByClientId(entityToAdd.ClientId) != null)
            {
                throw new ArgumentException("This client already have an account");
            }

            this.accountTableRepository.Add(entityToAdd);
            this.accountTableRepository.SaveChanges();
            logger.Info($"Account {entityToAdd.AccountId} for client {entityToAdd.ClientId} has been created");

            return(entityToAdd.AccountId);
        }
Пример #4
0
        private void Registration()
        {
            ClientRegistrationInfo  clientRegistrationInfo  = new ClientRegistrationInfo();
            AccountRegistrationInfo accountRegistrationInfo = new AccountRegistrationInfo();
            StockOfClientInfo       stockOfClientInfo       = new StockOfClientInfo();

            clientRegistrationInfo.Name = AskUser(KeysForPhrases.RegName);

            clientRegistrationInfo.Surname = AskUser(KeysForPhrases.RegSurname);

            clientRegistrationInfo.PhoneNumber = AskUser(KeysForPhrases.RegPhone, true);

            accountRegistrationInfo.ClientId = clientsService.RegisterNewClient(clientRegistrationInfo);

            accountRegistrationInfo.Balance = Convert.ToDecimal(AskUser(KeysForPhrases.RegBalance, true));

            stockOfClientInfo.ClientsAccountId = clientsService.CreateNewAccountForNewClient(accountRegistrationInfo);

            if (Convert.ToInt32(AskUser(KeysForPhrases.RegStock, true)) == 1)
            {
                stockOfClientInfo.TypeOfStocks = AskUser(KeysForPhrases.RegStockType);

                stockOfClientInfo.quantityOfStocks = Convert.ToInt32(AskUser(KeysForPhrases.RegStockQuant, true));

                if (!clientsService.CheckIfStockPriseConteinStockOfClientByTypeOfStock(stockOfClientInfo.TypeOfStocks))
                {
                    StockPriceInfo stockPriceInfo = new StockPriceInfo()
                    {
                        TypeOfStock = stockOfClientInfo.TypeOfStocks
                    };

                    stockPriceInfo.PriceOfStock = Convert.ToDecimal(AskUser(KeysForPhrases.RegStockPrice, true));

                    clientsService.RegisterNewTypeOfStock(stockPriceInfo);
                }

                clientsService.RegisterStockForNewClient(stockOfClientInfo);
            }
        }