Imports System.Data
Partial Class DisplayItems
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
FormMessage.Text = ""
'
' refresh the current Cart after browsing the web site
'
Dim Cart As DataSet = RetrieveCart()
If Cart.Tables(0).Rows.Count > 0 Then
'
' rebuild the display cart complete using cookie
'
Dim Displaycart As DataSet = rebuilddisplaycart(Cart)
InvoiceDetailsView.DataSource = Cart.Tables(0)
InvoiceDetailsView.DataBind()
End If
If Not (HttpContext.Current.Request.Cookies("MarkFields") Is Nothing) Then
txt_MemberId.Text = Request.Cookies("MarkFields")("MemberID")
txt_QuantityId.Text = Request.Cookies("MarkFields")("ProductId")
End If
End If
End Sub
Private Function RetrieveCart() As DataSet
Dim Cart As New DataSet
'
' determine if a current cookie exists containing the current Cart Contents
'
If Not (HttpContext.Current.Request.Cookies("ShoppingCart") Is Nothing) Then
Dim CartXML As String = HttpContext.Current.Request.Cookies("ShoppingCart").Value.Trim
Cart.ReadXml(New System.Xml.XmlTextReader(New System.IO.StringReader(CartXML)))
Else
Dim CartTable As New DataTable
'CartTable.Columns.Add("I", GetType(String)) 'remove
CartTable.Columns.Add("P", GetType(Integer))
CartTable.Columns.Add("Q", GetType(Integer))
CartTable.Columns.Add("Pr", GetType(Decimal))
CartTable.TableName = "CartTable"
Cart.DataSetName = "Cart"
Cart.Tables.Add(CartTable)
End If
Return Cart
End Function
Private Sub SaveCart(ByVal Cart As DataSet)
Dim CartXML As New System.Text.StringBuilder
Dim CartStream As New System.IO.StringWriter(CartXML)
Cart.WriteXml(CartStream)
'
' to save space on the 4K cookie remove unnecessary characters
'
Dim XMLCompressedString As New System.Text.StringBuilder
For n As Integer = 0 To CartXML.Length - 1
Dim c As Char = CartXML.Chars(n)
If Not (Char.IsControl(c) Or Char.IsWhiteSpace(c)) Then
XMLCompressedString.Append(c)
End If
Next
'
' place the compressed xml string into the session cookie
'
Dim xmlcookie As New HttpCookie("ShoppingCart")
xmlcookie.Value = XMLCompressedString.ToString
HttpContext.Current.Response.Cookies.Add(xmlcookie)
'
' you can save individual fields to cookies
'
Response.Cookies("MarkFields")("MemberID") = txt_MemberId.Text.Trim.ToString
Response.Cookies("MarkFields")("ProductID") = txt_QuantityId.Text.Trim.ToString
End Sub
Protected Sub InvoiceDetailsView_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles InvoiceDetailsView.RowEditing
''
'' retrieve the needed table definition
''
'Dim Cart As DataSet = RetrieveCart()
''
'' process the current gridview via the Dump
''
'Cart = DumpCart()
''
'' re bind the update dataset to the gridview
''
'InvoiceDetailsView.DataSource = Cart.Tables(0)
'InvoiceDetailsView.DataBind()
'SaveCart(Cart)
'Hide the footer during edits...
InvoiceDetailsView.EditIndex = e.NewEditIndex
' Bind DataGrid to datasource
Dim RaceInfoViewDS As DataSet = DisplayCartDefinition()
InvoiceDetailsView.DataSource = RaceInfoViewDS.Tables(0)
InvoiceDetailsView.DataBind()
End Sub
Protected Sub InvoiceDetailsView_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles InvoiceDetailsView.RowCancelingEdit
'
' this method is called when the Cancel button on the editted row is pressed
'
' reset the EditIndex to its off position, this will cause the display template to be use
'
InvoiceDetailsView.EditIndex = -1
'
' Refresh the gridview using the orignal cart in the cookie
'
Dim Cart As DataSet = RetrieveCart()
'
' rebuild the display cart complete using cookie
'
InvoiceDetailsView.DataSource = Cart.Tables(0)
InvoiceDetailsView.DataBind()
End Sub
Protected Sub InvoiceDetailsView_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles InvoiceDetailsView.RowUpdating
Dim cart As DataSet = RetrieveCart()
Dim eRaceInfoRow As DataRow = cart.Tables(0).Rows(InvoiceDetailsView.EditIndex)
Dim gViewRow As GridViewRow = InvoiceDetailsView.Rows(InvoiceDetailsView.EditIndex)
Dim aTextbox As TextBox
Dim bTextbox As TextBox
'
' attach yourself to the textbox control on the gridview
'
aTextbox = CType(gViewRow.FindControl("P"), TextBox)
bTextbox = CType(gViewRow.FindControl("Q"), TextBox)
If Not (aTextbox Is Nothing And bTextbox Is Nothing) Then
eRaceInfoRow("P") = aTextbox.Text.Trim
eRaceInfoRow("Q") = bTextbox.Text.Trim
'
' reset the EditIndex to its off position, this will cause the display template to be use
'
InvoiceDetailsView.EditIndex = -1
'
' Refresh the gridview using the updated cart in the dataset
'
InvoiceDetailsView.DataSource = cart.Tables(0)
InvoiceDetailsView.DataBind()
'
' Save the updated dataset to the cookie
'
SaveCart(cart)
Else
FormMessage.Text = "Application error. Contact your analysis"
End If
End Sub
Protected Sub bt_Fetch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_Fetch.Click
txt_MemberId.Text = txt_MemberId.Text.Trim
If txt_MemberId.Text.Length = 0 Then
FormMessage.Text = "Please enter a member id to be searched."
Else
Dim SystemMgr As New eRaceSystem.eRace
Dim MemberInfo As DataSet
Try
MemberInfo = SystemMgr.LookupMemberByMemberId(Integer.Parse(txt_MemberId.Text))
If MemberInfo.Tables(0).Rows.Count = 0 Then
FormMessage.Text = "Member does not exist."
txt_MemberId.Text = ""
Name.Text = ""
Phone.Text = ""
txt_CardNo.Text = ""
Else
With MemberInfo.Tables(0).Rows(0)
txt_MemberId.Text = .Item("MemberId")
Name.Text = .Item("Name")
Phone.Text = .Item("Phone")
CreditBalance.Text = .Item("CreditBalance")
End With
End If
Catch ex As Exception
FormMessage.Text = ex.Message
End Try
End If
End Sub
Protected Sub bt_Products_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_Products.Click
Response.Redirect("Products.aspx")
End Sub
Protected Sub bt_SubmitSale_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_SubmitSale.Click
'
'check the radiobutton list for a selected value
'
Dim paymenttype As Integer = 0
If PanelChoice.SelectedValue = "Cash" And txt_CardNo.Text.Length > 0 Then
paymenttype = 0
FormMessage.Text = "Please remove number from Card Number box"
ElseIf PanelChoice.SelectedValue = "Account" And txt_CardNo.Text.Length > 0 Then
paymenttype = 1
FormMessage.Text = "Please remove number from Card Number box"
ElseIf PanelChoice.SelectedValue = "Debit" And txt_CardNo.Text.Length < 12 Or txt_CardNo.Text.Length > 16 Then
paymenttype = 2
FormMessage.Text = "Please enter a valid card number"
ElseIf PanelChoice.SelectedValue = "Credit" And txt_CardNo.Text.Length < 12 Or txt_CardNo.Text.Length > 16 Then
paymenttype = 3
FormMessage.Text = "Please enter a valid card number"
End If
Dim SystemMgr As New eRaceSystem.eRace
'SystemMgr.AddInvoice(Integer.Parse(txt_MemberId), txt_CardNo, paymenttype, GST, Total, DumpCart())
FormMessage.Text = "Success. The database was updated with the provided information."
InvoiceDetailsView.DataSource = Nothing
InvoiceDetailsView.DataBind()
End Sub
Protected Sub bt_RemoveItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_RemoveItem.Click
Dim cart As DataSet
Dim Index As Integer
cart = RetrieveCart()
Index = cart.Tables(0).Rows.Count - 1
Dim RemoveItem As New CheckBox
While Index >= 0
RemoveItem = CType(InvoiceDetailsView.Rows(Index).FindControl("Remove"), CheckBox)
If RemoveItem.Checked = True Then
cart.Tables(0).Rows(Index).Delete()
End If
Index = Index - 1
End While
If cart.Tables(0).Rows.Count <> 0 Then
Dim displaycart As DataSet = rebuilddisplaycart(cart)
InvoiceDetailsView.DataSource = displaycart.Tables(0)
InvoiceDetailsView.DataBind()
SaveCart(cart)
Else
'clear grid
'destroy cookie (this routine destroy all cookie cart and individual)
ClearCart()
End If
End Sub
Protected Sub bt_Add_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_Add.Click
Dim SystemMgr As New eRaceSystem.eRace
Dim ProductInfo As DataSet
Try
ProductInfo = SystemMgr.LookupProductByProductId(Integer.Parse(txt_QuantityId.Text))
If ProductInfo.Tables(0).Rows.Count = 0 Then
FormMessage.Text = "Product does not exist."
Else
'
' appends to cookie cart (dataset)
'
Dim Cart As DataSet = RetrieveCart()
Dim aRow As DataRow
aRow = Cart.Tables(0).NewRow
With ProductInfo.Tables(0).Rows(0)
aRow("P") = txt_ProductId.Text
aRow("Q") = txt_QuantityId.Text
aRow("PR") = .Item("SalesPrice")
End With
Cart.Tables(0).Rows.Add(aRow)
SaveCart(Cart)
'
' appends to display dataset
'
Dim displayCart As DataSet = DumpCart()
Dim dRow As DataRow = displayCart.Tables(0).NewRow
With ProductInfo.Tables(0).Rows(0)
dRow("I") = .Item("Description")
dRow("P") = txt_ProductId.Text
dRow("Q") = txt_QuantityId.Text
dRow("PR") = .Item("SalesPrice")
End With
displayCart.Tables(0).Rows.Add(dRow)
InvoiceDetailsView.DataSource = displayCart.Tables(0)
InvoiceDetailsView.DataBind()
End If
Catch ex As Exception
FormMessage.Text = ex.Message
End Try
End Sub
Private Function DisplayCartDefinition() As DataSet
Dim Cart As New DataSet
Dim CartTable As New DataTable
CartTable.Columns.Add("I", GetType(String))
CartTable.Columns.Add("P", GetType(Integer))
CartTable.Columns.Add("Q", GetType(Integer))
CartTable.Columns.Add("Pr", GetType(Decimal))
CartTable.TableName = "CartTable"
Cart.DataSetName = "Cart"
Cart.Tables.Add(CartTable)
Return Cart
End Function
Public Function rebuilddisplaycart(ByVal cart As DataSet) As DataSet
'
' need the definition for the display dataset
'
Dim displaycart As DataSet = DisplayCartDefinition()
Dim SystemMgr As New eRaceSystem.eRace
Dim ProductInfo As DataSet
Try
For Each CartRow As DataRow In cart.tables(0).rows
ProductInfo = SystemMgr.LookupProductByProductId(Integer.Parse(CartRow.Item("P")))
If ProductInfo.Tables(0).Rows.Count = 0 Then
FormMessage.Text = "Product does not exist."
Else
'
' appends to display dataset
'
Dim dRow As DataRow = displayCart.Tables(0).NewRow
With ProductInfo.Tables(0).Rows(0)
dRow("I") = .Item("Description")
dRow("P") = CartRow.Item("ProductId")
dRow("Q") = CartRow.Item("Quantity")
dRow("PR") = CartRow.Item("SalesPrice")
End With
displayCart.Tables(0).Rows.Add(dRow)
End If
Next
Catch ex As Exception
FormMessage.Text = ex.Message
End Try
Return cart
End Function
Private Function DumpCart() As DataSet
Dim displaycart As DataSet = DisplayCartDefinition()
Dim aRow As DataRow
For Each gRow As GridViewRow In InvoiceDetailsView.Rows
aRow = displaycart.Tables(0).NewRow
aRow(0) = gRow.Cells(0).Text
aRow(1) = gRow.Cells(1).Text
aRow(2) = gRow.Cells(2).Text
aRow(3) = gRow.Cells(3).Text
displaycart.Tables(0).Rows.Add(aRow)
Next
Return displaycart
End Function
Protected Sub ClearCart()
Dim aCookie1 As New HttpCookie("ShoppingCart")
aCookie1.Expires = DateAdd(DateInterval.Day, -30, Today)
HttpContext.Current.Response.Cookies.Add(aCookie1)
Dim aCookie2 As New HttpCookie("MarkFields")
aCookie2.Expires = DateAdd(DateInterval.Day, -30, Today)
HttpContext.Current.Response.Cookies.Add(aCookie2)
'
' also remove the display
'
InvoiceDetailsView.DataSource = Nothing
InvoiceDetailsView.DataBind()
GST.Text = 0.0
Total.Text = 0.0
End Sub
End Class