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
employee_dashboard.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="hlUpdateCustomer" runat="server" NavigateUrl="update_customer.aspx" Text="Update Customer" />
</li>
<li>
<asp:Button ID="btnLogout" runat="server" Text="Logout" CssClass="btn" OnClick="btnLogout_Click" />
</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>
employee_dashboard.aspx.vb
Imports System
Imports System.Web.UI
Partial Class employee_dashboard
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Session("Role") Is Nothing OrElse Session("Role").ToString() <> "Employee" 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
CustomerLogin.aspx
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="CustomerLogin.aspx.vb" Inherits="CustomerLogin" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Customer Login</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<form id="form1" runat="server">
<div class="auth-box">
<h2>Customer Login</h2>
<asp:TextBox ID="txtUsername" runat="server" Placeholder="Username"></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" />
<br />
<asp:Label ID="lblMsg" runat="server" ForeColor="Red"></asp:Label>
<br />
<a href="Register.aspx">Don't have an account? Register</a>
</div>
</form>
</body>
</html>
CustomerLogin.aspx.vb
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Partial Class CustomerLogin
Inherits System.Web.UI.Page
Protected Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Dim connStr As String = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString
Dim query As String = "SELECT Customer_Id, Customer_Name FROM CUSTOMER_t WHERE Email = @email AND User_Password = @pass"
Using conn As New SqlConnection(connStr)
Using cmd As New SqlCommand(query, conn)
cmd.Parameters.AddWithValue("@email", txtUsername.Text.Trim())
cmd.Parameters.AddWithValue("@pass", txtPassword.Text.Trim())
Try
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader()
If reader.Read() Then
Session("Customer_Id") = reader("Customer_Id")
Session("UserName") = reader("Customer_Name").ToString()
Session("Role") = "Customer"
Response.Redirect("main.aspx")
Else
lblMsg.Text = "Invalid email or password."
End If
Catch ex As Exception
lblMsg.Text = "Database Error: " & ex.Message
End Try
End Using
End Using
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="txtEmpID" runat="server" Placeholder="Employee ID"></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" />
<br />
<asp:Label ID="lblMsg" runat="server" ForeColor="Red"></asp:Label>
</div>
</form>
</body>
</html>
EmployeeLogin.aspx.vb
Imports System.Data.SqlClient
Imports System.Configuration
Partial Class EmployeeLogin
Inherits System.Web.UI.Page
Dim connStr As String = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString
Protected Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Using conn As New SqlConnection(connStr)
Dim query As String = "SELECT Employee_Id, Employee_Name FROM EMPLOYEE_t WHERE Employee_Id = @EmpID AND User_Password = @Password"
Using cmd As New SqlCommand(query, conn)
cmd.Parameters.AddWithValue("@EmpID", txtEmpID.Text.Trim())
cmd.Parameters.AddWithValue("@Password", txtPassword.Text.Trim())
Try
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader()
If reader.Read() Then
Session("Employee_Id") = reader("Employee_Id")
Session("Employee_Name") = reader("Employee_Name")
Session("Role") = "Employee"
Response.Redirect("employee_dashboard.aspx")
Else
lblMsg.Text = "Invalid Employee ID or Password."
End If
Catch ex As Exception
lblMsg.Text = "Error: " & ex.Message
End Try
End Using
End Using
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="main.aspx">Home</a></li>
<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>
<li>
<asp:LinkButton ID="btnLogout" runat="server"
OnClick="btnLogout_Click">
Logout
</asp:LinkButton>
</li>
</ul>
</nav>
<div class="container">
<h2>Welcome to Pine Valley Furniture</h2>
<asp:Label ID="lblUser" runat="server" Font-Bold="True"></asp:Label>
<br /><br />
<asp:HyperLink ID="ShopNowLink" runat="server" NavigateUrl="search.aspx">
<asp:Button ID="btnShopNow" runat="server"
Text="Shop Now"
CssClass="btn" />
</asp:HyperLink>
</div>
<div>
<a href="dashboard.html" class="btn">Back to lab6</a>
</div>
<footer>
Contact us: 0309-5878126 | Email: pvfc@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
If Not IsPostBack Then
If Session("Customer_Id") IsNot Nothing Then
lblUser.Text = "Welcome, " & Session("UserName").ToString()
btnLogout.Visible = True
Else
lblUser.Text = "Welcome, Guest"
btnLogout.Visible = False
End If
End If
End Sub
Protected Sub btnLogout_Click(sender As Object, e As EventArgs)
Session.Clear()
Session.Abandon()
Response.Redirect("main.aspx")
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>Pine Valley Furniture - 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>New Customer</h2>
<asp:TextBox ID="txtCustomerId" runat="server"
CssClass="input-field" placeholder="Customer ID" />
<br /><br />
<asp:TextBox ID="txtEmail" runat="server"
CssClass="input-field" placeholder="Email" />
<br /><br />
<asp:TextBox ID="txtPassword" runat="server"
CssClass="input-field" placeholder="Password"
TextMode="Password" />
<br /><br />
<asp:TextBox ID="txtName" runat="server"
CssClass="input-field" placeholder="Customer Name" />
<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 (2 letters)" />
<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" />
<br /><br />
<asp:LinkButton ID="lnkUpdateCustomer" runat="server" OnClick="lnkUpdateCustomer_Click" CssClass="btn">
Update Customer Info
</asp:LinkButton>
<br /><br />
<asp:Label ID="lblAccessMsg" runat="server" ForeColor="Red"></asp:Label>
</div>
</div>
</form>
</body>
</html>
Register.aspx.vb
Imports System.Data.SqlClient
Imports System.Configuration
Partial Class Register
Inherits System.Web.UI.Page
Dim connStr As String = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString
Protected Sub btnSubmit_Click(sender As Object, e As EventArgs)
Using conn As New SqlConnection(connStr)
Dim query As String = "INSERT INTO CUSTOMER_t " &
"(Customer_Id, Customer_Name, Customer_Address, Customer_City, Customer_State, Postal_Code, Email, User_Password, Role_Id) " &
"VALUES (@Id, @Name, @Address, @City, @State, @Postal, @Email, @Password, 1)"
Using cmd As New SqlCommand(query, conn)
cmd.Parameters.AddWithValue("@Id", txtCustomerId.Text)
cmd.Parameters.AddWithValue("@Name", txtName.Text)
cmd.Parameters.AddWithValue("@Address", txtAddress.Text)
cmd.Parameters.AddWithValue("@City", txtCity.Text)
cmd.Parameters.AddWithValue("@State", txtState.Text)
cmd.Parameters.AddWithValue("@Postal", txtPostal.Text)
cmd.Parameters.AddWithValue("@Email", txtEmail.Text)
cmd.Parameters.AddWithValue("@Password", txtPassword.Text)
Try
conn.Open()
cmd.ExecuteNonQuery()
lblMessage.ForeColor = Drawing.Color.Green
lblMessage.Text = "Customer Registered Successfully!"
Catch ex As Exception
lblMessage.ForeColor = Drawing.Color.Red
lblMessage.Text = "Error: " & ex.Message
End Try
End Using
End Using
End Sub
Protected Sub lnkUpdateCustomer_Click(sender As Object, e As EventArgs)
If Session("Role") IsNot Nothing AndAlso Session("Role").ToString() = "Employee" Then
Response.Redirect("update_customer.aspx")
Else
lblAccessMsg.Text = "Access Denied: You need Employee login to access this page."
Response.AddHeader("REFRESH", "3;URL=EmployeeLogin.aspx")
End If
End Sub
End Class
Cart.aspx
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Cart.aspx.vb" Inherits="Cart" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>My Cart</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<form id="form1" runat="server">
<h2>My Cart</h2>
<asp:GridView ID="gvCart" runat="server" AutoGenerateColumns="False" CssClass="cart-table">
<Columns>
<asp:BoundField DataField="Product_Description" HeaderText="Product" />
<asp:BoundField DataField="Quantity" HeaderText="Quantity" />
<asp:BoundField DataField="Price" HeaderText="Price" DataFormatString="{0:C}" />
<asp:BoundField DataField="Total" HeaderText="Total" DataFormatString="{0:C}" />
</Columns>
</asp:GridView>
<br />
<asp:Label ID="lblGrandTotal" runat="server" Text="" Font-Bold="True"></asp:Label>
<br /><br />
<asp:Button ID="btnCheckout" runat="server" Text="Proceed to Checkout" PostBackUrl="Payment.aspx" CssClass="btn" />
</form>
</body>
</html>
Cart.aspx.vb
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Partial Class Cart
Inherits System.Web.UI.Page
Private connStr As String = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
LoadCart()
End If
End Sub
Private Sub LoadCart()
If Session("Customer_Id") Is Nothing Then
Response.Redirect("CustomerLogin.aspx")
Return
End If
Dim customerId As Integer = Convert.ToInt32(Session("Customer_Id"))
Using conn As New SqlConnection(connStr)
Dim query As String = "SELECT p.Product_Description, " &
"ol.Ordered_Quantity AS Quantity, " &
"p.Standard_Price AS Price, " &
"(ol.Ordered_Quantity * p.Standard_Price) AS Total " &
"FROM ORDER_t o " &
"INNER JOIN Order_line_t ol ON o.Order_Id = ol.Order_Id " &
"INNER JOIN PRODUCT_t p ON ol.Product_Id = p.Product_Id " &
"WHERE o.Customer_Id = @CustomerId " &
"AND o.Order_Id = (" &
" SELECT MAX(Order_Id) FROM ORDER_t WHERE Customer_Id = @CustomerId" &
")"
Using cmd As New SqlCommand(query, conn)
cmd.Parameters.AddWithValue("@CustomerId", customerId)
Dim dt As New DataTable()
Using da As New SqlDataAdapter(cmd)
da.Fill(dt)
End Using
gvCart.DataSource = dt
gvCart.DataBind()
Dim grandTotal As Decimal = 0
For Each row As DataRow In dt.Rows
grandTotal += Convert.ToDecimal(row("Total"))
Next
lblGrandTotal.Text = "Grand Total: " & grandTotal.ToString("C")
End Using
End Using
End Sub
End Class
search.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="search.aspx.vb" Inherits="search" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<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="Cart.aspx">Cart</a></li>
</ul>
</nav>
<div class="container">
<div style="margin-bottom:20px;">
<asp:Label Text="Search Product:" runat="server" />
<asp:TextBox
ID="txtSearch"
runat="server"
style="padding:8px; border-radius:6px; border:1px solid #ccc;">
</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" />
</div>
<asp:Label ID="lblMessage" runat="server"></asp:Label>
<br /><br />
<div class="product-grid">
<asp:Repeater ID="rptProducts" runat="server" OnItemCommand="rptProducts_ItemCommand">
<ItemTemplate>
<div class="product-card">
<div class="image-box"></div>
<h3><%# Eval("Product_Description") %></h3>
<p>Finish: <%# Eval("Product_Finish") %></p>
<p><strong>$ <%# Eval("Standard_Price") %></strong></p>
<div style="margin-top:10px;">
Quantity:
<asp:TextBox
ID="txtQty"
runat="server"
Width="50px"
style="padding:5px; border-radius:6px; border:1px solid #ccc;">
</asp:TextBox>
</div>
<asp:Button
ID="btnAdd"
runat="server"
Text="Add To Cart"
CssClass="btn"
style="margin-top:10px; width:100%;"
CommandName="AddToCart"
CommandArgument='<%# Eval("Product_Id") %>' />
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</div>
</form>
</body>
</html>
search.aspx.vb
Imports System.Data.SqlClient
Imports System.Configuration
Partial Class search
Inherits System.Web.UI.Page
Dim connStr As String = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString
Protected Sub btnSearch_Click(sender As Object, e As EventArgs)
Dim con As New SqlConnection(connStr)
Dim query As String = "SELECT Product_Id, Product_Description, Product_Finish, Standard_Price " &
"FROM PRODUCT_t WHERE Product_Description LIKE @search"
Dim cmd As New SqlCommand(query, con)
cmd.Parameters.AddWithValue("@search", "%" & txtSearch.Text & "%")
con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
rptProducts.DataSource = dr
rptProducts.DataBind()
con.Close()
End Sub
Protected Sub btnShowAll_Click(sender As Object, e As EventArgs)
Dim con As New SqlConnection(connStr)
Dim query As String = "SELECT Product_Id, Product_Description, Product_Finish, Standard_Price FROM PRODUCT_t"
Dim cmd As New SqlCommand(query, con)
con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
rptProducts.DataSource = dr
rptProducts.DataBind()
con.Close()
End Sub
Protected Sub rptProducts_ItemCommand(source As Object, e As RepeaterCommandEventArgs)
If e.CommandName = "AddToCart" Then
If Session("Customer_Id") Is Nothing Then
Response.Redirect("CustomerLogin.aspx")
Exit Sub
End If
Dim customerId As Integer = Convert.ToInt32(Session("Customer_Id"))
Dim productId As Integer = Convert.ToInt32(e.CommandArgument)
Dim txtQty As TextBox = CType(e.Item.FindControl("txtQty"), TextBox)
If txtQty.Text = "" Then
lblMessage.Text = "Enter quantity."
Exit Sub
End If
Dim quantity As Integer = Convert.ToInt32(txtQty.Text)
Dim con As New SqlConnection(connStr)
con.Open()
Dim orderId As Integer = 0
Dim checkOrderQuery As String =
"SELECT TOP 1 Order_Id FROM ORDER_t WHERE Customer_Id = @cid AND Order_Date = CAST(GETDATE() AS DATE)"
Dim cmdCheckOrder As New SqlCommand(checkOrderQuery, con)
cmdCheckOrder.Parameters.AddWithValue("@cid", customerId)
Dim result = cmdCheckOrder.ExecuteScalar()
If result Is Nothing Then
Dim newIdQuery As String = "SELECT ISNULL(MAX(Order_Id),1000)+1 FROM ORDER_t"
Dim cmdNewId As New SqlCommand(newIdQuery, con)
orderId = Convert.ToInt32(cmdNewId.ExecuteScalar())
Dim insertOrderQuery As String =
"INSERT INTO ORDER_t VALUES (@oid, @cid, CAST(GETDATE() AS DATE))"
Dim cmdInsertOrder As New SqlCommand(insertOrderQuery, con)
cmdInsertOrder.Parameters.AddWithValue("@oid", orderId)
cmdInsertOrder.Parameters.AddWithValue("@cid", customerId)
cmdInsertOrder.ExecuteNonQuery()
Else
orderId = Convert.ToInt32(result)
End If
Dim checkLineQuery As String =
"SELECT Ordered_Quantity FROM Order_line_t WHERE Order_Id = @oid AND Product_Id = @pid"
Dim cmdCheckLine As New SqlCommand(checkLineQuery, con)
cmdCheckLine.Parameters.AddWithValue("@oid", orderId)
cmdCheckLine.Parameters.AddWithValue("@pid", productId)
Dim existingQty = cmdCheckLine.ExecuteScalar()
If existingQty IsNot Nothing Then
Dim newQty As Integer = Convert.ToInt32(existingQty) + quantity
Dim updateQuery As String =
"UPDATE Order_line_t SET Ordered_Quantity = @qty WHERE Order_Id = @oid AND Product_Id = @pid"
Dim cmdUpdate As New SqlCommand(updateQuery, con)
cmdUpdate.Parameters.AddWithValue("@qty", newQty)
cmdUpdate.Parameters.AddWithValue("@oid", orderId)
cmdUpdate.Parameters.AddWithValue("@pid", productId)
cmdUpdate.ExecuteNonQuery()
Else
Dim insertLineQuery As String =
"INSERT INTO Order_line_t VALUES (@oid, @pid, @qty)"
Dim cmdInsertLine As New SqlCommand(insertLineQuery, con)
cmdInsertLine.Parameters.AddWithValue("@oid", orderId)
cmdInsertLine.Parameters.AddWithValue("@pid", productId)
cmdInsertLine.Parameters.AddWithValue("@qty", quantity)
cmdInsertLine.ExecuteNonQuery()
End If
con.Close()
lblMessage.Text = "Product added to YOUR cart!"
End If
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 Product Catalog</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<form id="form1" runat="server">
<header>
<h1>Pine Valley Furniture - Update Catalog</h1>
</header>
<nav>
<ul>
<li><a href="employee_dashboard.aspx">Dashboard</a></li>
<li><a href="update_customer.aspx">Update Customer</a></li>
</ul>
</nav>
<div class="container">
<h3>Search Product</h3>
Product Description:
<asp:TextBox ID="txtSearch" runat="server" CssClass="input-field" Placeholder="Enter product description"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="btn" OnClick="btnSearch_Click" /><br /><br />
<h3>Edit Product</h3>
Product ID: <asp:Label ID="lblProductID" runat="server"></asp:Label><br /><br />
Line ID: <asp:TextBox ID="txtLineID" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
Description: <asp:TextBox ID="txtDesc" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
Finish: <asp:TextBox ID="txtFinish" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
Price: <asp:TextBox ID="txtPrice" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
<asp:Button ID="btnUpdate" runat="server" Text="Update" CssClass="btn" OnClick="btnConfirm_Click" Enabled="False" /><br /><br />
<asp:Label ID="lblMessage" runat="server" ForeColor="Green"></asp:Label><br /><br />
</div>
</form>
</body>
</html>
update_catalog.aspx.vb
Imports System.Data
Imports System.Data.SqlClient
Partial Class update_catalog
Inherits System.Web.UI.Page
Dim connString As String = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Session("Role") Is Nothing OrElse Session("Role").ToString() <> "Employee" Then
Response.Redirect("LoginChoice.aspx")
End If
End Sub
Protected Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
If txtSearch.Text.Trim() = "" Then
Response.Write("<script>alert('Enter a product description');</script>")
Return
End If
Using conn As New SqlConnection(connString)
Dim cmd As New SqlCommand("SELECT * FROM PRODUCT_t WHERE Product_Description LIKE @desc", conn)
cmd.Parameters.AddWithValue("@desc", "%" & txtSearch.Text.Trim() & "%")
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader()
If reader.Read() Then
lblProductID.Text = reader("Product_Id").ToString()
txtLineID.Text = reader("Product_Line_Id").ToString()
txtDesc.Text = reader("Product_Description").ToString()
txtFinish.Text = reader("Product_Finish").ToString()
txtPrice.Text = reader("Standard_Price").ToString()
btnUpdate.Enabled = True
Else
lblProductID.Text = ""
txtLineID.Text = ""
txtDesc.Text = ""
txtFinish.Text = ""
txtPrice.Text = ""
btnUpdate.Enabled = False
Response.Write("<script>alert('Product not found');</script>")
End If
End Using
End Sub
Protected Sub btnConfirm_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
If lblProductID.Text = "" Then
Response.Write("<script>alert('No product selected to update');</script>")
Return
End If
Using conn As New SqlConnection(connString)
Dim cmd As New SqlCommand("UPDATE PRODUCT_t SET Product_Line_Id=@lineid, Product_Description=@desc, Product_Finish=@finish, Standard_Price=@price WHERE Product_Id=@id", conn)
cmd.Parameters.AddWithValue("@lineid", Convert.ToInt32(txtLineID.Text.Trim()))
cmd.Parameters.AddWithValue("@desc", txtDesc.Text.Trim())
cmd.Parameters.AddWithValue("@finish", txtFinish.Text.Trim())
cmd.Parameters.AddWithValue("@price", Convert.ToDecimal(txtPrice.Text.Trim()))
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(lblProductID.Text))
conn.Open()
cmd.ExecuteNonQuery()
End Using
lblMessage.Text = "Product updated successfully!"
End Sub
End Class
update_customer.aspx
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="update_customer.aspx.vb" Inherits="update_customer" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Update Customer</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<form id="form1" runat="server">
<header>
<h1>Pine Valley Furniture - Update Customer</h1>
</header>
<nav>
<ul>
<li><a href="main.aspx">Home</a></li>
<li><a href="update_catalog.aspx">Update Catalog</a></li>
</ul>
</nav>
<div class="container">
<h3>Search Customer</h3>
Customer ID:
<asp:TextBox ID="txtCustomerId" runat="server" CssClass="input-field" Placeholder="Enter Customer ID"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="btn" OnClick="btnSearch_Click" /><br /><br />
<h3>Edit Customer</h3>
Name:
<asp:TextBox ID="txtName" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
Address:
<asp:TextBox ID="txtAddress" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
City:
<asp:TextBox ID="txtCity" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
State:
<asp:TextBox ID="txtState" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
Postal Code:
<asp:TextBox ID="txtPostal" runat="server" CssClass="input-field"></asp:TextBox><br /><br />
<asp:Button ID="btnUpdate" runat="server" Text="Update" CssClass="btn"
OnClick="btnUpdate_Click" Enabled="False" /><br /><br />
<asp:Label ID="lblMessage" runat="server"></asp:Label><br /><br />
<asp:HyperLink NavigateUrl="employee_dashboard.aspx" runat="server">
Back
</asp:HyperLink>
</div>
</form>
</body>
</html>
update_customer.aspx.vb
Imports System.Configuration
Imports System.Data.SqlClient
Partial Class update_customer
Inherits System.Web.UI.Page
Dim connStr As String = ConfigurationManager.ConnectionStrings("PVFC").ConnectionString
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Session("Role") Is Nothing OrElse Session("Role").ToString() <> "Employee" Then
Response.Redirect("LoginChoice.aspx")
End If
End Sub
Protected Sub btnSearch_Click(sender As Object, e As EventArgs)
If txtCustomerId.Text = "" Then
lblMessage.Text = "Please enter Customer ID"
Exit Sub
End If
Dim conn As New SqlConnection(connStr)
Dim query As String = "SELECT * FROM CUSTOMER_t WHERE Customer_Id = " & txtCustomerId.Text
Dim cmd As New SqlCommand(query, conn)
Try
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader()
If reader.Read() Then
txtName.Text = reader("Customer_Name").ToString()
txtAddress.Text = reader("Customer_Address").ToString()
txtCity.Text = reader("Customer_City").ToString()
txtState.Text = reader("Customer_State").ToString()
txtPostal.Text = reader("Postal_Code").ToString()
lblMessage.Text = "Customer Found!"
btnUpdate.Enabled = True
Else
lblMessage.Text = "Customer ID does not exist!"
btnUpdate.Enabled = False
End If
conn.Close()
Catch ex As Exception
lblMessage.Text = "Error: " & ex.Message
End Try
End Sub
Protected Sub btnUpdate_Click(sender As Object, e As EventArgs)
Dim conn As New SqlConnection(connStr)
Dim query As String = "UPDATE CUSTOMER_t SET " &
"Customer_Name = '" & txtName.Text & "', " &
"Customer_Address = '" & txtAddress.Text & "', " &
"Customer_City = '" & txtCity.Text & "', " &
"Customer_State = '" & txtState.Text & "', " &
"Postal_Code = '" & txtPostal.Text & "' " &
"WHERE Customer_Id = " & txtCustomerId.Text
Dim cmd As New SqlCommand(query, conn)
Try
conn.Open()
cmd.ExecuteNonQuery()
lblMessage.Text = "Customer Updated Successfully!"
conn.Close()
Catch ex As Exception
lblMessage.Text = "Error: " & ex.Message
End Try
End Sub
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
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;
}