Task1.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Task1.aspx.vb" Inherits="Task1" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Page Processing Demo</title>
</head>

<body>

<form id="form1" runat="server">

    <h2>Page Processing Events Demo</h2>

    <asp:Button ID="Button1"
        runat="server"
        Text="Click Me"
        OnClick="Button1_Click" />

    <br /><br />

    <div>
        <a href="dashboard.html" class="btn">Back to Lab 04</a>
    </div>

    <asp:Label ID="Label1" runat="server"></asp:Label>

</form>

</body>
</html>

Task1.aspx.vb

Partial Class Task1
    Inherits System.Web.UI.Page

    Protected Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init
        Label1.Text &= "Page Init fired <br/>"
    End Sub

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        Label1.Text &= "Page Load fired <br/>"
    End Sub

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Label1.Text &= "Button Click fired <br/>"
    End Sub

    Protected Sub Page_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender
        Label1.Text &= "Page PreRender fired <br/>"
    End Sub

    Protected Sub Page_Unload(sender As Object, e As EventArgs) Handles Me.Unload
        System.Diagnostics.Debug.WriteLine("Page Unload fired")
    End Sub

End Class

LoginChoice.aspx

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="LoginChoice.aspx.vb" Inherits="LoginChoice" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Login Choice</title>
    <link rel="stylesheet" href="style.css" />
</head>
<body>
<form id="form1" runat="server">

<div class="container">
    <h2>Login As</h2>

    <asp:Button ID="btnEmployee" runat="server" Text="Employee" CssClass="btn" OnClick="btnEmployee_Click" />
    <br /><br />

    <asp:Button ID="btnCustomer" runat="server" Text="Customer" CssClass="btn" OnClick="btnCustomer_Click" />
</div>

</form>
</body>
</html>

LoginChoice.aspx.vb

Partial Class LoginChoice
 Inherits System.Web.UI.Page

    Protected Sub btnEmployee_Click(sender As Object, e As EventArgs)
  Response.Redirect("EmployeeLogin.aspx")
    End Sub

    Protected Sub btnCustomer_Click(sender As Object, e As EventArgs)
  Response.Redirect("main.aspx")
    End Sub

End Class

EmployeeLogin.aspx

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="EmployeeLogin.aspx.vb" Inherits="EmployeeLogin" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Employee Login</title>
    <link rel="stylesheet" href="style.css" />
</head>

<body>
<form id="form1" runat="server">

<div class="auth-box">
    <h2>Employee Login</h2>

    <asp:TextBox ID="txtEmail" runat="server" Placeholder="Email"></asp:TextBox>
    <asp:TextBox ID="txtPassword" runat="server" TextMode="Password" Placeholder="Password"></asp:TextBox>

    <asp:Button ID="btnLogin" runat="server" Text="Login" CssClass="btn" OnClick="btnLogin_Click" />
    <asp:Label ID="lblMsg" runat="server" ForeColor="Red"></asp:Label>

</div>

</form>
</body>
</html>

EmployeeLogin.aspx.vb

Partial Class EmployeeLogin
    Inherits System.Web.UI.Page

    Protected Sub btnLogin_Click(sender As Object, e As EventArgs)

        If txtEmail.Text = "admin" And txtPassword.Text = "1234" Then

            Session("Employee") = txtEmail.Text

            Response.Redirect("employee_dashboard.aspx")

        Else
            lblMsg.Text = "Invalid Email or Password"
        End If

    End Sub

End Class

EmployeeDashboard.aspx

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="employee_dashboard.aspx.vb" Inherits="employee_dashboard" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Employee Dashboard</title>
    <link rel="stylesheet" href="style.css" />
</head>
<body>
<form id="form1" runat="server">

<header>
    <h1>Employee Dashboard</h1>
</header>

<nav>
    <ul>
        <li>
            <asp:HyperLink ID="hlUpdateCatalog" runat="server" NavigateUrl="update_catalog.aspx" Text="Update Product Catalog" />
        </li>
        <li>
            <asp:HyperLink ID="btnLogout" runat="server" NavigateUrl="LoginChoice.aspx" Text="Logout" />
        </li>
    </ul>
</nav>

<div class="container">
    <h2>Welcome, Employee!</h2>
    <p>Select an option from the menu above to proceed.</p>
</div>

</form>
</body>
</html>

EmployeeDashboard.aspx.vb

Partial Class employee_dashboard
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Session("Employee") Is Nothing Then
            Response.Redirect("EmployeeLogin.aspx")
        End If
    End Sub

    Protected Sub btnLogout_Click(sender As Object, e As EventArgs)
        Session.Clear()
        Response.Redirect("LoginChoice.aspx")
    End Sub

End Class

update_catalog.aspx

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="update_catalog.aspx.vb" Inherits="_update_catalog" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Update Catalog</title>
    <link rel="stylesheet" href="style.css" />
</head>
<body>
    <form id="form1" runat="server">

        <header>
            <h1>Product Catalog Update</h1>
        </header>

        <div class="container">

            <h3>Edit Product</h3>

            Name:
            <asp:TextBox ID="txtName" runat="server" />
            <br /><br />

            Description:
            <asp:TextBox ID="txtDesc" runat="server" TextMode="SingleLine" />
            <br /><br />

            Price:
            <asp:TextBox ID="txtPrice" runat="server" />
            <br /><br />

            <asp:Button ID="btnConfirm" runat="server" Text="Confirm Changes" OnClick="btnConfirm_Click" />
            <br /><br />

            <asp:Label ID="lblMessage" runat="server" />
            <br />

            <asp:HyperLink ID="hlBack" runat="server" NavigateUrl="employee_dashboard.aspx">
                Back
            </asp:HyperLink>

        </div>

    </form>
</body>
</html>

update_catalog.aspx.vb

Partial Class _update_catalog
    Inherits System.Web.UI.Page

    Protected Sub btnConfirm_Click(sender As Object, e As EventArgs) Handles btnConfirm.Click

        If txtName.Text = "" Or txtDesc.Text = "" Or txtPrice.Text = "" Then
            lblMessage.Text = "Please fill all fields."
        Else
            lblMessage.Text = "Product updated successfully!"
        End If

    End Sub

End Class

main.aspx

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="main.aspx.vb" Inherits="_main" %>
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Pine Valley Furniture</title>
    <link rel="stylesheet" href="style.css" />
</head>
<body>
    <form id="form1" runat="server">
        <header>
            <h1>Pine Valley Furniture</h1>
        </header>

        <nav>
            <ul>
                <li><a href="register.aspx">Customer Registration</a></li>
                <li><a href="search.aspx">Search Products</a></li>
                <li><a href="Cart.aspx">Cart</a></li>
                <li><a href="help.aspx">Help</a></li>
            </ul>
        </nav>

        <div class="container">
            <h2>Welcome to Pine Valley Furniture</h2>
            <asp:HyperLink ID="ShopNowLink" runat="server" NavigateUrl="search.aspx">
                <asp:Button ID="btnShopNow" runat="server" Text="Shop Now" CssClass="btn" />
            </asp:HyperLink>
        </div>

        <footer>
            Contact us: 0309-5878126 | Email: hhm@gmail.com
        </footer>
    </form>
</body>
</html>

main.aspx.vb

Partial Class _main
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    End Sub
End Class

Register.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Register.aspx.vb" Inherits="Register" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Customer Registration</title>
    <link href="style.css" rel="stylesheet" />
</head>

<body>
<form id="form1" runat="server">

<header>
    <h1>Customer Registration</h1>
</header>

<nav>
    <ul>
        <li><a href="Main.aspx">Home</a></li>
        <li><a href="Register.aspx">Register</a></li>
        <li><a href="Cart.aspx">Cart</a></li>
    </ul>
</nav>

<div class="container">

    <div class="auth-box">

        <h2>Create Account</h2>

        <asp:TextBox ID="txtName" runat="server" CssClass="input-field" placeholder="Full Name" />
        <br /><br />

        <asp:TextBox ID="txtEmail" runat="server" CssClass="input-field" placeholder="Email" />
        <br /><br />

        <asp:TextBox ID="txtPassword" runat="server" TextMode="Password" CssClass="input-field" placeholder="Password" />
        <br /><br />

        <asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password" CssClass="input-field" placeholder="Confirm Password" />
        <br /><br />

        <asp:TextBox ID="txtAddress" runat="server" CssClass="input-field" placeholder="Address" />
        <br /><br />

        <asp:TextBox ID="txtCity" runat="server" CssClass="input-field" placeholder="City" />
        <br /><br />

        <asp:TextBox ID="txtState" runat="server" CssClass="input-field" placeholder="State" />
        <br /><br />

        <asp:TextBox ID="txtPostal" runat="server" CssClass="input-field" placeholder="Postal Code" />
        <br /><br />

        <asp:Button ID="btnSubmit" runat="server" Text="Register" CssClass="btn" OnClick="btnSubmit_Click" />
        <br /><br />

        <asp:Label ID="lblMessage" runat="server" />

    </div>

</div>

</form>
</body>
</html>

Register.aspx.vb

Partial Class Register
    Inherits System.Web.UI.Page

    Protected Sub btnSubmit_Click(sender As Object, e As EventArgs)

        If txtPassword.Text <> txtConfirmPassword.Text Then
            lblMessage.ForeColor = Drawing.Color.Red
            lblMessage.Text = "Passwords do not match!"
            Exit Sub
        End If

        lblMessage.ForeColor = Drawing.Color.Green
        lblMessage.Text = "Registration Successful!"

    End Sub

End Class

Cart.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Cart.aspx.vb" Inherits="Cart" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Shopping Cart</title>
    <link href="style.css" rel="stylesheet" />
</head>
<body>

<form id="form1" runat="server">

<header>
    <h1>Shopping Cart</h1>
</header>

<nav>
    <ul>
        <li><a href="main.aspx">Home</a></li>
        <li><a href="Register.aspx">Register</a></li>
        <li><a href="Cart.aspx">Cart</a></li>
    </ul>
</nav>

<div class="container">

    <div class="product-grid">

        <asp:Repeater ID="rptCart" runat="server">
            <ItemTemplate>
                <div class="product-card">

                    <div class="image-box"></div>

                    <h3><%# Eval("ProductName") %></h3>

                    <p>Price: $<%# Eval("Price") %></p>
                    <p>Quantity: <%# Eval("Quantity") %></p>

                </div>
            </ItemTemplate>
        </asp:Repeater>

    </div>

    <br />

    <asp:Button
        ID="btnCheckout"
        runat="server"
        Text="Proceed to Checkout"
        CssClass="btn"
        PostBackUrl="~/payment.aspx" />

</div>

</form>

</body>
</html>

Cart.aspx.vb

Partial Class Cart
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not IsPostBack Then
            rptCart.DataSource = GetCartItems()
            rptCart.DataBind()
        End If
    End Sub

    Private Function GetCartItems() As Array
        Return New Object() {
            New With {.ProductName = "Chair", .Price = 50, .Quantity = 2},
            New With {.ProductName = "Table", .Price = 120, .Quantity = 1},
            New With {.ProductName = "Lamp", .Price = 30, .Quantity = 3}
        }
    End Function

End Class

Help.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Help.aspx.vb" Inherits="Help" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Help</title>
    <link rel="stylesheet" href="style.css" />
</head>

<body>

<form id="form1" runat="server">

<header>
    <h1>Help & User Guide</h1>
</header>

<nav>
    <ul>
        <li><a href="main.aspx">Home</a></li>
        <li><a href="Register.aspx">Register</a></li>
        <li><a href="Search.aspx">Search</a></li>
        <li><a href="Cart.aspx">Order</a></li>
    </ul>
</nav>

<div class="container">

<h3>New Customer Registration</h3>
<p>Customers can register by filling their name, address, city, state and postal code.</p>
<p><a href="Register.aspx">Go to Registration Page</a></p>

<hr />

<h3>Search Products</h3>
<p>Users can search products by description and product line.</p>
<p><a href="Search.aspx">Go to Search Page</a></p>

<hr />

<h3>Product Selection & Order Placement</h3>
<p>Customers can select products, enter quantity and place orders.</p>
<p><a href="Cart.aspx">Go to Order Page</a></p>

<hr />

<h3>Product Catalog Update</h3>
<p>Only employees can update product description, finish and price.</p>
<p><a href="Employee_Login.aspx">Employee Login</a></p>

<hr />

<h3>Payment Provision</h3>
<p>Customers can select payment method after placing order.</p>
<p><a href="Payment.aspx">Go to Payment Page</a></p>

</div>

<footer>
    Contact us: 0309-5878126 | Email: hhm@gmail.com
</footer>

</form>

</body>
</html>

Help.aspx.vb

Partial Class Help
    Inherits System.Web.UI.Page

End Class

Search.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="search.aspx.vb" Inherits="search" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Search Products - Pine Valley Furniture</title>
    <link rel="stylesheet" href="style.css" />
</head>

<body>

<form id="form1" runat="server">

<header>
    <h1>Search Products</h1>
</header>

<nav>
    <ul>
        <li><a href="main.aspx">Home</a></li>
        <li><a href="register.aspx">Register</a></li>
        <li><a href="help.aspx">Help</a></li>
    </ul>
</nav>

<div class="container">

    <asp:Label Text="Search Product:" runat="server" />
    <asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>

    <asp:Button ID="btnSearch"
        runat="server"
        Text="Search"
        CssClass="btn"
        OnClick="btnSearch_Click" />

    <asp:Button ID="btnShowAll"
        runat="server"
        Text="Show All"
        CssClass="btn"
        OnClick="btnShowAll_Click" />

    <br /><br />

    <asp:Label ID="lblMessage" runat="server"></asp:Label>

    <div class="product-grid">
        <asp:Repeater ID="rptProducts" runat="server">
            <ItemTemplate>
                <div class="product-card">
                    <div class="image-box"></div>
                    <h3><%# Eval("Product_Description") %></h3>
                    <p>Finish: <%# Eval("Product_Finish") %></p>
                    <p>Price: $<%# Eval("Standard_Price") %></p>
                </div>
            </ItemTemplate>
        </asp:Repeater>
    </div>

</div>

</form>

</body>
</html>

search.aspx.vb

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Web.UI

Partial Class search
    Inherits Page

    Protected Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click

        Dim constr As String
        constr = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString

        Dim con As New SqlConnection
        con.ConnectionString = constr

        Dim cmd As New SqlCommand
        cmd.Connection = con

        cmd.CommandText = "SELECT Product_Id, Product_Description, Product_Finish, Standard_Price "
        cmd.CommandText &= "FROM PRODUCT_t "
        cmd.CommandText &= "WHERE Product_Description LIKE @search"

        cmd.Parameters.AddWithValue("@search", "%" & txtSearch.Text & "%")

        Dim dr As SqlDataReader

        Try
            con.Open()

            dr = cmd.ExecuteReader()

            If dr.HasRows = False Then

                rptProducts.DataSource = Nothing
                rptProducts.DataBind()
                lblMessage.Text = "No match found."

            Else

                rptProducts.DataSource = dr
                rptProducts.DataBind()
                lblMessage.Text = "Product(s) found."

            End If

        Catch ex As Exception
            lblMessage.Text = "Database Error: " & ex.Message

        Finally
            con.Close()
            cmd.Dispose()
        End Try

    End Sub

    Protected Sub btnShowAll_Click(sender As Object, e As EventArgs) Handles btnShowAll.Click

        Dim constr As String
        constr = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString

        Dim con As New SqlConnection
        con.ConnectionString = constr

        Dim cmd As New SqlCommand
        cmd.Connection = con

        cmd.CommandText = "SELECT Product_Id, Product_Description, Product_Finish, Standard_Price "
        cmd.CommandText &= "FROM PRODUCT_t"

        Dim dr As SqlDataReader

        Try
            con.Open()
            dr = cmd.ExecuteReader()

            If dr.HasRows = False Then

                rptProducts.DataSource = Nothing
                rptProducts.DataBind()
                lblMessage.Text = "No products available."

            Else

                rptProducts.DataSource = dr
                rptProducts.DataBind()
                lblMessage.Text = "All products loaded successfully."

            End If

        Catch ex As Exception
            lblMessage.Text = "Database Error: " & ex.Message

        Finally
            con.Close()
            cmd.Dispose()
        End Try

    End Sub

End Class

Payment.aspx

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="payment.aspx.vb" Inherits="_payment" %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Payment</title>
    <link rel="stylesheet" href="style.css" />
</head>

<body>
<form id="form1" runat="server">

<header>
    <h1>Payment Options</h1>
</header>

<div class="container">

    <asp:RadioButton ID="rbCash" runat="server" GroupName="Payment" Text="Cash on Delivery" /><br />
    <asp:RadioButton ID="rbCard" runat="server" GroupName="Payment" Text="Credit/Debit Card" /><br />
    <asp:RadioButton ID="rbWallet" runat="server" GroupName="Payment" Text="Other Wallet" /><br /><br />

    <asp:Button ID="btnConfirm"
        runat="server"
        Text="Confirm Payment"
        CssClass="btn"
        OnClick="btnConfirm_Click" /><br /><br />

    <asp:HyperLink ID="hlBack" runat="server" NavigateUrl="main.aspx">Back</asp:HyperLink>

</div>

</form>
</body>
</html>

payment.aspx.vb

Partial Class _payment
    Inherits System.Web.UI.Page

    Protected Sub btnConfirm_Click(sender As Object, e As EventArgs)

        If rbCash.Checked Then
            Response.Write("<script>alert('Cash on Delivery Selected');</script>")
        ElseIf rbCard.Checked Then
            Response.Write("<script>alert('Card Payment Selected');</script>")
        ElseIf rbWallet.Checked Then
            Response.Write("<script>alert('Wallet Selected');</script>")
        Else
            Response.Write("<script>alert('Please select payment method');</script>")
        End If

    End Sub

End Class

style.css

html, body {
    height: 100%;
    margin: 0;
}

body {
    font-family: Arial, sans-serif;
    display: flex;
    flex-direction: column;
    background-color: #FFF2E0;
    color: #2d2d2d;
}

form {
    flex: 1;
    display: flex;
    flex-direction: column;
}

header {
    background: #898AC4;
    color: white;
    padding: 15px;
    text-align: center;
}

nav ul {
    list-style-type: none;
    background-color: #A2AADB;
    padding: 0;
    margin: 0;
    overflow: hidden;
}

nav ul li {
    float: left;
}

nav ul li a {
    display: block;
    color: #FFF2E0;
    padding: 12px 18px;
    text-decoration: none;
}

nav ul li a:hover {
    background-color: #C0C9EE;
    color: #FFF2E0;
}

.container {
    flex: 1;
    padding: 25px;
}

button, .btn {
    padding: 10px 18px;
    background: #A2AADB;
    color: white;
    border: none;
    border-radius: 8px;
    cursor: pointer;
}

button:hover, .btn:hover {
    background: #898AC4;
}

footer {
    background-color: #C0C9EE;
    text-align: center;
    padding: 12px;
    width: 100%;
}

.product-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}

.product-card {
    background: #C0C9EE;
    padding: 15px;
    border-radius: 10px;
    width: 200px;
    text-align: center;
}

.image-box {
    width: 100%;
    height: 120px;
    background-color: #A2AADB;
    border-radius: 8px;
    margin-bottom: 10px;
}

.auth-box {
    width: 350px;
    background: white;
    padding: 25px;
    border-radius: 12px;
    box-shadow: 0px 0px 15px rgba(0,0,0,0.2);
    margin: auto;
    margin-top: 120px;
    text-align: center;
}

.auth-box input, .auth-box .btn {
    width: 100%;
    padding: 10px;
    margin-top: 10px;
}