protected void updateCustomersTable()
    {
        linqTestingDataContext db = new linqTestingDataContext();
                db.Connection.ConnectionString =
                System.Configuration.ConfigurationManager.AppSettings["linqTest"];

                Customer cus = new Customer
                {
                    FName = txtFName.Text,
                    LName = txtLName.Text,
                    Phone = txtPhone.Text,
                    Address1 = txtAddress1.Text,
                    Address2 = txtAddress2.Text,
                    Suburb = txtSuburb.Text,
                    State = DropDownListState.Text,
                    Postcode = txtPostcode.Text,
                    Ctype = DropDownListCType.Text,
                    CardNo = DropDownListCType.Text=="Amex"? txtCardNoAMEX.Text:txtCardNo.Text,
                    ExpDate = CalendarExpDate.SelectedDate,
                    Email = txtEmail.Text,
                };

                db.Customers.InsertOnSubmit(cus);
                db.SubmitChanges();
                updateOrdersTable(cus.CID);
    }
    protected void GridViewProducts_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "cmdEditProduct")
        {
            showProductForm();
            linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var prod =
                from p in db.Products
                where (p.PID == Convert.ToInt32(e.CommandArgument.ToString()))
                select p;
            lblProductID.Text = e.CommandArgument.ToString();

            foreach (Product pp in prod)
            {
                txtPName.Text = pp.PName;
                txtPBrand.Text = pp.Brand;
                txtPUnitPrice.Text = pp.UnitPrice.ToString();
                txtPUnitsInStock.Text = pp.UnitsInStock.ToString();
                txtPCategory.Text = pp.Category;
                txtPdescription.Text = pp.Description;
                DropDownListPSupplierID.Text = pp.SID.ToString();
                txtPReOrderLevel.Text = pp.ROL.ToString();
            }
        }

        if (e.CommandName == "cmdDeleteProduct")
        {

            linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var prod =
                from p in db.Products
                where (p.PID == Convert.ToInt32(e.CommandArgument.ToString()))
                select p;
            if (Convert.ToInt32(e.CommandArgument.ToString()) != 18)
            {
                try
                {
                    db.Products.DeleteAllOnSubmit(prod);
                    db.SubmitChanges();
                    ViewData();
                }
                catch
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('This product is on the some order list. Delete orders first.');", true);
                }
            }
        }
    }
    protected void GridViewSuppliers_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "cmdEditSupplier")
            {
                showSupplierForm();
                linqTestingDataContext db = new linqTestingDataContext();
                db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
                var supp =
                    from s in db.Suppliers
                    where (s.SID == Convert.ToInt32(e.CommandArgument.ToString()))
                    select s;
                lblSupplierID.Text = e.CommandArgument.ToString();

                foreach (Supplier sup in supp)
                {
                    txtSName.Text=sup.SName;
                    txtSPhone.Text = sup.Phone;
                    txtSEmail.Text = sup.Email;
                    txtSAddress1.Text = sup.Address1;
                    txtSAddress2.Text = sup.Address2;
                    txtSSuburb.Text = sup.Suburb;
                    DropDownListSState.Text = sup.State;
                    txtSPostcode.Text = sup.Postcode;
                }
            }

        if (e.CommandName == "cmdDeleteSupplier")
        {

            linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var supp =
                from s in db.Suppliers
                where (s.SID == Convert.ToInt32(e.CommandArgument.ToString()))
                select s;

            try
            {
                db.Suppliers.DeleteAllOnSubmit(supp);
                db.SubmitChanges();
                ViewData();
            }
            catch
            {
                ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('Products supplied by this supplier are already on the order list. Delete orders first.');", true);
            }
        }
    }
    protected void displayBrandProducts()
    {
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];

        var products =
            from p in db.Products
            where (p.Brand == ddListBrands.Text)
            select p;

        GridViewProducts.DataSource = products;
        GridViewProducts.DataBind();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];

        var products =
            from p in db.Products
            where (p.ROL > p.UnitsInStock)
            select p;

        GridViewBelowROL.DataSource = products;
        GridViewBelowROL.DataBind();
    }
    protected void updateOrdersTable(int cID)
    {
        linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
            System.Configuration.ConfigurationManager.AppSettings["linqTest"];

            Order ord = new Order
            {
                OrderDate = DateTime.Now,
                DeliveryDate = DateTime.Now.AddDays(5),
                CID = cID,
            };
            db.Orders.InsertOnSubmit(ord);
            db.SubmitChanges();
            updateOrders_ProductsTable(ord.OrderID);
    }
    protected void LinkButtonProductSave_Click(object sender, EventArgs e)
    {
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
        var pro = db.Products.Single
            (p => p.PID == Convert.ToInt32(lblProductID.Text));

        pro.PName = txtPName.Text;
        pro.Brand = txtPBrand.Text;
        pro.UnitPrice = Convert.ToDecimal(txtPUnitPrice.Text);
        pro.UnitsInStock = Convert.ToInt32(txtPUnitsInStock.Text);
        pro.Category = txtPCategory.Text;
        pro.Description = txtPdescription.Text;
        pro.SID = Convert.ToInt32(DropDownListPSupplierID.Text);
        pro.ROL = Convert.ToInt32(txtPReOrderLevel.Text);
        db.SubmitChanges();

        ViewData();
    }
    protected void LinkButtonSupplierAdd_Click(object sender, EventArgs e)
    {
        linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
         System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            Supplier s = new Supplier
            {
                SName = txtSName.Text,
                Phone = txtSPhone.Text,
                Email = txtSEmail.Text,
                Address1 = txtSAddress1.Text,
                Address2 = txtSAddress2.Text,
                Suburb = txtSSuburb.Text,
                State = DropDownListSState.Text,
                Postcode = txtSPostcode.Text
            };

            db.Suppliers.InsertOnSubmit(s);
            db.SubmitChanges();
            ViewData();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // welcomeWebPart.Text = TextBoxName.Text;
        if (IsPostBack == false)
        {
            foreach (WebPartDisplayMode mode in WebPartManager1.SupportedDisplayModes)
            {
                DropDownList1.Items.Add(mode.Name);
            }
            DropDownList1.SelectedValue = WebPartManager1.DisplayMode.ToString();
        }

        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
        var ord_prod =
            from o_p in db.Order_Products
            where (o_p.TotalSale>500)
            select o_p;

        GridViewVIPOrders.DataSource = ord_prod;
        GridViewVIPOrders.DataBind();
    }
    protected void DisplayShoppingCart()
    {
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
        var shopping =
            from scd in db.ShoppingCartDatas
            select scd;

        GridViewShoppingCart.DataSource = shopping;
        GridViewShoppingCart.DataBind();
        showTotal();
    }
    private void ViewData()
    {
        ClearForm();
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
        var prod =
            from p in db.Products
            select p;

        GridViewAdminProducts.DataBind();
        GridViewAdminProducts.Visible = true;
        tblProductForm.Visible = false;
        LinkButtonAddNewProduct.Visible = true;
    }
    protected void updateOrders_ProductsTable(int ordID)
    {
        linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
            System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var shopping =
                from scd in db.ShoppingCartDatas
                select scd;

            foreach (ShoppingCartData item in shopping)
            {
                Order_Product ord_prod = new Order_Product
                {
                    PID=item.PID,
                    OrderID=ordID,
                    Qty=item.Quantity,
                    TotalSale=item.Quantity*item.UnitPrice,
                };
                db.Order_Products.InsertOnSubmit(ord_prod);
                db.SubmitChanges();
            }
    }
    protected void updateProductsTable()
    {
        linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
            System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var shopping =
                    from scd in db.ShoppingCartDatas
                    select scd;
            foreach (ShoppingCartData scd in shopping)
            {
                int unitsSold = scd.Quantity;
                int prodID = scd.PID;
                linqTestingDataContext db1 = new linqTestingDataContext();
                db1.Connection.ConnectionString =
                System.Configuration.ConfigurationManager.AppSettings["linqTest"];
                var pickedRecord =
                        from pr in db1.Products
                        where (pr.PID == prodID)
                        select pr;

                foreach (Product pp in pickedRecord)
                {
                    pp.UnitsInStock -= unitsSold;
                    db1.SubmitChanges();
                }
            }
            db.SubmitChanges();
    }
    protected void LinkButtonSupplierAdd_Click(object sender, EventArgs e)
    {
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
         System.Configuration.ConfigurationManager.AppSettings["linqTest"];

        Product pro = new Product
        {
            PName = txtPName.Text.Trim(),
            Brand = txtPBrand.Text.Trim(),
            UnitPrice = Convert.ToDecimal(txtPUnitPrice.Text),
            UnitsInStock = Convert.ToInt32(txtPUnitsInStock.Text),
            Category = txtPCategory.Text.Trim(),
            Description = txtPdescription.Text.Trim(),
            SID = Convert.ToInt32(DropDownListPSupplierID.Text),
            ROL = Convert.ToInt32(txtPReOrderLevel.Text)
        };

        db.Products.InsertOnSubmit(pro);
        db.SubmitChanges();
        ViewData();
    }
    protected void showTotal()
    {
        decimal subTotal = 0;
        decimal grandTotal = 0;
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
        var shopping =
            from scd in db.ShoppingCartDatas
            select scd;

        foreach (ShoppingCartData sp in shopping)
        {
            subTotal = sp.UnitPrice * sp.Quantity;
            grandTotal += subTotal;
        }
        lblTotalValue.Text = grandTotal.ToString();
    }
    protected void LinkButtonSupplierSave_Click(object sender, EventArgs e)
    {
        linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
            System.Configuration.ConfigurationManager.AppSettings["linqTest"];

            var supp = db.Suppliers.Single
                (p => p.SID == Convert.ToInt32(lblSupplierID.Text));

            supp.SName = txtSName.Text.Trim();
            supp.Phone = txtSPhone.Text.Trim();
            supp.Email = txtSEmail.Text.Trim();
            supp.Address1 = txtSAddress1.Text.Trim();
            supp.Address2 = txtSAddress2.Text.Trim();
            supp.Suburb = txtSSuburb.Text.Trim();
            supp.State = DropDownListSState.Text.Trim();
            supp.Postcode = txtSPostcode.Text.Trim();

            db.SubmitChanges();
            ViewData();
    }
    protected void GridViewShoppingCart_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "cmdMore")
        {
            linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
            System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var shopping =
                    from scd in db.ShoppingCartDatas
                    where (scd.TempOrderID == Convert.ToInt32(e.CommandArgument.ToString()))
                    select scd;
            foreach (ShoppingCartData sp in shopping)
            {
                sp.Quantity = sp.Quantity + 1;
            }
            db.SubmitChanges();

            DisplayShoppingCart();
        }

        if (e.CommandName == "cmdLess")
        {
            linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
            System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var shopping =
                    from scd in db.ShoppingCartDatas
                    where (scd.TempOrderID == Convert.ToInt32(e.CommandArgument.ToString()))
                    select scd;
            foreach (ShoppingCartData sp in shopping)
            {
                if (sp.Quantity > 1)
                    sp.Quantity = sp.Quantity - 1;
            }
            db.SubmitChanges();

            DisplayShoppingCart();
        }

        if (e.CommandName == "cmdDelete")
        {
            linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
            System.Configuration.ConfigurationManager.AppSettings["linqTest"];

            var shopping1 =
                    from scd in db.ShoppingCartDatas
                    where (scd.TempOrderID == Convert.ToInt32(e.CommandArgument.ToString()))
                    select scd;

            db.ShoppingCartDatas.DeleteAllOnSubmit(shopping1);
            db.SubmitChanges();

            displayCatalogue();
            DisplayShoppingCart();
        }
    }
    protected void GridViewProducts_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "cmdAddToShoppingCart")
        {
            linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var prod =
                from p in db.Products
                where (p.PID == Convert.ToInt32(e.CommandArgument.ToString()))
                select p;

            var shopping =
                    from scd in db.ShoppingCartDatas
                    where (scd.PID == Convert.ToInt32(e.CommandArgument.ToString()))
                    select scd;
            bool alreadyThere = false;
            foreach(ShoppingCartData scd in shopping)
                alreadyThere = true;

            if (!alreadyThere)
            {
                foreach (Product pp in prod)
                {
                    pID = pp.PID;
                    pName = pp.PName;
                    unitPrice = pp.UnitPrice;
                }

                ShoppingCartData scd = new ShoppingCartData
                {
                    PID = pID,
                    PName = pName,
                    UnitPrice = unitPrice,
                    Quantity = 1
                };

                db.ShoppingCartDatas.InsertOnSubmit(scd);
                db.SubmitChanges();

                DisplayShoppingCart();
                displayCatalogue();
            }
            else
                LabelAlreadyThere.Text="Item Already in the shopping Cart";
        }
    }
    protected void EmptyShoppingCart()
    {
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];

        var shopping =
                from scd in db.ShoppingCartDatas
                select scd;
        foreach (ShoppingCartData xProducts in shopping)
        {
            db.ShoppingCartDatas.DeleteAllOnSubmit(shopping);
            db.SubmitChanges();
        }
        DisplayShoppingCart();
    }
    private void ViewData()
    {
        ClearForm();
            linqTestingDataContext db = new linqTestingDataContext();
            db.Connection.ConnectionString =
            System.Configuration.ConfigurationManager.AppSettings["linqTest"];
            var supp =
                from s in db.Suppliers
                select s;

        //    GridViewSuppliers.DataSource = supp;
            GridViewSuppliers.DataBind();
            GridViewSuppliers.Visible = true;
            tblSupplierForm.Visible = false;
            LinkButtonAddNewSupplier.Visible = true;
    }
    protected void displayProducts()
    {
        linqTestingDataContext db = new linqTestingDataContext();
        db.Connection.ConnectionString =
        System.Configuration.ConfigurationManager.AppSettings["linqTest"];
        var shopping =
            from scd in db.ShoppingCartDatas
            select scd;

        foreach (ShoppingCartData item in shopping)
        {
            var products =
                    from p in db.Products
                    where !(from scd in db.ShoppingCartDatas
                            select scd.PID).Contains(p.PID)
                    select p;

            GridViewProducts.DataSource = products;
            GridViewProducts.DataBind();
        }
    }