Imports CAMS_ADMIN
Imports CAMS_BL
Imports System.Data
Imports System.Text

Public Class frmMyCases
    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 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 lblStatus As System.Web.UI.WebControls.Label
    Protected WithEvents PagingBar1 As PACNET.WebControls.PagingBar
    Protected WithEvents lblUser As System.Web.UI.WebControls.Label
    Protected WithEvents btnCancel 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 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 strHA As String = ""
    Private strTA As String = ""

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Access Validation to page
        Dim oEC_User As EC_User = Me.GetUserFromSession

        If Not oEC_User Is Nothing Then
            If oEC_User.AccessGroup <> Constants.CONST_ACCESSGROUP_TA And oEC_User.AccessGroup <> Constants.CONST_ACCESSGROUP_HA Then
                Me.RedirectToLogin(Constants.CONST_ERROR_ACCESSDENIED_TOPAGE)

            Else
                lblUser.Text = oEC_User.Name & " " & oEC_User.Surname

                If oEC_User.AccessGroup = Constants.CONST_ACCESSGROUP_HA Then
                    strHA = oEC_User.UserID.ToString
                ElseIf oEC_User.AccessGroup = Constants.CONST_ACCESSGROUP_TA Then
                    strTA = oEC_User.UserID.ToString
                End If
            End If
        End If
        'End Access Validation

        If Not Request.QueryString("status") Is Nothing Then
            If Request.QueryString("status").Equals(Constants.CONST_CASESTATUS_NORMAL) Then
                mnuCams.CurrentGroup = Constants.MENU_SEARCH_ID
                mnuCams.CurrentItem = Constants.MENU_SEARCH_MYCASES_ID
                '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/My Cases/Normal'")
                    stbOutput.Append("</script>")
                    Response.Write(stbOutput.ToString)
                End If
                'End Added

                lblStatus.Text = "Normal"
            ElseIf Request.QueryString("status").Equals(Constants.CONST_CASESTATUS_ATTENTION) Then
                mnuCams.CurrentGroup = Constants.MENU_SEARCH_ID
                mnuCams.CurrentItem = Constants.MENU_SEARCH_MYCASES_ID
                '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/My Cases/Attention'")
                    stbOutput.Append("</script>")
                    Response.Write(stbOutput.ToString)
                End If
                'End Added

                lblStatus.Text = "Attention"
            ElseIf Request.QueryString("status").Equals(Constants.CONST_CASESTATUS_IMMATTENTION) Then
                mnuCams.CurrentGroup = Constants.MENU_SEARCH_ID
                mnuCams.CurrentItem = Constants.MENU_SEARCH_MYCASES_ID
                '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/My Cases/Immediate Attention'")
                    stbOutput.Append("</script>")
                    Response.Write(stbOutput.ToString)
                End If
                'End Added

                lblStatus.Text = "Immediate Attention"
            End If
        Else
            Me.RedirectToLogin(Constants.CONST_ERROR_ACCESSDENIED_TOPAGE)
        End If

        '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
            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
    End Sub

#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 = ""
            .RefNum = ""
            .SimRefNum = ""
            .GT = ""
            .SimGT = ""
            .Surname = ""
            .Address = ""
            .Postcode = ""

            If Not Request.QueryString("status") Is Nothing Then
                .Status = Request.QueryString("status")
            End If

            .Stage = ""
            .GO = ""
            .HA = strHA
            .TA = strTA
            .Contractor = ""
            .IsFromMyCases = "Y"
        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)
        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 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
