public void ShouldReturnAllTraders()
        {
            // Arrange
            TraderService tradersService = new TraderService(this.repository);

            // Act
            var allTraders = tradersService.GetAllTraders();

            // Assert
            this.repository.Received(1).GetAll();
            Assert.IsTrue(allTraders.Count == this.repository.GetAll().Count());
        }
        private void MakeTransaction()
        {
            Console.Clear();
            Console.WriteLine("Проведение сделки");
            Console.WriteLine("Чтобы провести сделку необходимо выбрать покупателя, продавца и акцию, которая будет являться предметом продажи.");
            Console.WriteLine("Чтобы вернуться в меню введите menu на любом из этапов заполнения");
            Console.WriteLine("Список пользователей, находящихся на бирже:");

            var allTraders = traderService.GetAllTraders();

            Console.WriteLine("ID\tПользователь");
            foreach (var trader in allTraders)
            {
                Console.WriteLine($"{trader.Id}\t{trader.FirstName} {trader.LastName}");
            }

            int    sellerId;
            string consoleInput;

            do
            {
                Console.Write("Введите идентификатор пользователя, который является продавцом: ");
                consoleInput = Console.ReadLine();
                if (consoleInput.ToLower() == "menu")
                {
                    return;
                }
            } while (!int.TryParse(consoleInput, out sellerId) || sellerId < allTraders.Min(t => t.Id) || sellerId > allTraders.Max(t => t.Id));

            int buyerId;

            do
            {
                Console.Write("Введите идентификатор пользователя, который является покупателем: ");
                consoleInput = Console.ReadLine();
                if (consoleInput.ToLower() == "menu")
                {
                    return;
                }
            } while (!int.TryParse(consoleInput, out buyerId) || buyerId < allTraders.Min(t => t.Id) || buyerId > allTraders.Max(t => t.Id) || sellerId == buyerId);

            var sellersShares = from share in this.shareTableRepository.GetAll().Where(s => s.Owner.Id == sellerId)
                                join trader in this.traderTableRepository.GetAll() on share.Owner equals trader
                                join stock in this.stockTableRepository.GetAll() on share.Stock equals stock
                                join company in this.companyTableRepository.GetAll() on stock.Company equals company
                                join shareType in this.shareTypeTableRepository.GetAll() on share.ShareType equals shareType
                                select new {
                share.Id,
                CompanyName = company.Name,
                share.Amount,
                PackagePrice  = share.Amount * shareType.Multiplier * stock.PricePerUnit,
                ShareTypeName = shareType.Name
            };

            Console.WriteLine("Продавец обладает следующими акциями:");
            Console.WriteLine("{0, -3} {1, -15} {2, -10} {3, -9} {4,-10}", "ID", "Компания", "Количество", "Стоимость", "Тип");
            foreach (var item in sellersShares)
            {
                Console.WriteLine($"{item.Id, -3} {item.CompanyName, -15} {item.Amount, -10} {item.PackagePrice, -9:0.00} {item.ShareTypeName, -10}");
            }
            int shareId;

            do
            {
                Console.Write("Введите идентификатор акции, которую хочет купить покупатель: ");
                consoleInput = Console.ReadLine();
                if (consoleInput.ToLower() == "menu")
                {
                    return;
                }
            } while (!int.TryParse(consoleInput, out shareId) || !sellersShares.Any(s => s.Id == shareId) || !sellersShares.Any(o => o.Id == shareId));

            try
            {
                transactionService.MakeShareTransaction(sellerId, buyerId, shareId);

                Console.WriteLine("Продажа проведена успешно!");
            }
            catch (Exception ex)
            {
                Logger.ConsoleLogger.Error(ex.Message);
            }
            Console.WriteLine("Нажмите любую клавишу, чтобы вернуться в меню...");
            Console.ReadKey();
        }