private async Task <int> GetMaxPage(int PageSize)
        {
            int numProducts = await OrderDB.GetNumOrders(orderContext);

            return(Convert.ToInt32(
                       Math.Ceiling((double)numProducts / PageSize)));
        }
        public static async Task Add(Form_PlaceOrder addForm, bool IsEditing, Order newOrder)
        {
            if (!IsEditing)
            {
                newOrder             = new Order();
                newOrder.DateOfOrder = DateTime.Now;
            }
            else
            {
                newOrder.IsDelivered = addForm.chkBoxIsDelivered.Checked;
            }

            newOrder.FirstName = addForm.tBoxFname.Text;
            newOrder.LastName  = addForm.tBoxLname.Text;
            newOrder.Address   = addForm.tBoxAddress.Text;
            newOrder.City      = addForm.tBoxCity.Text;
            newOrder.State     = addForm.cBoxState.SelectedItem is StateItem state ?
                                 state.StateAbbreviation : "ER";
            newOrder.ZipCode           = addForm.tBoxZip.Text;
            newOrder.PhoneNumber       = addForm.tBoxPhone.Text;
            newOrder.Quantity          = Convert.ToByte(addForm.numUpDwnBurgers.Value);
            newOrder.SpecialDirections = addForm.txtBoxInstruct.Text;

            ValidationContext        validationContext = new ValidationContext(newOrder);
            IList <ValidationResult> errors            = new List <ValidationResult>();

            string errMsg = "VALIDATION ERROR:";

            if (!Validator.TryValidateObject(newOrder, validationContext, errors, true))
            {
                foreach (ValidationResult result in errors)
                {
                    errMsg += $"\n{result.ErrorMessage}";
                }
                MessageBox.Show(errMsg);
            }
            else
            {
                if (!IsEditing)
                {
                    await OrderDB.Add(newOrder, orderContext);

                    MessageBox.Show("Order Added");
                }
                else
                {
                    await OrderDB.Edit(newOrder, orderContext);

                    MessageBox.Show("Order Edited");
                }
            }
        }
        public static void Edit(Form_ShowOrders showForm)
        {
            var selectedRow = showForm.dGridOrderDisplay.CurrentRow;
            var selectedID  = int.Parse(selectedRow.Cells[0].Value.ToString());

            Form_PlaceOrder EditOrder = new Form_PlaceOrder
            {
                IsEditing   = true,
                OrderToEdit = OrderDB.GetOrderbyID(selectedID /*, orderContext*/)
            };

            EditOrder.ShowDialog();
            string[] RowReplacement =
                ToStringArray(OrderDB.GetOrderbyID(selectedID /*, orderContext*/));
            showForm.dGridOrderDisplay.CurrentRow.SetValues(RowReplacement);
        }
        public static void ShowPage(Form_ShowOrders displayForm)
        {
            //const byte pageSize = 14;

            List <Order> pageOrders =
                //OrderDB.GetOrdersByPageWorkaround(displayForm.PageNum, pageSize, orderContext);
                OrderDB.GetAllOrders(/*orderContext*/);

            //List<Order> pageOrders = await
            //    OrderDB.GetOrdersByPage(displayForm.PageNum, pageSize, orderContext);
            foreach (Order orderItem in pageOrders)
            {
                DataGridViewRow orderRow = ToRow(orderItem);

                displayForm.dGridOrderDisplay.Rows.Add(orderRow);
            }
        }
        public static async Task Delete(Form_ShowOrders showForm)
        {
            var selectedRow = showForm.dGridOrderDisplay.CurrentRow;
            var selectedID  = int.Parse(selectedRow.Cells[0].Value.ToString());
            var order       = new Order {
                OrderID = selectedID
            };

            DialogResult dialogResult = MessageBox.Show($"Are you sure you want to delete order #{selectedID}?",
                                                        "Are you sure?", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                showForm.Enabled = false;
                await OrderDB.Delete(order /*, orderContext*/);

                showForm.Enabled = true;
                MessageBox.Show($"Order #{selectedID} Deleted");
            }
            showForm.dGridOrderDisplay.Rows.RemoveAt(selectedRow.Index);
        }