public void Login()
        {
            if (_user != null)
            {
                System.Console.WriteLine("Please log out before logging into a different acount...");
                return;
            }
            System.Console.WriteLine("Logging in...");
            System.Console.Write("Enter user id: ");
            int id = System.Convert.ToInt32(System.Console.ReadLine());

            Data.Entities.User dbUser = _db.User.Find(id);
            Data.Entities.Name dbName = _db.Name.Find(dbUser.NameId);
            if (dbUser == null)
            {
                System.Console.WriteLine("Invalid user id");
                return;
            }
            _user = new User()
            {
                Name = new Name()
                {
                    First = dbName.FirstName,
                    Last  = dbName.LastName
                },
                Id = id
            };

            _user.OrderHistory = new List <Order>();
            foreach (Data.Entities.Order o in _db.Order.ToList())
            {
                if (o.UserId == id)
                {
                    Order order = new Order(_user);
                    foreach (Data.Entities.Pizza p in _db.Pizza.ToList())
                    {
                        if (p.OrderId == o.OrderId)
                        {
                            Data.Entities.Crust pizzaCrust = _db.Crust.Find(p.CrustId);
                            Data.Entities.Size  pizzaSize  = _db.Size.Find(p.SizeId);
                            Pizza pizza = new Pizza()
                            {
                                Crust = new Crust(p.Crust.Name, p.Crust.Price)
                                {
                                    Id = p.CrustId
                                },
                                Size = new Size(p.Size.Name, p.Size.Price)
                                {
                                    Id = p.SizeId
                                }
                            };

                            Data.Entities.Topping topping;

                            topping = _db.Topping.Find(p.ToppingId1);
                            if (p.ToppingId1 != null)
                            {
                                pizza.AddTopping(new Topping(topping.Name, topping.Price)
                                {
                                    Id = topping.ToppingId
                                });
                            }
                            topping = _db.Topping.Find(p.ToppingId2);
                            if (p.ToppingId2 != null)
                            {
                                pizza.AddTopping(new Topping(topping.Name, topping.Price)
                                {
                                    Id = topping.ToppingId
                                });
                            }
                            topping = _db.Topping.Find(p.ToppingId3);
                            if (p.ToppingId3 != null)
                            {
                                pizza.AddTopping(new Topping(topping.Name, topping.Price)
                                {
                                    Id = topping.ToppingId
                                });
                            }
                            topping = _db.Topping.Find(p.ToppingId4);
                            if (p.ToppingId4 != null)
                            {
                                pizza.AddTopping(new Topping(topping.Name, topping.Price)
                                {
                                    Id = topping.ToppingId
                                });
                            }
                            topping = _db.Topping.Find(p.ToppingId5);
                            if (p.ToppingId5 != null)
                            {
                                pizza.AddTopping(new Topping(topping.Name, topping.Price)
                                {
                                    Id = topping.ToppingId
                                });
                            }

                            order.AddToOrder(pizza);
                        }
                    }
                    order.CalculatePrice();
                    _user.OrderHistory.Add(order);
                }
            }
        }
        public void CreatePizza()
        {
            System.Console.Write("What kind of pizza?: ");
            string pizzaType = System.Console.ReadLine();

            int sizeId, crustId, topping1Id, topping2Id;

            Data.Entities.Size    pizzaSize;
            Data.Entities.Crust   pizzaCrust;
            Data.Entities.Topping pizzaTopping1, pizzaTopping2;
            Pizza pizza;

            switch (pizzaType)
            {
            case "custom":

                System.Console.WriteLine("Selecting size...");
                foreach (Data.Entities.Size s in _db.Size.ToList())
                {
                    System.Console.WriteLine($"{s.SizeId}: {s.Name} ${s.Price}");
                }
                System.Console.Write("Enter size id: ");
                sizeId    = System.Convert.ToInt32(System.Console.ReadLine());
                pizzaSize = _db.Size.Find(sizeId);
                if (pizzaSize == null)
                {
                    System.Console.WriteLine("Please enter a valid id and try again...");
                    return;
                }

                System.Console.WriteLine("Selecting crust...");
                foreach (Data.Entities.Crust c in _db.Crust.ToList())
                {
                    System.Console.WriteLine($"{c.CrustId}: {c.Name} ${c.Price}");
                }

                System.Console.Write("Enter crust id: ");
                crustId    = System.Convert.ToInt32(System.Console.ReadLine());
                pizzaCrust = _db.Crust.Find(crustId);
                if (pizzaCrust == null)
                {
                    System.Console.WriteLine("Please enter a valid id and try again...");
                    return;
                }

                System.Console.WriteLine("Selecting toppings...");
                foreach (Data.Entities.Topping t in _db.Topping.ToList())
                {
                    System.Console.WriteLine($"{t.ToppingId}: {t.Name} ${t.Price}");
                }

                System.Console.Write("Enter first topping id: ");
                topping1Id    = System.Convert.ToInt32(System.Console.ReadLine());
                pizzaTopping1 = _db.Topping.Find(topping1Id);

                System.Console.Write("Enter second topping id: ");
                topping2Id    = System.Convert.ToInt32(System.Console.ReadLine());
                pizzaTopping2 = _db.Topping.Find(topping2Id);


                pizza = new Pizza()
                {
                    Size = new Size(pizzaSize.Name, pizzaSize.Price)
                    {
                        Id = sizeId
                    },
                    Crust = new Crust(pizzaCrust.Name, pizzaCrust.Price)
                    {
                        Id = crustId
                    }
                };
                if (pizzaTopping1 != null)
                {
                    pizza.AddTopping(new Topping(pizzaTopping1.Name, pizzaTopping1.Price)
                    {
                        Id = topping1Id
                    });
                }
                if (pizzaTopping2 != null)
                {
                    pizza.AddTopping(new Topping(pizzaTopping2.Name, pizzaTopping2.Price)
                    {
                        Id = topping2Id
                    });
                }

                _user.CurrentOrder.AddToOrder(pizza);
                break;

            case "preset":
                CreatePresetPizza();
                break;
            }
        }