Imports CAMS_ADMIN
Imports CAMS_BL
Imports System.Data
Imports System.Text

Public Class frmProfessionals
    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 ddlProfession As System.Web.UI.WebControls.DropDownList
    Protected WithEvents txtEmail As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtTelephone As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtMobile As System.Web.UI.WebControls.TextBox
    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 hdEvent As System.Web.UI.HtmlControls.HtmlInputHidden
    Protected WithEvents hdAction 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 colCamsMenu As System.Web.UI.HtmlControls.HtmlTableCell
    Protected WithEvents btnAdd As System.Web.UI.WebControls.Button
    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("frmProfessionals.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_MAINTENANCE_ID
        mnuCams.CurrentItem = Constants.MENU_MAINTENANCE_PROFESSIONAL_ID

        If Not Request.QueryString("event") Is Nothing Then

            If Request.QueryString("event").Equals("popup") Then
                mnuCams.Visible = False
                dgResults.Columns(7).Visible = True
                colCamsMenu.Visible = False
            End If

        End If
        'End Menu

        '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
            LoadDropDownLists()
            hdAction.Value = "I" 'setting as default action, I = Insert
            RefreshResults(FIRST_PAGE, txtRecordsPerPage.Text)
        End If
        'End Initial values

        'Postback
        If IsPostBack Then
            If hdEvent.Value = "save" Then
                Save()
            ElseIf hdEvent.Value = "selrow" Then
                SelectRow(Convert.ToInt32(hdRowId.Value))
                ShowItem(Convert.ToInt32(hdRowId.Value))
            ElseIf hdEvent.Value = "cancel" Then
                SetCancel()
            ElseIf hdEvent.Value = "add" Then
                btnAdd_Click()
            End If

        End If
        'End postback

        '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='Maintenance/Professionals'")
            stbOutput.Append("</script>")
            Response.Write(stbOutput.ToString)
        End If
        'End Added
    End Sub

#Region "Loading Dropdownlist"

    Private Sub LoadDropDownLists()
        Dim oCC_Professional As New CC_Professional
        Dim dsData As DataSet

        Try
            dsData = oCC_Professional.GetDataForControls

            If Not dsData Is Nothing Then
                Util.FillDropDownList(dsData.Tables("PROFESSIONS").DefaultView, ddlProfession, "IDSEQUENCE", "DESCRIPTION", True, New ListItem("", ""))

                If Not Request.QueryString("profession") Is Nothing Then
                    Util.SelectValueFromDropDown(ddlProfession, Request.QueryString("profession").ToUpper)
                End If

            Else
                Throw New Exception("No data")
            End If

        Catch ex As Exception
            ddlProfession.Items.Clear()
            ddlProfession.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
    End Sub

    Private Sub RefreshResults(ByVal nPage As Integer, ByVal nRecordsPerPage As Integer)
        Dim oCC_Professional As New CC_Professional
        Dim dsResults As DataSet
        Dim strProfessionID As String = ""

        If Not Request.QueryString("profession") Is Nothing Then
            strProfessionID = Request.QueryString("profession")
        End If

        Try
            dsResults = oCC_Professional.GetProfessionals(nPage, txtRecordsPerPage.Text, strProfessionID)

            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 "Controls' events"

    Private Sub btnAdd_Click()
        hdItemID.Value = String.Empty
        txtSurname.Text = String.Empty
        txtName.Text = String.Empty
        txtAddress.Text = String.Empty
        txtPostcode.Text = String.Empty
        txtEmail.Text = String.Empty
        txtTelephone.Text = String.Empty
        txtMobile.Text = String.Empty

        Try
            Util.SelectValueFromDropDown(ddlProfession, String.Empty)
        Catch ex As Exception

        End Try

        'setting actions
        hdEvent.Value = ""
        hdAction.Value = "I"
        hdRowId.Value = ""
    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

#End Region

#Region "Save"

    Private Sub Save()
        If hdAction.Value.Equals("I") Then
            Insert()
        ElseIf hdAction.Value.Equals("U") Then
            Update()
        ElseIf hdAction.Value.Equals("D") Then
            Delete()
        End If

    End Sub

    Private Sub Insert()
        Dim oEC_Professional As EC_Professional = SetProperties()
        Dim oCC_Professional As New CC_Professional
        Dim strMsg As String

        If Not oEC_Professional Is Nothing Then
            If oCC_Professional.SaveProfessional(oEC_Professional, strMsg) Then
                Me.btnAdd_Click()
                RefreshResults(FIRST_PAGE, Convert.ToInt32(txtRecordsPerPage.Text))
            Else
                'If strMsg = "GO_EXISTS" Then
                '    lblValAbbrev.Text = "Already exists in database"
                '    lblValAbbrev.Visible = True
                'End If
            End If

        End If

    End Sub

    Private Sub Update()
        Dim oEC_Professional As EC_Professional = SetProperties()
        Dim oCC_Professional As New CC_Professional
        Dim strMsg As String

        If Not oEC_Professional Is Nothing Then
            If oCC_Professional.UpdateProfessional(oEC_Professional, strMsg) = False Then
                If strMsg = "NOEXISTS" Then
                    'lblValAbbrev.Text = "Doesn't exist in database"
                    'lblValAbbrev.Visible = True
                End If
            Else
                RefreshResults(FIRST_PAGE, Convert.ToInt32(txtRecordsPerPage.Text))

                If hdRowId.Value.Trim.Equals(String.Empty) = False Then
                    SelectRow(Convert.ToInt32(hdRowId.Value))
                    ShowItem(Convert.ToInt32(hdRowId.Value))
                End If
            End If

        End If
    End Sub

    Private Sub Delete()
        Dim oEC_Professional As EC_Professional = SetProperties()
        Dim oCC_Professional As New CC_Professional
        Dim strMsg As String

        If Not oEC_Professional Is Nothing Then
            If oCC_Professional.DeleteProfessional(oEC_Professional, strMsg) = False Then
                If strMsg = "NOEXISTS" Then
                    'lblValAbbrev.Text = "Doesn't exist in database"
                    'lblValAbbrev.Visible = True
                End If
            Else
                btnAdd_Click()
                RefreshResults(FIRST_PAGE, Convert.ToInt32(txtRecordsPerPage.Text))
            End If

        End If
    End Sub

    Private Function SetProperties() As EC_Professional
        Dim oEC_Professional As New EC_Professional
        Dim oEC_User As EC_User = Me.GetUserFromSession

        With oEC_Professional
            If hdItemID.Value.Equals(String.Empty) = False Then
                .ProfessionalID = hdItemID.Value
            End If
            .Surname = txtSurname.Text.Trim.ToUpper
            .Name = txtName.Text.Trim.ToUpper
            .Address = txtAddress.Text.Trim
            .Postcode = txtPostcode.Text.Trim.ToUpper
            .Email = txtEmail.Text.Trim
            .Mobile = txtMobile.Text.Trim
            .Telephone = txtTelephone.Text.Trim
            .Profession = ddlProfession.SelectedValue

            If Not oEC_User Is Nothing Then
                .AddedBy = oEC_User.Login
                .ChangedBy = oEC_User.Login
            End If

        End With

        Return oEC_Professional

    End Function

#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(7).Text = "<a href=""#"" onclick=""fnSetProfessional(" & e.Item.Cells(1).Text & ")""><img src=""../images/check.gif"" border=0></a>"
        End If

    End Sub

    Private Sub SelectRow(ByVal rowID As Integer)

        Try
            If dgResults.Items.Count > 0 Then
                'Setting the action as an updating
                hdAction.Value = "U"
                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

    Private Sub ShowItem(ByVal rowID As Integer)
        Dim strItemID As String

        Try
            If dgResults.Items.Count > 0 Then

                strItemID = dgResults.Items(rowID).Cells(1).Text.Trim

                If strItemID.Equals(String.Empty) = False Then
                    LoadItem(strItemID)
                End If
            End If
        Catch ex As Exception

        End Try

    End Sub

    Private Sub LoadItem(ByVal prmItemID As Integer)
        Dim oCC_Professional As New CC_Professional
        Dim oEC_Professional As EC_Professional = oCC_Professional.GetProfessionalByID(prmItemID)

        If Not oEC_Professional Is Nothing Then
            With oEC_Professional
                hdItemID.Value = .ProfessionalID
                txtSurname.Text = .Surname
                txtName.Text = .Name
                txtAddress.Text = .Address
                txtPostcode.Text = .Postcode
                txtEmail.Text = .Email
                txtTelephone.Text = .Telephone
                txtMobile.Text = .Mobile
                Try
                    Util.SelectValueFromDropDown(ddlProfession, .Profession)
                Catch

                End Try

            End With
        End If
    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)
    End Sub

#End Region

End Class
