Imports System.Web.Configuration

Partial Public Class CustomerList
   Inherits System.Web.UI.Page

   Private Shared intDateColumn As Integer
   Private Shared dblRows As Double = 0
   Private Shared strGVFilter As String = ""

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      'If Not Page.IsPostBack Then dblRows = 0
   End Sub

   Private Sub CustomerList_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete

      If Not Page.IsPostBack Then
         Dim arrFilter(0) As String
         Dim intStart, intEnd As Integer
         Dim s As String
         intDateColumn = gvCustomer.Columns.Count - 2

         gvCustomer.PageSize = WebConfigurationManager.AppSettings("PAGESIZE")
         If WebConfigurationManager.AppSettings("ULEVEL") <> 5 Then
            btnAdd1.Enabled = False
            btnAdd2.Enabled = False
         End If

         Try
            If Request.QueryString("RID").Length > 0 Then
               WebConfigurationManager.AppSettings("strPage") = "CustomerList"
               WebConfigurationManager.AppSettings("intListFilter") = "1=1 AND refRepID = '" & sqlDB.CleanString(Request.QueryString("RID")) & "'"
            End If
         Catch ex As Exception
         End Try
         Try
            If Request.QueryString("CID").Length > 0 Then
               WebConfigurationManager.AppSettings("strPage") = "CustomerList"
               WebConfigurationManager.AppSettings("intListFilter") = "1=1 AND refChannelSegmentID = " & sqlDB.CleanString(Request.QueryString("CID"))
            End If
         Catch ex As Exception
         End Try
         Try
            If Request.QueryString("BID").Length > 0 Then
               WebConfigurationManager.AppSettings("strPage") = "CustomerList"
               WebConfigurationManager.AppSettings("intListFilter") = "1=1 AND refBranchID = " & sqlDB.CleanString(Request.QueryString("BID"))
            End If
         Catch ex As Exception
         End Try
         Try
            If Request.QueryString("SA").Length > 0 Then
               WebConfigurationManager.AppSettings("strPage") = "CustomerList"
               WebConfigurationManager.AppSettings("intListFilter") = "1=1 AND strSnellArea = '" & sqlDB.CleanString(Request.QueryString("SA")) & "' "
            End If
         Catch ex As Exception
         End Try

         s = WebConfigurationManager.AppSettings("strPage")
         If s = "CustomerDetails" Or s = "CustomerList" Then

            If WebConfigurationManager.AppSettings("ShowMore") = True Then
               gvCustomer.PageSize = WebConfigurationManager.AppSettings("MAXPAGESIZE")
            End If

            gvCustomer.PageIndex = WebConfigurationManager.AppSettings("intListIndex")
            strGVFilter = WebConfigurationManager.AppSettings("intListFilter")

            Try
               If strGVFilter.Contains("strProdCode") Then strGVFilter = ""
            Catch ex As Exception
            End Try


            Try
               If s.Contains("List") Then WebConfigurationManager.AppSettings("intListFilter") = ""
            Catch ex As Exception
            End Try

            Try
               arrFilter(0) = strGVFilter.Replace(" AND ", Chr(31))
               arrFilter = arrFilter(0).Split(Chr(31))
               For i As Integer = 1 To arrFilter.Length - 1
                  If arrFilter(i).Contains("strCustomerNo") Then
                     intStart = arrFilter(i).LastIndexOf("'%")
                     intEnd = arrFilter(i).LastIndexOf("%'")
                     'ddlStatus.SelectedValue = arrFilter(i).Substring(arrFilter(i).IndexOf("=")).Trim
                     txtCustomer.Text = arrFilter(i).Substring(intStart + 2, intEnd - intStart - 2)
                  End If
                  If arrFilter(i).Contains("refBranchID") Then ddlBranch.SelectedValue = arrFilter(i).Substring(arrFilter(i).IndexOf("=") + 1).Trim
                  If arrFilter(i).Contains("refChannelSegmentID") Then
                     ddlChannelSegment.SelectedValue = arrFilter(i).Substring(arrFilter(i).IndexOf("=") + 1).Trim
                     'posible channel filter
                  End If
                  If arrFilter(i).Contains("blnActive") Then ddlStatus.SelectedValue = arrFilter(i).Substring(arrFilter(i).IndexOf("=") + 1).Trim
                  If arrFilter(i).Contains("blnPromotionalAccounts") Then ddlType.SelectedValue = arrFilter(i).Substring(arrFilter(i).IndexOf("=") + 1).Trim
                  If arrFilter(i).Contains("refRepID") Then
                     intStart = arrFilter(i).LastIndexOf("=")
                     intEnd = arrFilter(i).LastIndexOf("'")
                     ddlRep.SelectedValue = arrFilter(i).Substring(intStart + 3, intEnd - intStart - 3)
                  End If
               Next

               sdsCustomer.FilterExpression = strGVFilter
               'Exit Sub
            Catch ex As Exception

            End Try
         End If
         dblRows = gvCustomer.PageIndex * gvCustomer.PageSize
         'btnSearch_Click(sender, e)
      End If

      dblRows = gvCustomer.PageIndex * gvCustomer.PageSize     '< has to run for every action	
   End Sub

   Private Sub CustomerList_PreRenderComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRenderComplete
      Dim s As String = ""

      lblMessage.Text = ""
      btnExport.Enabled = True

      Try
         If strGVFilter.Length > 0 Then s = "WHERE " & strGVFilter
      Catch ex As Exception
         strGVFilter = ""
      End Try
      If sqlDB.CountRows("SELECT strCustomerNo FROM mstCustomer LEFT JOIN mstChannel ON refChannelID = ChannelID " & s) = 0 Then
         lblMessage.Text = "<div width='100%' align='center'>- No Customers found -</div>"
         btnExport.Enabled = False
      End If
   End Sub

   Private Sub gvCustomer_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvCustomer.RowDataBound
      If e.Row.RowType = DataControlRowType.DataRow Then
         Dim btnDelete As LinkButton = CType(e.Row.Cells(e.Row.Cells.Count - 1).Controls(0), LinkButton)
         If WebConfigurationManager.AppSettings("ULEVEL") = 5 Then
            btnDelete.OnClientClick = String.Format("return confirm('Are you certain you want to delete customer ""{0}"" ?');", _
            DirectCast(DirectCast(e.Row.Cells(1).Controls(0), System.Web.UI.Control), System.Web.UI.WebControls.HyperLink).Text)
         Else
            btnDelete.Enabled = False
         End If

         Try
            dblRows += 1
            e.Row.Cells(0).Text = dblRows
            e.Row.Cells(intDateColumn).Text = sqlDB.SqlDate(e.Row.Cells(intDateColumn).Text, "d MMM yyyy")  ' "d MMM yyyy HH:mm")
         Catch ex As Exception
            e.Row.Cells(intDateColumn).Text = Date.Now.ToString("n/a")
         End Try
      End If
   End Sub

   Private Sub gvCustomer_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvCustomer.RowDeleting

      sqlDB.doQueryDS("UPDATE mstCustomer SET blnActive = 0 WHERE strCustomerNo = '" & e.Keys(0) & "' ")
      sqlDB.doQueryDS("UPDATE dwdCustomer SET blnActive = 0 WHERE strCustomerNo = '" & e.Keys(0) & "'")
      e.Cancel = True
      btnSearch_Click(sender, e:=New System.EventArgs())
   End Sub

   Private Sub gvCustomer_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles gvCustomer.Sorting
      sdsCustomer.FilterExpression = strGVFilter
      dblRows = 0
   End Sub

   Private Sub gvCustomer_PageIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvCustomer.PageIndexChanged
      WebConfigurationManager.AppSettings("intListIndex") = gvCustomer.PageIndex
      sdsCustomer.FilterExpression = strGVFilter
   End Sub

   Protected Sub ddlSegment_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlChannelSegment.SelectedIndexChanged
      If sender.selectedValue > 0 Then
         sdsChannel.FilterExpression = "refSegmentID = 0 OR refSegmentID = " & sender.selectedValue
      Else
         sdsChannel.FilterExpression = "1=1"
      End If
   End Sub

   Protected Sub btnAdd1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdd1.Click, btnAdd2.Click
      WebConfigurationManager.AppSettings("intListIndex") = gvCustomer.PageIndex
      WebConfigurationManager.AppSettings("intListFilter") = strGVFilter
      Response.Redirect("CustomerDetails.aspx?CID=0")
   End Sub

   Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSearch.Click
      sdsCustomer.FilterExpression = "1=1"
      dblRows = 0
      gvCustomer.PageIndex = 0

      Dim s As String

      If txtCustomer.Text.Length > 0 Then
         s = sqlDB.CleanString(txtCustomer.Text.Trim)
         sdsCustomer.FilterExpression &= " AND (strCustomerNo LIKE '%" & s & "%' OR strCustomerName LIKE '%" & s & "%') "
      End If
      If ddlBranch.SelectedIndex > 0 Then
         sdsCustomer.FilterExpression &= " AND refBranchID = " & ddlBranch.SelectedValue
      End If
      If ddlChannelSegment.SelectedIndex > 0 Then
         sdsCustomer.FilterExpression &= " AND refChannelSegmentID = " & ddlChannelSegment.SelectedValue
      End If

      If ddlStatus.SelectedIndex > 0 Then
         sdsCustomer.FilterExpression &= " AND blnActive = " & ddlStatus.SelectedValue
      End If

      If ddlType.SelectedIndex > 0 Then
         sdsCustomer.FilterExpression &= " AND blnPromotionalAccounts = " & ddlType.SelectedValue
      End If

      If ddlRep.SelectedIndex > 0 Then
         sdsCustomer.FilterExpression &= " AND (refRepID = '" & ddlRep.SelectedValue & "' OR refRepBBID = '" & ddlRep.SelectedValue & "' OR refRepDlxID = '" & ddlRep.SelectedValue & "' OR refRepLuxID = '" & ddlRep.SelectedValue & "')"
      End If

      strGVFilter = sdsCustomer.FilterExpression
      WebConfigurationManager.AppSettings("intListFilter") = strGVFilter

   End Sub

   Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnExport.Click
      sdsCustomer.FilterExpression = strGVFilter
      gvExport.Visible = True

      Response.Clear()
      Response.Buffer = True
      Response.ContentType = "application/vnd.ms-excel"
      Response.Charset = ""
      Response.AddHeader("Content-Disposition", _
         "attachment;filename=CustomerList_" & Session.Item("User").Replace(" ", "") & "_" & Date.Today.ToString("yyyyMMdd") & ".xls") 'v1.4.5 - 20160913 - Fixed logged In user & savings (i.e use session instead) - maanie
      Me.EnableViewState = False

      Dim oStringWriter As New System.IO.StringWriter()
      Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
      Dim frm As HtmlForm = New HtmlForm()
      Me.Controls.Add(frm)
      frm.Controls.Add(gvExport)
      frm.RenderControl(oHtmlTextWriter)
      Response.Write(oStringWriter.ToString())

      gvExport.Visible = False

      Response.End()

   End Sub

   Protected Sub chkResize_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkResize.CheckedChanged
      gvCustomer.PageIndex = 0
      sdsCustomer.FilterExpression = strGVFilter
      If chkResize.Checked Then
         gvCustomer.PageSize = WebConfigurationManager.AppSettings("MAXPAGESIZE")
         WebConfigurationManager.AppSettings("ShowMore") = True
      Else
         gvCustomer.PageSize = WebConfigurationManager.AppSettings("PAGESIZE")
         WebConfigurationManager.AppSettings("ShowMore") = False
      End If
   End Sub
End Class