Imports CAMS_ADMIN
Imports CAMS_BL
Imports System.Data
Imports System.Text

Public Class frmSClient
    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 txtSurname As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtAddress As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtName As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtPostcode As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtAppNINumber As System.Web.UI.WebControls.TextBox
    Protected WithEvents ddlGender As System.Web.UI.WebControls.DropDownList
    Protected WithEvents ddlReligion 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.HtmlControls.HtmlInputButton
    Protected WithEvents rbOlder As System.Web.UI.WebControls.RadioButton
    Protected WithEvents rbYounger As System.Web.UI.WebControls.RadioButton
    Protected WithEvents txtAppAge As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtFchVisitedIni As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtFchVisitedFin As System.Web.UI.WebControls.TextBox
    Protected WithEvents Img1 As System.Web.UI.HtmlControls.HtmlImage
    Protected WithEvents Img2 As System.Web.UI.HtmlControls.HtmlImage
    Protected WithEvents Img3 As System.Web.UI.HtmlControls.HtmlImage
    Protected WithEvents Img4 As System.Web.UI.HtmlControls.HtmlImage
    Protected WithEvents chkWPension As System.Web.UI.WebControls.CheckBox
    Protected WithEvents chkWPensionCredit As System.Web.UI.WebControls.CheckBox
    Protected WithEvents chkWOccupPension As System.Web.UI.WebControls.CheckBox
    Protected WithEvents chkWOtherIncome As System.Web.UI.WebControls.CheckBox
    Protected WithEvents chkWIncomeSupport As System.Web.UI.WebControls.CheckBox
    Protected WithEvents txtMoreLessThan As System.Web.UI.WebControls.TextBox
    Protected WithEvents rbMore As System.Web.UI.WebControls.RadioButton
    Protected WithEvents rbLess As System.Web.UI.WebControls.RadioButton
    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 PagingBar1 As PACNET.WebControls.PagingBar
    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 colCamsMenu As System.Web.UI.HtmlControls.HtmlTableCell
    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 lblSymbol As System.Web.UI.WebControls.Label
    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 strSymbol As String

    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("frmSClient.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_CLIENT_ID

        If Not Request.QueryString("event") Is Nothing Then

            If Request.QueryString("event").Equals("popup") Then 'as a child window
                mnuCams.Visible = False
                'dgResults.Columns(0).Visible = False
                'dgResults.Columns(16).Visible = True
                dgResults.Columns(1).Visible = False
                dgResults.Columns(0).Visible = True
                colCamsMenu.Visible = False
                btnOpen.Visible = False
                btnPrint.Visible = False
            End If

        End If
        'End Menu

        'Attributes for some controls
        txtRecordsPerPage.Attributes.Add("onKeyPress", "fnOnlyDigits(event,'decNo')")
        txtAppAge.Attributes.Add("onKeyPress", "fnOnlyDigits(event,'decNo')")
        txtMoreLessThan.Attributes.Add("onKeyPress", "fnOnlyDigits(event,'decOK')")

        If txtRecordsPerPage.Text.Trim.Equals(String.Empty) OrElse Convert.ToInt32(txtRecordsPerPage.Text) < 1 Then
            txtRecordsPerPage.Text = "100"
        End If

        dgResults.Columns(15).HeaderText = "S&gt;Amount"
        dgResults.Columns(16).HeaderText = "S&lt;Amount"
        strSymbol = ConfigurationSettings.AppSettings("Symbol")
        '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
                OpenClientPage()
            ElseIf hdEvent.Value = "cancel" Then
                SetCancel()
            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/Client'")
            stbOutput.Append("</script>")
            Response.Write(stbOutput.ToString)
        End If
        'End Added

        'Added by Vanessa Ayala
        Me.lblSymbol.Text = ConfigurationSettings.AppSettings("Symbol")
        'End Added

    End Sub

#Region "Load controls"
    Private Sub LoadControls()
        Dim oCC_Client As New CC_Client
        Dim dsData As DataSet

        'Gender
        ddlGender.Items.Clear()
        ddlGender.Items.Add(New ListItem("", ""))
        ddlGender.Items.Add(New ListItem("Male", "M"))
        ddlGender.Items.Add(New ListItem("Female", "F"))
        'End Gender

        Try

            dsData = oCC_Client.GetDataForControls

            If Not dsData Is Nothing Then
                Util.FillDropDownList(dsData.Tables("RELIGION").DefaultView, ddlReligion, "IDSEQUENCE", "DESCRIPTION", True, New ListItem("", ""))

            Else
                Throw New Exception("No data")
            End If

        Catch ex As Exception
            ddlReligion.Items.Clear()
            ddlReligion.Items.Add(New ListItem("Empty", ""))
        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

        If Not Request.QueryString("event") Is Nothing Then
            If Request.QueryString("event").Equals("popup") Then
                btnPrint.Visible = False
                btnOpen.Visible = False
            End If
        End If
    End Sub

    Private Sub RefreshResults(ByVal nPage As Integer, ByVal nRecordsPerPage As Integer)
        Dim oCC_Client As New CC_Client
        Dim dsResults As DataSet
        Dim oParams As New SearchClientParameters

        With oParams
            .Surname = txtSurname.Text.Trim
            .Name = txtName.Text.Trim
            .ApplNin = txtAppNINumber.Text.Trim
            .Address = txtAddress.Text.Trim
            .Postcode = txtPostcode.Text.Trim
            .Gender = ddlGender.SelectedValue.Trim
            .GenderLabel = ddlGender.SelectedItem.Text
            .Religion = ddlReligion.SelectedValue.Trim
            .ReligionLabel = ddlReligion.SelectedItem.Text
            .Age = txtAppAge.Text.Trim
            .IniDVisited = txtFchVisitedIni.Text.Trim
            .FinDVisited = txtFchVisitedFin.Text.Trim
            .SavAmount = txtMoreLessThan.Text.Trim

            If chkWPension.Checked Then
                .WPension = "Y"
            Else
                .WPension = "N"
            End If

            If chkWOccupPension.Checked Then
                .WOCCPen = "Y"
            Else
                .WOCCPen = "N"
            End If

            If chkWIncomeSupport.Checked Then
                .WIncSup = "Y"
            Else
                .WIncSup = "N"
            End If

            If chkWOtherIncome.Checked Then
                .WOthInc = "Y"
            Else
                .WOthInc = "N"
            End If

            If chkWPensionCredit.Checked Then
                .WPenCred = "Y"
            Else
                .WPenCred = "N"
            End If

            If rbMore.Checked Then
                .Saving = "M"
                .SavingLabel = "More than"
            ElseIf rbLess.Checked Then
                .Saving = "L"
                .SavingLabel = "Less than"
            Else
                .Saving = ""
            End If

            If rbOlder.Checked Then
                .OYThan = "O"
                .OYThanLabel = "Older than"
            ElseIf rbYounger.Checked Then
                .OYThan = "Y"
                .OYThanLabel = "Younger than"
            Else
                .OYThan = ""
            End If
        End With

        Session.Add("SClientParams", oParams)

        Try
            With oParams
                dsResults = oCC_Client.GetClients(nPage, txtRecordsPerPage.Text, .Surname, .Name, .ApplNin, .Address, _
                                                                .Postcode, .Gender, .Religion, .OYThan, .Age, .IniDVisited, _
                                                                .FinDVisited, .Saving, .SavAmount, .WPension, .WOCCPen, .WIncSup, _
                                                                .WPenCred, .WOthInc)
            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>"
            'e.Item.Cells(16).Text = "<a href=""#"" onclick=""fnSetClient('" & e.Item.Cells(3).Text & "')""><img src=""../images/check.gif"" border=0></a>"
            e.Item.Cells(1).Text = "<a href=""#"" onclick=""fnSelRow(" & e.Item.ItemIndex.ToString & ")""><img src=""../images/view.gif"" border=0></a>"
            e.Item.Cells(0).Text = "<a href=""#"" onclick=""fnSetClient('" & e.Item.Cells(4).Text & "')""><img src=""../images/check.gif"" border=0></a>"

            Dim drv As DataRowView = e.Item.DataItem

            If Not drv Is Nothing Then
                'e.Item.Cells(14).Text = strSymbol & String.Format("{0:#,###.00}", drv("MOREAMOUNT"))
                'e.Item.Cells(15).Text = strSymbol & String.Format("{0:#,###.00}", drv("LESSAMOUNT"))
                e.Item.Cells(15).Text = strSymbol & String.Format("{0:#,###.00}", drv("MOREAMOUNT"))
                e.Item.Cells(16).Text = strSymbol & String.Format("{0:#,###.00}", drv("LESSAMOUNT"))
            End If

        End If

    End Sub

    Private Sub SelectRow(ByVal rowID As Integer)

        Try
            If dgResults.Items.Count > 0 Then
                'hdItemID.Value = dgResults.Items(rowID).Cells(3).Text
                hdItemID.Value = dgResults.Items(rowID).Cells(4).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 SetCancel()
        If Not Request.QueryString("event") Is Nothing Then
            If Request.QueryString("event").Equals("popup") Then
                Response.Write("<script language=""javascript"">window.close();</script>")
            Else
                Me.RedirectToHome()
            End If
        Else
            Me.RedirectToHome()
        End If
    End Sub

    Private Sub OpenClientPage()
        Dim strAppPath As String = Me.ApplicationPath
        Dim strDes As String = ""

        If strAppPath.EndsWith("/") Then
            strDes = strAppPath & "New/frmClients.aspx?action=u&clientid=" & hdItemID.Value
        Else
            strDes = strAppPath & "/New/frmClients.aspx?action=u&clientid=" & hdItemID.Value
        End If

        Response.Redirect(strDes, True)
    End Sub

    Private Sub dgResults_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgResults.SelectedIndexChanged

    End Sub
End Class

Public Class SearchClientParameters
    Public Surname As String = ""
    Public Name As String = ""
    Public ApplNin As String = ""
    Public Address As String = ""
    Public Postcode As String = ""
    Public Gender As String = ""
    Public Religion As String = ""
    Public OYThan As String = ""
    Public Age As String = ""
    Public IniDVisited As String = ""
    Public FinDVisited As String = ""
    Public Saving As String = ""
    Public SavAmount As String = ""
    Public WPension As String = ""
    Public WOCCPen As String = ""
    Public WIncSup As String = ""
    Public WOthInc As String = ""
    Public WPenCred As String = ""
    Public ReligionLabel As String = ""
    Public GenderLabel As String = ""
    Public OYThanLabel As String = ""
    Public SavingLabel As String = ""
End Class