private static void ReadCustomers(ShopHierarchyDbContext db)
        {
            while (true)
            {
                var input = Console.ReadLine();

                if (input == "END")
                {
                    break;
                }

                var    tokens     = input.Substring(input.IndexOf('-') + 1).Split(';').ToArray();
                string name       = tokens[0];
                int    salesmanId = int.Parse(tokens[1]);

                db.Customers.Add(new Customer()
                {
                    Name = name, SalesmanId = salesmanId
                });

                //// as in lab docs
                //var customer = new Customer() { Name = name };
                //EntityEntry<Customer> customerTracker = db.Customers.Add(customer);
                //var salesman = db.Salesmen.Where(s => s.Id == salesmanId).FirstOrDefault();
                //salesman?.Customers.Add(customerTracker.Entity);
            }

            db.SaveChanges();
        }
        private static void ReadCustomersWithOrdersReviewsExtended(ShopHierarchyDbContext db)
        {
            while (true)
            {
                var input = Console.ReadLine();

                if (input == "END")
                {
                    break;
                }

                var commands = input.Split('-').ToArray();
                switch (commands[0])
                {
                case "register":
                    var    tokens     = commands[1].Split(';');
                    string name       = tokens[0];
                    int    salesmanId = int.Parse(tokens[1]);
                    db.Customers.Add(new Customer()
                    {
                        Name = name, SalesmanId = salesmanId
                    });
                    break;

                case "order":
                    var ids      = commands[1].Split(';', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
                    var newOrder = new Order()
                    {
                        CustomerId = ids[0]
                    };
                    foreach (var itemId in ids.Skip(1))
                    {
                        newOrder.Items.Add(new ItemOrder()
                        {
                            ItemId = itemId, OrderId = ids[0]
                        });
                    }
                    db.Orders.Add(newOrder);
                    break;

                case "review":
                    ids = commands[1].Split(';', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
                    db.Reviews.Add(new Review()
                    {
                        CustomerId = ids[0], ItemId = ids[1]
                    });
                    break;
                }
            }

            db.SaveChanges();
        }
        private static void ReadSalesmen(ShopHierarchyDbContext db)
        {
            var salesman = Console.ReadLine()
                           .Split(";", StringSplitOptions.RemoveEmptyEntries)
                           .ToList();

            foreach (var name in salesman)
            {
                db.Salesmen.Add(new Salesman()
                {
                    Name = name
                });
            }

            db.SaveChanges();
        }
        private static void ReadCustomersWithOrdersReviews(ShopHierarchyDbContext db)
        {
            while (true)
            {
                var input = Console.ReadLine();

                if (input == "END")
                {
                    break;
                }

                var commands = input.Split('-').ToArray();
                switch (commands[0])
                {
                case "register":
                    var    tokens     = commands[1].Split(';');
                    string name       = tokens[0];
                    int    salesmanId = int.Parse(tokens[1]);
                    db.Customers.Add(new Customer()
                    {
                        Name = name, SalesmanId = salesmanId
                    });
                    break;

                case "order":
                    int customerId = int.Parse(commands[1]);
                    db.Orders.Add(new Order()
                    {
                        CustomerId = customerId
                    });
                    break;

                case "review":
                    customerId = int.Parse(commands[1]);
                    db.Reviews.Add(new Review()
                    {
                        CustomerId = customerId
                    });
                    break;
                }
            }

            db.SaveChanges();
        }
        private static void ReadItems(ShopHierarchyDbContext db)
        {
            while (true)
            {
                var input = Console.ReadLine();

                if (input == "END")
                {
                    break;
                }

                var tokens = input
                             .Split(";", StringSplitOptions.RemoveEmptyEntries)
                             .ToArray();

                db.Items.Add(new Item()
                {
                    Name = tokens[0], Price = decimal.Parse(tokens[1])
                });
            }

            db.SaveChanges();
        }