Imports CAMS_ADMIN
Imports CAMS_BL
Imports System.Data
Imports System.Text

Public Class frmAllCases
    Inherits CAMSBasePage

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object
    Protected WithEvents txtRefNum As System.Web.UI.WebControls.TextBox
    Protected WithEvents chkSimRefNum As System.Web.UI.WebControls.CheckBox
    Protected WithEvents ddlGrantType As System.Web.UI.WebControls.DropDownList
    Protected WithEvents chkSimGrantType As System.Web.UI.WebControls.CheckBox
    Protected WithEvents txtAddress As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtSurname As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtPostcode As System.Web.UI.WebControls.TextBox
    Protected WithEvents ddlStatus As System.Web.UI.WebControls.DropDownList
    Protected WithEvents ddlStage As System.Web.UI.WebControls.DropDownList
    Protected WithEvents ddlContractor As System.Web.UI.WebControls.DropDownList
    Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
    Protected WithEvents btnPrint As System.Web.UI.HtmlControls.HtmlInputButton
    Protected WithEvents btnOpen As System.Web.UI.HtmlControls.HtmlInputButton
    Protected WithEvents btnCancel As System.Web.UI.WebControls.Button
    Protected WithEvents txtCaseID As System.Web.UI.WebControls.TextBox
    Protected WithEvents ddlHA As System.Web.UI.WebControls.DropDownList
    Protected WithEvents ddlTA As System.Web.UI.WebControls.DropDownList
    Protected WithEvents dgResults As System.Web.UI.WebControls.DataGrid
    Protected WithEvents lblTotalRecords As System.Web.UI.WebControls.Label
    Protected WithEvents lblTotalPages As System.Web.UI.WebControls.Label
    Protected WithEvents txtRecordsPerPage As System.Web.UI.WebControls.TextBox
    Protected WithEvents imgBtnRefresh As System.Web.UI.WebControls.ImageButton
    Protected WithEvents pnlResults As System.Web.UI.WebControls.Panel
    Protected WithEvents lblMsgNoResults As System.Web.UI.WebControls.Label
    Protected WithEvents pnlNoResults As System.Web.UI.WebControls.Panel
    Protected WithEvents PagingBar1 As PACNET.WebControls.PagingBar
    Protected WithEvents ddlGO As System.Web.UI.WebControls.DropDownList
    Protected WithEvents hdEvent As System.Web.UI.HtmlControls.HtmlInputHidden
    Protected WithEvents hdRowId As System.Web.UI.HtmlControls.HtmlInputHidden
    Protected WithEvents hdItemID As System.Web.UI.HtmlControls.HtmlInputHidden
    Protected WithEvents mnuCams As Menu

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region

    Private Const FIRST_PAGE As Integer = 1

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Access Validation to page
        If Not Me.IsPostBack Then
            Dim oEC_User As EC_User = Me.GetUserFromSession

            If Not oEC_User Is Nothing Then
                If Me.HasAccessTo(Me.GetControlID("frmAllCases.aspx"), oEC_User.AccessGroup) = False Then
                    Me.RedirectToMsgPage(Constants.CONST_ERROR_ACCESSDENIED_TOPAGE)
                End If
            End If

        End If
        'End Access Validation

        'Menu
        mnuCams.CurrentGroup = Constants.MENU_SEARCH_ID
        mnuCams.CurrentItem = Constants.MENU_SEARCH_ALLCASES_ID

        'Attributes for some controls
        txtRecordsPerPage.Attributes.Add("onKeyPress", "fnOnlyDigits(event,'decNo')")

        If txtRecordsPerPage.Text.Trim.Equals(String.Empty) OrElse Convert.ToInt32(txtRecordsPerPage.Text) < 1 Then
            txtRecordsPerPage.Text = "100"
        End If

        'End attributes

        'Initial values
        If Not Me.IsPostBack Then
            LoadControls()
            RefreshResults(FIRST_PAGE, txtRecordsPerPage.Text)
        Else
            If hdEvent.Value = "selrow" Then
                SelectRow(Convert.ToInt32(hdRowId.Value))
            ElseIf hdEvent.Value = "openclient" Then
                OpenCase()
            End If
        End If
        'End Initial values

        'Added by Raul Callupe
        If Me.IsPostBack = False Then
            Dim stbOutput As New StringBuilder
            stbOutput.Append("<script language='Javascript'>")
            stbOutput.Append("var pag = window.parent.frames(0);")
            stbOutput.Append("pag.document.all.lblPath.innerHTML='Search/All Cases'")
            stbOutput.Append("</script>")
            Response.Write(stbOutput.ToString)
        End If
        'End Added

    End Sub

#Region "Load controls"
    Private Sub LoadControls()
        Dim oCC_Case As New CC_Case
        Dim dsData As DataSet

        Try

            dsData = oCC_Case.GetDataForControls

            If Not dsData Is Nothing Then
                Util.FillDropDownList(dsData.Tables("STATUS").DefaultView, ddlStatus, "IDSEQUENCE", "STATUS", True, New ListItem("", ""))
                Util.FillDropDownList(dsData.Tables("HA").DefaultView, ddlHA, "USERID", "FULLNAME", True, New ListItem("", ""))
                Util.FillDropDownList(dsData.Tables("GRANTTYPES").DefaultView, ddlGrantType, "GRANTTYPEID", "GRANTTYPEID", True, New ListItem("", ""))
                Util.FillDropDownList(dsData.Tables("CONTRACTORS").DefaultView, ddlContractor, "CONTRACTORID", "COMPANYNAME", True, New ListItem("", ""))
                Util.FillDropDownList(dsData.Tables("TA").DefaultView, ddlTA, "USERID", "FULLNAME", True, New ListItem("", ""))
                Util.FillDropDownList(dsData.Tables("GO").DefaultView, ddlGO, "GRANTOFFICEID", "NAME", True, New ListItem("", ""))
                Util.FillDropDownList(dsData.Tables("STAGES").DefaultView, ddlStage, "IDSEQUENCE", "IDSEQUENCE", True, New ListItem("", ""))
            End If

        Catch ex As Exception
            
        End Try

    End Sub
#End Region

#Region "Refresh datagrid"

    Private Sub setNoRecordsFounds(ByVal bValue As Boolean)
        pnlNoResults.Visible = bValue
        pnlResults.Visible = Not bValue
        btnPrint.Visible = Not bValue
        btnOpen.Visible = Not bValue
    End Sub

    Private Sub RefreshResults(ByVal nPage As Integer, ByVal nRecordsPerPage As Integer)
        Dim oCC_Case As New CC_Case
        Dim dsResults As DataSet
        Dim oParams As New AllCasesParameters

        With oParams
            .CaseId = txtCaseID.Text.Trim
            .RefNum = txtRefNum.Text.Trim

            If chkSimRefNum.Checked Then
                .SimRefNum = "Y"
            Else
                .SimRefNum = "N"
            End If

            .GT = ddlGrantType.SelectedValue.Trim
            .GTLabel = ddlGrantType.SelectedItem.Text

            If chkSimGrantType.Checked Then
                .SimGT = "Y"
            Else
                .SimGT = "N"
            End If

            .Surname = txtSurname.Text.Trim
            .Address = txtAddress.Text.Trim
            .Postcode = txtPostcode.Text.Trim
            .Status = ddlStatus.SelectedValue.Trim
            .StatusLabel = ddlStatus.SelectedItem.Text
            .Stage = ddlStage.SelectedValue.Trim
            .StageLabel = ddlStage.SelectedItem.Text
            .GO = ddlGO.SelectedValue.Trim
            .GOLabel = ddlGO.SelectedItem.Text
            .HA = ddlHA.SelectedValue.Trim
            .HALabel = ddlHA.SelectedItem.Text
            .TA = ddlTA.SelectedValue.Trim
            .TALabel = ddlHA.SelectedItem.Text
            .Contractor = ddlContractor.SelectedValue.Trim
            .ContractorLabel = ddlContractor.SelectedItem.Text
            .IsFromMyCases = "N"
        End With

        Session.Add("AllCasesParams", oParams)

        Try
            With oParams
                dsResults = oCC_Case.GetCases(nPage, txtRecordsPerPage.Text, .IsFromMyCases, .CaseId, .RefNum, .SimRefNum, .GT, .SimGT, _
                                                            .Surname, .Address, .Postcode, .Status, .GO, .Stage, .HA, .TA, .Contractor)
            End With

            If Not dsResults Is Nothing Then
                If dsResults.Tables(0).Rows.Count = 0 Then
                    setNoRecordsFounds(True)
                ElseIf dsResults.Tables(0).Rows(0)("record_count") < Convert.ToInt32(txtRecordsPerPage.Text) Then
                    PagingBar1.TotalNPages = FIRST_PAGE
                Else
                    Dim dDec = dsResults.Tables(0).Rows(0)("record_count") / Convert.ToInt32(txtRecordsPerPage.Text)
                    Dim nEnt = Decimal.Round(dDec, 0)
                    Dim nPages As Integer

                    If dDec > nEnt Then
                        nPages = nEnt + 1
                    Else
                        nPages = nEnt
                    End If
                    PagingBar1.TotalNPages = nPages
                End If

                If dsResults.Tables(0).Rows.Count > 0 Then
                    dgResults.CurrentPageIndex = 0
                    dgResults.DataSource = dsResults
                    dgResults.DataBind()

                    PagingBar1.PagesDisplayed = Convert.ToInt32(txtRecordsPerPage.Text)
                    PagingBar1.CurrentPage = nPage
                    lblTotalRecords.Text = dsResults.Tables(0).Rows(0)("record_count").ToString()
                    lblTotalPages.Text = PagingBar1.TotalNPages

                    setNoRecordsFounds(False)
                Else
                    setNoRecordsFounds(True)
                End If
            Else
                setNoRecordsFounds(True)
            End If

        Catch ex As Exception
            dsResults = Nothing
            setNoRecordsFounds(True)
        Finally
            dsResults.Dispose()
            dsResults = Nothing

        End Try

    End Sub

#End Region

#Region "Common methods"

    Private Sub dgResults_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgResults.ItemDataBound
        If e.Item.ItemType <> ListItemType.Header Then
            e.Item.Cells(0).Text = "<a href=""#"" onclick=""fnSelRow(" & e.Item.ItemIndex.ToString & ")""><img src=""../images/view.gif"" border=0></a>"
        End If

    End Sub

    Private Sub SelectRow(ByVal rowID As Integer)

        Try
            If dgResults.Items.Count > 0 Then
                hdItemID.Value = dgResults.Items(rowID).Cells(1).Text

                For i As Integer = 0 To dgResults.Items.Count - 1
                    If i Mod 2 = 0 Then
                        dgResults.Items(i).CssClass = "PAGE_GRID_ITEM"
                    Else
                        dgResults.Items(i).CssClass = "PAGE_GRID_ALTERNATING"
                    End If
                Next

                dgResults.Items(rowID).CssClass = "PAGE_GRID_ITEM_SELECTED"
            End If
        Catch ex As Exception

        End Try

    End Sub

#End Region

#Region "Pagination"

    Private Sub txtRecordsPerPage_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtRecordsPerPage.TextChanged
        PagingBar1.CurrentPage = FIRST_PAGE
        PagingBar1.TotalNPages = FIRST_PAGE
        PagingBar1.PagesDisplayed = txtRecordsPerPage.Text
        RefreshResults(FIRST_PAGE, txtRecordsPerPage.Text)
    End Sub

    Private Sub PagingBar1_ChangePage(ByVal sender As Object, ByVal e As PACNET.WebControls.ChangePageEventArgs) Handles PagingBar1.ChangePage
        RefreshResults(e.SelectedPage, txtRecordsPerPage.Text)
        hdItemID.Value = String.Empty
    End Sub

#End Region

    Private Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
        RefreshResults(FIRST_PAGE, txtRecordsPerPage.Text)
        hdItemID.Value = String.Empty
    End Sub

    Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        Me.RedirectToHome()
    End Sub

    Private Sub OpenCase()
        Dim strAppPath As String = Me.ApplicationPath
        Dim strDes As String = ""

        If strAppPath.EndsWith("/") Then
            strDes = strAppPath & "New/frmCase.aspx?action=u&caseid=" & hdItemID.Value
        Else
            strDes = strAppPath & "/New/frmCase.aspx?action=u&caseid=" & hdItemID.Value
        End If

        Response.Redirect(strDes, True)
    End Sub
End Class

Public Class AllCasesParameters
    Public CaseId As String = ""
    Public RefNum As String = ""
    Public SimRefNum As String = ""
    Public GT As String = ""
    Public GTLabel As String = ""
    Public SimGT As String = ""
    Public Surname As String = ""
    Public Address As String = ""
    Public Postcode As String = ""
    Public Status As String = ""
    Public StatusLabel As String = ""
    Public Stage As String = ""
    Public StageLabel As String = ""
    Public GO As String = ""
    Public GOLabel As String = ""
    Public HA As String = ""
    Public HALabel As String = ""
    Public TA As String = ""
    Public TALabel As String = ""
    Public Contractor As String = ""
    Public ContractorLabel As String = ""
    Public IsFromMyCases As String
End Class