示例#1
0
        public Library.Inventory HandleTransaction(Library.Transaction transaction)
        {
            var result = _context.OrderLines.Where(x => x.ProductId == transaction.ProductId && x.Order.CustomerId == transaction.OrderDetails.Customer.Id).FirstOrDefault();

            if (result != null)
            {
                result.Quantity = result.Quantity + transaction.Quantity;

                _context.SaveChanges();

                Console.WriteLine("Transaction Successfully Occurred and Was Saved");

                Library.Inventory updatedorder = GetOrderInventoryByID(result.OrderId);

                return(updatedorder);
            }
            else
            {
                OrderLine orderLine = new OrderLine()
                {
                    OrderId   = transaction.OrderDetails.OrderId,
                    ProductId = transaction.ProductId,
                    Quantity  = transaction.Quantity,
                };

                _context.OrderLines.Add(orderLine);
            }

            Console.WriteLine("Could Not Find A Result");

            return(new Library.Inventory());
        }
示例#2
0
        public Library.Inventory GetOrderInventoryByID(int id)
        {
            Library.Inventory inventory = new Library.Inventory();

            var results = _context.OrderLines.Include(x => x.Product).Where(x => x.OrderId == id);

            foreach (var result in results)
            {
                inventory.AddProductQuantity(result.ProductId, result.Quantity);
            }

            return(inventory);
        }
示例#3
0
        public Library.Inventory GetStoreInventoryByID(int id)
        {
            Library.Inventory inventory = new Library.Inventory();

            var results = _context.Inventories.Where(x => x.StoreId == id);


            foreach (var result in results)
            {
                Library.Product product = new Library.Product(result.Product.ProductName, result.Product.Price.Value, result.ProductId);

                inventory.AddProductQuantity(product.Id, result.Quantity);
            }

            return(inventory);
        }
示例#4
0
        /// <summary>
        /// Displays a menu of options for users to manage Orders, allows them to return back to main menu.  Data type is validated here
        /// </summary>
        /// <param name="repository"></param>
        public static void DisplayOptions(Repository repository)
        {
            while (true)
            {
                Console.WriteLine("You are now viewing the Order Management Menu, Please Choose Another Key To Select An Options");
                Console.WriteLine("d: Vew Details of an Order");
                Console.WriteLine("a: Edit Item on Order");
                Console.WriteLine("c: Create A New Order");
                Console.WriteLine("q: To Return Back to the Main Menu");

                Console.WriteLine();

                string userinput = Console.ReadLine();


                if (userinput == "c")
                {
                    int customerid;

                    while (true)
                    {
                        Console.WriteLine("Please Enter The Customer Id\n");
                        string customeridstring = Console.ReadLine();

                        if (int.TryParse(customeridstring, out customerid))
                        {
                            break;
                        }
                        else if (customeridstring == "q")
                        {
                            break;
                        }
                    }

                    int storeid;

                    while (true)
                    {
                        Console.WriteLine("Please Enter The Store Id\n");
                        string storeidstring = Console.ReadLine();

                        if (int.TryParse(storeidstring, out storeid))
                        {
                            break;
                        }
                        else if (storeidstring == "q")
                        {
                            break;
                        }
                    }

                    DateTime timecreated = DateTime.Now;



                    try
                    {
                        Library.Order order = new Library.Order(customerid, storeid, timecreated);
                        if (repository.AddOrder(order))
                        {
                            Console.WriteLine("Successfully added Order");
                            Console.WriteLine("Remember to save to lock in changes.");
                        }
                    }
                    catch (ArgumentException exception)
                    {
                        Console.WriteLine("Could not Create Order");
                        Console.WriteLine(exception.Message);
                    }
                }

                else if (userinput == "a")
                {
                    Console.WriteLine("Please select the Id of an order you would like to edit\n");

                    int orderid;

                    OrderDetails orderDetails = new OrderDetails();

                    while (true)
                    {
                        while (true)
                        {
                            string orderidstring = Console.ReadLine();

                            if (int.TryParse(orderidstring, out orderid))
                            {
                                break;
                            }

                            Console.WriteLine("\nPlease Enter An Integer\n");
                        }

                        orderDetails = repository.GetOrderDetailsById(orderid);


                        if (!Object.ReferenceEquals(orderDetails.Customer, null))
                        {
                            Console.WriteLine("\nOrder found good job! ;)\n");

                            break;
                        }
                        else
                        {
                            Console.WriteLine($"Order not found, need a valid Id that matches with an order.");
                        }
                    }

                    Library.Inventory orderinventory = repository.GetOrderInventoryByID(orderid);

                    Library.Inventory storeinventory = repository.GetStoreInventoryByID(orderid);

                    Console.WriteLine("\nHere is the current content of that order.\n");

                    orderinventory.DisplayContents();

                    Console.WriteLine("\nPlease Enter the Product Id\n");

                    int productid;

                    while (true)
                    {
                        string orderidstring = Console.ReadLine();

                        if (int.TryParse(orderidstring, out productid))
                        {
                            break;
                        }

                        Console.WriteLine("\nPlease Enter An Integer\n");
                    }

                    Library.Product product = repository.GetProductById(productid);

                    Console.WriteLine("You selected the following item.");

                    product.DisplayDetails();

                    Console.WriteLine("Please enter how many you would like to add to the order.\n");

                    int quantity;

                    while (true)
                    {
                        string orderidstring = Console.ReadLine();

                        if (int.TryParse(orderidstring, out quantity))
                        {
                            break;
                        }

                        Console.WriteLine("Please Enter An Integer\n");
                    }


                    try
                    {
                        Library.Transaction transaction      = Library.TransactionProcessor.AttemptTransaction(storeinventory, orderinventory, productid, quantity, orderDetails);
                        Library.Inventory   updatedinventory = repository.HandleTransaction(transaction);
                        Console.WriteLine("\nHere is an updated inventory of the order for you\n");
                        updatedinventory.DisplayContents();
                    }
                    catch (ArgumentException exception)
                    {
                        Console.WriteLine(exception.Message);
                    }



                    break;
                }

                else if (userinput == "d")
                {
                    Console.WriteLine("Please select the Id of an order you would like to view the details of\n");

                    int orderid;

                    while (true)
                    {
                        Console.WriteLine("Please Enter The Order Id\n");
                        string orderidstring = Console.ReadLine();

                        if (int.TryParse(orderidstring, out orderid))
                        {
                            break;
                        }
                        else if (orderidstring == "q")
                        {
                            break;
                        }
                    }

                    Library.OrderDetails orderDetails = repository.GetOrderDetailsById(orderid);

                    orderDetails.Details();

                    break;
                }

                else if (userinput == "q")
                {
                    Console.WriteLine("Returning to Main Menu\n");
                    break;
                }
            }
        }
示例#5
0
 // A public "method" can be called from outside the class and can access either public or private properties and methods
 // This method accepts a "parameter" of type "Bike" and adds it to the private Inventory dictionary
 public void AddDisease(Disease aDisease)
 {
     Inventory.Add(aDisease.Name, aDisease);
 }