Link to home
Start Free TrialLog in
Avatar of Trent Adams
Trent Adams

asked on

Visual Basic .NET Disable Validation In Grid Edit

I have finally ordered my Murach's Visual Basic 2015 book. So hopefully it will help me with learning VB.NET. However, I have some controls, two text box controls that are used to input hours and minutes. In the grid we have it set that when the data is an expense we disable the time textbox controls. However, the validation remains in effect. What I am hoping to accomplish is when in edit mode and the control is disabled to not attempt validation. I'm a little confused as to how to go about this when in edit mode.
Avatar of Dorababu M
Dorababu M
Flag of India image

Can you share some information or post a screen shot of what you are trying to accomplish
ASKER CERTIFIED SOLUTION
Avatar of Scott McDaniel (EE MVE )
Scott McDaniel (EE MVE )
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Trent Adams
Trent Adams

ASKER

Here is the full VB Code.

Imports System.Data.SqlClient
Imports System.Web.Services
Imports Mainstay.Objects
Partial Public Class TimeExpenseEntry
    Inherits System.Web.UI.Page
    Private Shared servicetypeid As Integer = 2

    Private totalMileage As Decimal
    Private totalExpense As Decimal
    Private totalHours As Decimal
    Private Shared UserTimeRestriction As Boolean

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack() Then
            SetPage()
           'CheckUserTimeEntry()
        End If
        
        SetPermissions()
    End Sub
#Region "Set Page"
    <WebMethod()> _
    Public Sub ClearlblSubmit()
        lblSubmitStatus.Text = ""
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
    End Sub


    Protected Sub SetPage()
        LoadServiceTypes()
        'LoadIndividuals()
        LoadTitles()
        LoadServices()
        LoadProvidedBy()
        LoadTime()
        lstServiceTypes.Focus()
        txtNotes.Attributes("onblur") = "SetClear()"
        txtStartHour.Attributes("onblur") = "SetClear()"
        txtStartMinute.Attributes("onblur") = "SetClear()"
        txtEndHour.Attributes("onblur") = "SetClear()"
        txtEndMinute.Attributes("onblur") = "SetClear()"
    End Sub
    Protected Sub LoadPreLoadedForm()
        If Request.QueryString("dt") <> "" Then
            txtDate.Text = Request.QueryString("dt")
        End If

        LoadCS()
    End Sub
    Protected Sub LoadTitles()
        ddlTitle.Items.Clear()

        ddlTitle.Items.Add(New ListItem("Habilitation Specialist", 1))
        ddlTitle.Items.Add(New ListItem("Specialized Duties", 2))
        ddlTitle.Items.Add(New ListItem("Manager", 3))
        ddlTitle.Items.Insert(0, "")

    End Sub

    Protected Sub LoadServiceTypes()
        lstServiceTypes.Items.Clear()
        Dim st As New ServiceTypes()
        lstServiceTypes.Items.Insert(0, "Expenses")
        lstServiceTypes.Items.Insert(0, "Time Entry")
        lstServiceTypes.DataBind()
        lstServiceTypes.Items.Insert(0, "Select Billing Type")

    End Sub

    Protected Sub LoadTime()
        lstStartAMPM.Items.Clear()
        lstStartAMPM.Items.Insert(0, "PM")
        lstStartAMPM.Items.Insert(0, "AM")
        lstEndAMPM.Items.Clear()
        lstEndAMPM.Items.Insert(0, "PM")
        lstEndAMPM.Items.Insert(0, "AM")

    End Sub
    Protected Sub LoadServices()
        Dim srv As New LiveEvents 'SelectServices
        lstProvidedEvents.Items.Clear()
        Dim lst As List(Of LiveEvents) = srv.SelectLiveEvents(True)

        lstProvidedEvents.DataSource = lst
        lstProvidedEvents.DataBind()
        If lst.Count = 0 Then
            lstProvidedEvents.Items.Insert(0, "No Active Events")
        Else
            lstProvidedEvents.Items.Insert(0, "Select Event")
        End If

    End Sub
    Protected Sub LoadProvidedBy()
        Dim lstA As New List(Of AssignedPermission.PermissionType)
        lstA = CType(Session("Permissions"), List(Of AssignedPermission.PermissionType))

        Dim u As New User 'SelectServices
        u.Active = True
        u.LockedOut = False
        lstProvidedBy.Items.Clear()
        lstProvidedBy.DataSource = u.SelectUsers()
        lstProvidedBy.DataBind()
        lstProvidedBy.Items.Insert(0, "Select Who Service was Provided By")
        'If lstServiceTypes.SelectedValue = 5 Or lstServiceTypes.SelectedValue = 6 Or lstServiceTypes.SelectedValue = 7 Or lstServiceTypes.SelectedValue = 4 Then
        Try
            lstProvidedBy.SelectedValue = Session("UserID")
            If lstA.Contains(AssignedPermission.PermissionType.DisableProvidedBy) Then
                lstProvidedBy.Enabled = False
            End If
        Catch
        End Try
        'End If

    End Sub

    Protected Sub LoadEnteredServices()

        'CHECK OMISSIONS AND APPROVAL
        Dim rec As New ClaimDetail()
        rec.BID = SelectBID()
        'rec.IndID = lstIndividuals.SelectedValue
        Dim bdt, edt As DateTime
        bdt = txtDate.Text
        edt = txtDate.Text
        'Dim servicetypeid As Integer = lstServiceTypes.SelectedValue
        Dim approved, omission As Boolean
        approved = rec.SelectApproveCheck(servicetypeid, bdt, edt)
        omission = rec.SelectOmissionCheck(servicetypeid, bdt, edt)



        Dim cb As New Claim()
        Dim clst As New List(Of Claim)
        cb.BID = SelectBID()
        'cb.IndID = lstIndividuals.SelectedValue
        cb.RecDate = txtDate.Text
        cb.RecDateEnd = txtDate.Text
        cb.ProvidedBy = lstProvidedBy.SelectedValue
        'cb.ServiceTypeID = lstServiceTypes.SelectedValue

        If lstServiceTypes.SelectedValue = "Expenses" Then
            clst = cb.SelectClaims(, , , "TimeCard", "False", "True")
        Else
            clst = cb.SelectClaims(, , , "TimeCard", "False", "False")
        End If

        If clst.Count > 0 Then
            trDoneServices.Visible = True
        End If
        LoadControls()

        If approved Then
            dlstEnteredServices.EditItemIndex = -1
        End If

        ' Compute the total expense
        totalExpense = 0
        totalHours = 0
        totalMileage = 0
        

        For Each enteredService In clst
            totalExpense += enteredService.Expense

            If enteredService.StartTime <> enteredService.EndTime And enteredService.Duration IsNot Nothing Then
                totalHours += (DateTime.Parse(enteredService.EndTime) - DateTime.Parse(enteredService.StartTime)).TotalHours()
                
            ElseIf enteredService.StartTime = enteredService.EndTime Then
               totalMileage += enteredService.Mileage
                enteredService.StartTime = ""
                enteredService.EndTime = ""
            End If
            
        Next

        dlstEnteredServices.DataSource = clst
        dlstEnteredServices.DataBind()
        

        'txtNotes.Text = cb.SelectClaimDetailNote(SelectBID(), lstIndividuals.SelectedValue, txtDate.Text, lstServiceTypes.SelectedValue)
        If txtNotes.Text <> "" Then
            txtNotes.Text = txtNotes.Text.Replace("<br>", vbNewLine)
        End If
        'If txtOutcome.Text <> "" Then
        '    txtOutcome.Text = txtOutcome.Text.Replace("<br>", vbNewLine)


        For Each itm As DataListItem In dlstEnteredServices.Items
            
            Dim hdnProvidedByID As HiddenField = CType(itm.FindControl("hdnCreatedBy"), HiddenField)
            If itm.ItemType = ListItemType.AlternatingItem Or itm.ItemType = ListItemType.Item Then
                If Session("RoleID") = 4 Or Session("RoleID") = 9 Or Session("RoleID") = 10 Or Session("RoleName").ToString().Contains("Staff") Then
                    If Session("UserID") = hdnProvidedByID.Value Then
                        itm.FindControl("btnEdit").Visible = True
                        itm.FindControl("btnRemove").Visible = True
                    Else
                        itm.FindControl("btnEdit").Visible = False
                        itm.FindControl("btnRemove").Visible = False
                    End If
                Else
                    Dim hdnApproved As HiddenField = CType(itm.FindControl("hdnApproved"), HiddenField)

                    If hdnApproved.Value = True Then
                        itm.FindControl("btnEdit").Visible = False
                        itm.FindControl("btnRemove").Visible = False
                    Else
                        itm.FindControl("btnEdit").Visible = True
                        itm.FindControl("btnRemove").Visible = True
                    End If


                End If

            End If
        Next


        SetPermissions()
    End Sub
    Protected Function SelectBID() As Integer
        Dim mth As String = Convert.ToDateTime(txtDate.Text).Month.ToString()
        Dim yr As String = Convert.ToDateTime(txtDate.Text).Year.ToString()
        Dim bm As New BillingMonths
        Dim lst As List(Of BillingMonths) = bm.SelectBillingMonths(, mth, yr)
        SelectBID = 0
        For Each b As BillingMonths In lst
            SelectBID = b.BID
        Next
        Return SelectBID
    End Function
    Protected Sub LoadControls()
        Dim rec As New ClaimDetail()
        rec.BID = SelectBID()
        'rec.IndID = lstIndividuals.SelectedValue
        Dim bdt, edt As DateTime
        bdt = txtDate.Text
        edt = txtDate.Text
        Dim servicetypeid As Integer = 1
        Dim approved, omission As Boolean
        approved = rec.SelectApproveCheck(servicetypeid, bdt, edt)
        omission = rec.SelectOmissionCheck(servicetypeid, bdt, edt)
        txtNotes.Enabled = True
        txtStartHour.Enabled = True
        txtStartMinute.Enabled = True
        lstStartAMPM.Enabled = True
        txtEndHour.Enabled = True
        txtEndMinute.Enabled = True
        lstEndAMPM.Enabled = True
        If Not omission Then
            'EnterdServicesStatusChange(True)
            btnSave.Visible = True
            btnApprove.Visible = False
            btnVoid.Visible = False
        ElseIf omission And Not approved Then
            'EnterdServicesStatusChange(True)
            btnSave.Visible = True
            btnApprove.Visible = True
            btnVoid.Visible = False
        ElseIf omission And approved Then
            btnSave.Visible = False
            'DisableRemove()
            'EnterdServicesStatusChange(False)
            btnApprove.Visible = False
            btnVoid.Visible = True
            trSelectEvent.Visible = False
            trProvidedBy.Visible = False
            trStartTime.Visible = False
            trEndTime.Visible = False
        Else
            btnSave.Visible = False
            'DisableRemove()
            'EnterdServicesStatusChange(False)
            btnApprove.Visible = False
            btnVoid.Visible = False
            trSelectEvent.Visible = False
            trProvidedBy.Visible = False
            trStartTime.Visible = False
            trEndTime.Visible = False
        End If

        SetPermissions()

    End Sub
    Protected Sub DisableRemove()
        For Each itm As DataListItem In dlstEnteredServices.Items
            CType(itm.FindControl("btnRemove"), LinkButton).Visible = False
        Next
    End Sub
    Protected Sub EnableRemove()
        For Each itm As DataListItem In dlstEnteredServices.Items
            CType(itm.FindControl("btnRemove"), LinkButton).Visible = True
        Next
    End Sub

    Protected Sub FollowedIncCollapse(ByVal sender As Object, ByVal e As System.EventArgs)
        If trSelectEvent.Visible Then
            trProvidedServiceInfo.Visible = False
            trSelectEvent.Visible = False
            trStartTime.Visible = False
            trEndTime.Visible = False
            trNotes.Visible = False
            trSig.Visible = False
            trProvidedBy.Visible = False
            trSave.Visible = False
            'trSelectLocation.Visible = False
            'imgFollowedInc.ImageUrl = "Images/plus.gif"
            lbMinimize.Text = "+ Maximize +"
        Else
            trProvidedServiceInfo.Visible = True
            trSelectEvent.Visible = True
            trStartTime.Visible = True
            trEndTime.Visible = True
            trNotes.Visible = True
            trSig.Visible = True
            trProvidedBy.Visible = True
            trSave.Visible = True
            'trSelectLocation.Visible = True
            'imgFollowedInc.ImageUrl = "Images/minus.gif"
            lbMinimize.Text = "- Minimize -"
        End If
    End Sub

#End Region

    Private Sub btnApprove_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnApprove.Click
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
        lblSubmitStatus.Text = ""
        Dim rec As New Claim()
        rec.BID = SelectBID()
        'rec.IndID = lstIndividuals.SelectedValue
        rec.ApprovedBy = Session("UserID")
        rec.ApprovedDate = DateTime.Now()
        Dim bdt, edt As DateTime
        bdt = txtDate.Text
        edt = txtDate.Text
        Dim servicetypeid As Integer = lstServiceTypes.SelectedValue
        If rec.ApproveClaimDetail(servicetypeid, bdt, edt) Then
            LoadEnteredServices()
            LoadControls()
            lblApproveStatus.CssClass = ""
            lblApproveStatus.Text = "Records have been approved"
            btnSave.Visible = False
            trSelectEvent.Visible = False
            trProvidedBy.Visible = False
            trStartTime.Visible = False
            trEndTime.Visible = False
            txtNotes.Enabled = False
            trNotes.Visible = False
            trProvidedServiceInfo.Visible = False
            btnApprove.Visible = False
            'trSelectLocation.Visible = False
            btnVoid.Visible = True
        Else
            lblApproveStatus.CssClass = "Error"
            lblApproveStatus.Text = "There was a problem approving these records."
        End If

    End Sub
    Protected Sub EnterdServicesStatusChange(ByVal enabled As Boolean)
        If Not enabled Then
            dlstEnteredServices.EditItemIndex = -1
        End If

        For Each itm As DataListItem In dlstEnteredServices.Items
            
            If itm.ItemType = ListItemType.AlternatingItem Or itm.ItemType = ListItemType.Item Then
                itm.FindControl("btnEdit").Visible = enabled
                itm.FindControl("btnRemove").Visible = enabled
            End If
        Next
        'LoadEnteredServices()
    End Sub
    Private Sub btnVoid_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnVoid.Click
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
        lblSubmitStatus.Text = ""
        Dim rec As New Claim()
        rec.BID = SelectBID()
        'rec.IndID = lstIndividuals.SelectedValue
        rec.VoidBy = Session("UserID")
        rec.VoidDate = DateTime.Now()
        Dim bdt, edt As DateTime
        bdt = txtDate.Text
        edt = txtDate.Text
        Dim servicetypeid As Integer = lstServiceTypes.SelectedValue
        If rec.VoidClaimDetail(servicetypeid, bdt, edt) Then
            LoadEnteredServices()
            LoadControls()
            lblVoidStatus.CssClass = ""
            lblVoidStatus.Text = "Records have been voided"
            btnSave.Visible = True
            trSelectEvent.Visible = True
            'trSelectLocation.Visible = True
            trProvidedBy.Visible = True
            trStartTime.Visible = True
            trEndTime.Visible = True
            txtNotes.Enabled = True
            btnApprove.Visible = False
            btnVoid.Visible = False
        Else
            lblVoidStatus.CssClass = "Error"
            lblVoidStatus.Text = "There was a problem voiding these records."
        End If

    End Sub

    Protected Sub lstEditExpenseType_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim lstEditExpenseType = CType(sender, DropDownList)
        Dim parent As Control = lstEditExpenseType.NamingContainer

        If lstEditExpenseType.SelectedItem.Text = "Mileage" Then
            CType(parent.FindControl("txtExpense"), TextBox).Enabled = False
            CType(parent.FindControl("txtMileage"), TextBox).Enabled = True
            CType(parent.FindControl("txtMileageRequiredValidator"), RequiredFieldValidator).Enabled = True
            CType(parent.FindControl("txtExpenseRequiredValidator"), RequiredFieldValidator).Enabled = False
        Else
            CType(parent.FindControl("txtExpense"), TextBox).Enabled = True
            CType(parent.FindControl("txtMileage"), TextBox).Enabled = False
            CType(parent.FindControl("txtMileageRequiredValidator"), RequiredFieldValidator).Enabled = False
            CType(parent.FindControl("txtExpenseRequiredValidator"), RequiredFieldValidator).Enabled = True
        End If
    End Sub

    Private Sub lstExpenseType_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstExpenseType.SelectedIndexChanged
        If lstExpenseType.SelectedItem.Text = "Mileage" Then
            txtExpense.Enabled = False
            txtExpense.Text = ""
            txtMileage.Enabled = True
            panelMileageTotal.Visible = True
            txtMileageRequiredValidator.Enabled = True
            txtExpenseRequiredValidator.Enabled = False
        Else
            txtExpense.Enabled = True
            txtMileage.Enabled = False
            txtMileage.Text = ""
            lblMileageTotal.Text = "$0"
            panelMileageTotal.Visible = False
            txtMileageRequiredValidator.Enabled = False
            txtExpenseRequiredValidator.Enabled = True
        End If
    End Sub

    Private Sub lstServiceTypes_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstServiceTypes.SelectedIndexChanged
        Try
            If lstServiceTypes.SelectedValue = "Expenses" Then
                trExpense.Visible = True
                trMileage.Visible = True
                trStartTime.Visible = False
                trEndTime.Visible = False
                trProvidedServiceInfo.Visible = True
                trSelectEvent.Visible = True
                trNotes.Visible = True
                trSig.Visible = True
                trProvidedBy.Visible = True
                trSave.Visible = True
                'trSelectIndividual.Visible = True
                'trSelectLocation.Visible = True
                'imgFollowedInc.ImageUrl = "Images/minus.gif"
                lbMinimize.Text = "- Minimize -"
                trSelectDate.Visible = True

                ' Ensure the expense types are populated
                Dim expenseTypeSelection As New ExpenseType
                Dim expenseTypes As List(Of ExpenseType) = expenseTypeSelection.SelectAllExpenseTypes()
                lstExpenseType.Items.Clear()
                lstExpenseType.DataSource = expenseTypes
                lstExpenseType.DataValueField = "ExpenseTypeID"
                lstExpenseType.DataTextField = "Description"
                lstExpenseType.DataBind()
                lstExpenseType.Items.Insert(0, New ListItem("Select Expense Type", -1))
            Else
                trExpense.Visible = False
                trMileage.Visible = False
                trProvidedServiceInfo.Visible = True
                trSelectEvent.Visible = True
                trStartTime.Visible = True
                trEndTime.Visible = True
                trNotes.Visible = True
                trSig.Visible = True
                trProvidedBy.Visible = True
                trSave.Visible = True
                'trSelectIndividual.Visible = True
                'trSelectLocation.Visible = True
                'imgFollowedInc.ImageUrl = "Images/minus.gif"
                lbMinimize.Text = "- Minimize -"
                trSelectDate.Visible = True
                trStartTime.Visible = True
                trEndTime.Visible = True
            End If
        Catch ex As Exception

        End Try
        'ResetForm()
    End Sub

    Private Sub btnContinue_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnContinue.Click
        'If UserTimeRestriction = True Then
           ' btnSave.Visible=False
            'Else    
                btnSave.Visible=True
                lstExpenseType.SelectedIndex = -1
                LoadEnteredServices()
        'End If
        

    End Sub
    Protected Sub LoadCS()
        Dim lst As New List(Of AssignedPermission.PermissionType)
        lst = CType(Session("Permissions"), List(Of AssignedPermission.PermissionType))

        If lst.Contains(AssignedPermission.PermissionType.EnterCSOutsideRange) Then
            If Convert.ToDateTime(txtDate.Text).Date <= Date.Now.Date Then
                trProvidedServiceInfo.Visible = True
                trSelectEvent.Visible = True
                trStartTime.Visible = True
                trEndTime.Visible = True
                trNotes.Visible = True
                trSig.Visible = True
                trProvidedBy.Visible = True
                trSave.Visible = True
                'trSelectLocation.Visible = True
                lbMinimize.Text = "- Minimize -"
            Else
                trProvidedServiceInfo.Visible = False
                trSelectEvent.Visible = False
                trStartTime.Visible = False
                trEndTime.Visible = False
                trNotes.Visible = False
                trSig.Visible = False
                trProvidedBy.Visible = False
                trSave.Visible = False
                'trSelectLocation.Visible = False
            End If
        ElseIf lst.Contains(AssignedPermission.PermissionType.EnterCSThirtyDays) Then
            If Convert.ToDateTime(txtDate.Text).Date >= Date.Now.AddDays(-30).Date And Convert.ToDateTime(txtDate.Text).Date <= Date.Now.Date Then
                trProvidedServiceInfo.Visible = True
                trSelectEvent.Visible = True
                trStartTime.Visible = True
                trEndTime.Visible = True
                trNotes.Visible = True
                trSig.Visible = True
                trProvidedBy.Visible = True
                trSave.Visible = True
                'trSelectLocation.Visible = True
                lbMinimize.Text = "- Minimize -"
            Else
                trProvidedServiceInfo.Visible = False
                trSelectEvent.Visible = False
                trStartTime.Visible = False
                trEndTime.Visible = False
                trNotes.Visible = False
                trSig.Visible = False
                trProvidedBy.Visible = False
                trSave.Visible = False
                'trSelectLocation.Visible = False
            End If
        Else
            If Convert.ToDateTime(txtDate.Text).Date >= Date.Now.AddDays(-10).Date And Convert.ToDateTime(txtDate.Text).Date <= Date.Now.Date Then
                trProvidedServiceInfo.Visible = True
                trSelectEvent.Visible = True
                trStartTime.Visible = True
                trEndTime.Visible = True
                trNotes.Visible = True
                trSig.Visible = True
                trProvidedBy.Visible = True
                trSave.Visible = True
                'trSelectLocation.Visible = True
                lbMinimize.Text = "- Minimize -"
            Else
                trProvidedServiceInfo.Visible = False
                trSelectEvent.Visible = False
                trStartTime.Visible = False
                trEndTime.Visible = False
                trNotes.Visible = False
                trSig.Visible = False
                trProvidedBy.Visible = False
                trSave.Visible = False
                'trSelectLocation.Visible = False
            End If
        End If

        LoadServices()
        LoadEnteredServices()
        LoadProvidedBy()
        LoadTime()
        'LoadLocations(True)
        If trSelectEvent.Visible Then
            lstProvidedEvents.Focus()
        End If
        lblSubmitStatus.Text = ""
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
        txtNotes.Text = ""
    End Sub
    Protected Sub SetPermissions()
        Dim lst As New List(Of AssignedPermission.PermissionType)
        lst = CType(Session("Permissions"), List(Of AssignedPermission.PermissionType))
        Try

            If Request.QueryString("st") = "4" Then
                If Not lst.Contains(AssignedPermission.PermissionType.ViewResidential) Then
                    Response.Redirect("Dashboard.aspx")
                End If
                If Not lst.Contains(AssignedPermission.PermissionType.ApproveResidential) Then
                    btnApprove.Visible = False
                End If

                If Not lst.Contains(AssignedPermission.PermissionType.VoidResidential) Then
                    btnVoid.Visible = False
                End If

                If Not lst.Contains(AssignedPermission.PermissionType.EnterResidential) Then
                    btnSave.Visible = False
                End If

                If Not lst.Contains(AssignedPermission.PermissionType.EditResidential) Then
                    For Each itm As DataListItem In dlstEnteredServices.Items
                        If itm.ItemType = ListItemType.Item Or itm.ItemType = ListItemType.AlternatingItem Then
                            If CType(itm.FindControl("hdnCreatedBy"), HiddenField).Value = Session("UserID") Then
                                itm.FindControl("btnRemove").Visible = True
                                itm.FindControl("btnEdit").Visible = True
                            Else
                                itm.FindControl("btnRemove").Visible = False
                                itm.FindControl("btnEdit").Visible = False
                            End If
                        End If
                        If itm.ItemType = ListItemType.EditItem Then

                        End If
                    Next
                End If
            Else
                If Not lst.Contains(AssignedPermission.PermissionType.ViewCommunityServices) Then
                    Response.Redirect("Dashboard.aspx")
                End If

                If Not lst.Contains(AssignedPermission.PermissionType.ApproveCommunityServices) Then
                    btnApprove.Visible = False
                End If

                If Not lst.Contains(AssignedPermission.PermissionType.VoidCommunityServices) Then
                    btnVoid.Visible = False
                End If

                If Not lst.Contains(AssignedPermission.PermissionType.EnterCommunityServices) Then
                    btnSave.Visible = False
                End If

                If Not lst.Contains(AssignedPermission.PermissionType.EditCommunityServices) Then
                    For Each itm As DataListItem In dlstEnteredServices.Items
                        If itm.ItemType = ListItemType.Item Or itm.ItemType = ListItemType.AlternatingItem Then
                            itm.FindControl("btnRemove").Visible = False
                            itm.FindControl("btnEdit").Visible = False
                        End If
                        If itm.ItemType = ListItemType.EditItem Then

                        End If
                    Next
                End If

                If lst.Contains(AssignedPermission.PermissionType.EditOwnCommunityServices) Then
                    For Each itm As DataListItem In dlstEnteredServices.Items
                        If itm.ItemType = ListItemType.Item Or itm.ItemType = ListItemType.AlternatingItem Then
                            If CType(itm.FindControl("hdnCreatedBy"), HiddenField).Value = Session("UserID") Then
                                itm.FindControl("btnRemove").Visible = True
                                itm.FindControl("btnEdit").Visible = True
                            Else
                                itm.FindControl("btnRemove").Visible = False
                                itm.FindControl("btnEdit").Visible = False
                            End If
                            'If Not Session("RoleID") = "4" Then
                            '    itm.FindControl("btnRemove").Visible = True
                            '    itm.FindControl("btnEdit").Visible = True
                            'End If
                        End If
                        If itm.ItemType = ListItemType.EditItem Then

                        End If
                    Next
                End If
            End If

        Catch ex As Exception
            Response.Redirect("Default.aspx")
        End Try
    End Sub
    Protected Sub ResetForm()
        trProvidedServiceInfo.Visible = False
        trSelectEvent.Visible = False
        trStartTime.Visible = False
        trEndTime.Visible = False
        trNotes.Visible = False
        trSig.Visible = False
        trProvidedBy.Visible = False
        trSave.Visible = False
        'trSelectLocation.Visible = False
        trDoneServices.Visible = False
        txtNotes.Enabled = True
        txtNotes.Enabled = True
        txtStartHour.Enabled = True
        txtStartMinute.Enabled = True
        lstStartAMPM.Enabled = True
        txtEndHour.Enabled = True
        txtEndMinute.Enabled = True
        lstEndAMPM.Enabled = True
        btnApprove.Visible = False
        btnVoid.Visible = False
        lblSubmitStatus.Text = ""
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
        txtSignature.Text = ""



    End Sub

    Protected Sub CheckUserTimeEntry()
        
        Dim currentUser = Session("UserID")
        ''Dim checkDay As Integer
        'Dim CheckTime As DateTime = Date.Now
        'If checkDay = DayOfWeek.Monday And CheckTime = Convert.ToDateTime("12:00 PM")  Then
            Dim status As New CheckUserTimeStatus
            Dim checkResult As Boolean = status.UserTimeEntryCheck(currentUser)

            If checkResult = False Then
                UserTimeRestriction = True
           
                Dim message As String = "Time entry has been restricted. You may only enter time for the previous week."
                ClientScript.RegisterStartupScript(Me.GetType(), "Popup", "RestrictedNotification('" + message + "');", True)
                trMissingTimeMessage.Visible=True
            Else 
                UserTimeRestriction = False
                btnSave.Attributes.Add("onclick", "this.disabled=true;" + ClientScript.GetPostBackEventReference(btnSave, "").ToString())
            End If
            'btnSave.Attributes.Add("onclick", "this.disabled=true;" + ClientScript.GetPostBackEventReference(btnSave, "").ToString())
        'End If

        
    End Sub

    Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
        
        'Check to see if the date entered falls within the last week
        'if the UserTimeRestriction is true.
        'If UserTimeRestriction = True Then
        '    'Establish date range from today and last Monday.
        '    Dim todaysDate As Date = Date.Now
        '    Dim dayDiff As Integer = todaysDate.DayOfWeek - DayOfWeek.Monday
        '    Dim currentMonday As String = todaysDate.AddDays((1-dayDiff)-1).ToShortDateString()
        '    Dim lastMonday As String = todaysDate.AddDays(-dayDiff - 7).ToShortDateString()
        '    Dim cutTime As String = "12:00:00 PM"
            
        '    If txtDate.Text >= currentMonday And TimeOfDay.ToString("hh:mm:ss tt") >= cutTime Then

        '        Dim message As String = "Restricted status prevents you from entering time for that date."
        '        ClientScript.RegisterStartupScript(Me.GetType(), "Popup", "RestrictedEntry('" + message + "');", True)

        '        Exit Sub

        '    ElseIf txtDate.Text >= lastMonday And txtDate.Text <= currentMonday Then

                Page.Validate("Step2")
                Page.Validate("Step3")
                If Not Page.IsValid Then
                    Return
                End If

                lblSubmitStatus.Text = ""
                If lstProvidedBy.SelectedIndex = 0 Then
                    lblSubmitStatus.Text = "Please select a provided by user"
                End If

                If lstProvidedEvents.SelectedIndex = 0 Then
                    lblSubmitStatus.Text = "Please select an event"
                End If

                If txtNotes.Text = "" Then
                    lblSubmitStatus.Text = "Please add valid notes in all required fields"
                End If

                If txtSignature.Text = "" Then
                    lblSubmitStatus.Text = "Please sign your entry"
                End If

                If ddlTitle.SelectedIndex < 1 Then
                    lblSubmitStatus.Text = "Please select your Title"
                End If

                If CheckTime() Then
                    If lblSubmitStatus.Text = "" Then
                        Dim bid As Integer = SelectBID()
                        Dim cb As New Claim()

                        Dim rec As New Claim()
                        rec.BID = bid
                        rec.IndID = -1
                        rec.RecDate = txtDate.Text
                        'If UserTimeRestriction = True Then
                        '    Dim newCDate = Convert.ToDateTime(txtDate.Text).Date
                        '    Dim newTime = DateTime.Now
                        '    Dim newCombinedDt = new DateTime(newCDate.Year, newCDate.Month, newCDate.Day, newTime.Hour, newTime.Minute, newTime.Second, newTime.Millisecond )
                        '    rec.Created = newCombinedDt
                        '        Else
                                rec.Created = DateTime.Now
                        'End If
                        
                        rec.CreatedBy = Session("UserID")
                        'rec.ServiceTypeID = lstServiceTypes.SelectedValue

                        rec.InternalEventID = lstProvidedEvents.SelectedValue

                        Dim cont As Boolean = False
                        If lstServiceTypes.SelectedValue = "Expenses" Then
                            rec.StartTime = txtDate.Text
                            rec.EndTime = txtDate.Text
                            cont = True
                        Else
                            rec.StartTime = DateTime.Parse(txtDate.Text & " " & txtStartHour.Text & ":" & txtStartMinute.Text & " " & lstStartAMPM.SelectedItem.Text)
                            rec.EndTime = DateTime.Parse(txtDate.Text & " " & txtEndHour.Text & ":" & txtEndMinute.Text & " " & lstEndAMPM.SelectedItem.Text)
                            cont = Convert.ToDateTime(rec.StartTime) < Convert.ToDateTime(rec.EndTime)
                        End If

                        Dim dur As TimeSpan = DateTime.Parse(rec.EndTime).Subtract(DateTime.Parse(rec.StartTime))
                        rec.Duration = dur.TotalMinutes
                        rec.Signature = txtSignature.Text
                        rec.Title = ddlTitle.SelectedValue
                        If txtEndHour.Text = "12" Then
                            If txtEndMinute.Text = "00" Then
                                If lstEndAMPM.SelectedItem.Text = "AM" Then
                                    rec.EndTime = Date.Parse(rec.EndTime).AddDays(1)
                                    'rec.EndTime = Date.Parse(rec.EndTime).AddHours(-12)
                                End If
                            End If

                        End If



                        Dim vFail As Boolean = False
                        If DateTime.Parse(txtDate.Text) < DateTime.Now Then
                            If cont Then
                                'rec.LocationID = Integer.Parse(IIf(lstLocations.Enabled = False, lstLocations.Items(0).Value, lstLocations.SelectedValue))
                                'rec.SelectServiceRate()
                                rec.PSID = Nothing
                                rec.ProvidedBy = lstProvidedBy.SelectedValue
                                Dim u As New Units()
                                'rec.Duration = u.CalculateUnitsUtilized(rec.StartTime, rec.EndTime, rec.ServiceID)
                                'rec.Rate = hdnRate.Value
                                'rec.BilledAmt = rec.Rate * rec.Duration
                                rec.ClaimNote = txtNotes.Text
                                rec.ClaimNote = Regex.Replace(rec.ClaimNote, "<(.|\n)*?>", "")
                                rec.ClaimNote = rec.ClaimNote.Replace(ControlChars.NewLine, "<br>")
                                rec.ClaimNote = Regex.Replace(rec.ClaimNote, "\n", "<br>")
                                If trExpense.Visible And txtExpense.Enabled Then
                                    rec.Expense = txtExpense.Text
                                Else
                                    rec.Expense = lstProvidedEvents.SelectedValue
                                End If

                                If trMileage.Visible And txtMileage.Enabled Then
                                    rec.Mileage = txtMileage.Text
                                    rec.MileageRate = System.Configuration.ConfigurationManager.AppSettings("MileageRate")
                                    rec.Expense = rec.Mileage * rec.MileageRate
                                Else
                                    rec.Mileage = 0
                                End If

                                rec.InternalEventID = lstProvidedEvents.SelectedValue

                                ' Store the expense type
                                If lstExpenseType.Visible AndAlso lstExpenseType.SelectedValue >= 0 Then
                                    rec.ExpenseTypeID = lstExpenseType.SelectedValue
                                End If

                                If rec.InsertUpdateTime() Then
                                    lblSubmitStatus.Text = "Service successfully added"
                                    LoadEnteredServices()
                                    LoadProvidedBy()
                                    LoadTime()
                                    'lstProvidedServices.SelectedIndex = 0
                                    'lstProvidedServices.Focus()
                                    txtNotes.Text = ""

                                    'LoadLocations(True)
                                    If rec.BilledAmt = 0.0 Then
                                        EmailUtil.ZeroAmountNotification(rec)
                                    End If
                                Else
                                    lblSubmitStatus.Text = "There was a problem adding this service. Service not added"
                                End If
                            Else
                                lblSubmitStatus.Text = "End Time cannot be earlier than Start Time"
                            End If
                        Else
                            lblSubmitStatus.Text = "Invalid Service Date - No prospective date entry."
                        End If

                        'lblSubmitStatus.Text = "Please select a provided by user"
                    End If
                End If

            'End If 'End If for date check If txtDate.Text >= currentMonday
        'End If

        
    End Sub
    Private Sub dlstEnteredServices_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles dlstEnteredServices.ItemCommand
        If e.CommandName = "Remove" Then
            Dim cl As New Claim
            cl.DeleteClaim(e.CommandArgument)
            LoadEnteredServices()
            'lstProvidedServices.Focus()
            lblSubmitStatus.Text = ""
            lblApproveStatus.Text = ""
            lblVoidStatus.Text = ""
        ElseIf e.CommandName = "Edit" Then
            dlstEnteredServices.EditItemIndex = e.Item.ItemIndex
            LoadEnteredServices()



        ElseIf e.CommandName = "Cancel" Then
            dlstEnteredServices.EditItemIndex = -1
            LoadEnteredServices()
        ElseIf e.CommandName = "Update" Then


            Dim bid As New Integer
            Dim cb As New Claim()
            Dim rec As New Claim()
            If Not txtStartHour.Enabled And Not txtStartMinute.Enabled Then
                RequiredFieldValidator6.ValidationGroup = ""
                RequiredFieldValidator6.ControlToValidate = Nothing
                RequiredFieldValidator7.ValidationGroup = ""
                RequiredFieldValidator7.ControlToValidate = Nothing
            End If

            rec.OldBid = SelectNewBID(CType(e.Item.FindControl("hdnDate"), HiddenField).Value)
            'rec.IndID = lstIndividuals.SelectedValue
            rec.RecDate = CType(e.Item.FindControl("txtServiceDate"), TextBox).Text
            bid = SelectNewBID(rec.RecDate)
            rec.BID = bid
            rec.OldRecDate = CType(e.Item.FindControl("hdnDate"), HiddenField).Value
            rec.ClaimID = Val(e.CommandArgument)
            rec.ClaimDetailID = CType(e.Item.FindControl("hdnClaimDetailID"), HiddenField).Value
            rec.IndID = -1
            'rec.RecDate = txtDate.Text
            rec.Modified = DateTime.Now
            rec.ModifiedBy = Session("UserID")
            'rec.ServiceTypeID = lstServiceTypes.SelectedValue
            rec.InternalEventID = CType(e.Item.FindControl("lstProvidedEvents"), ListBox).SelectedValue

            Dim lstDditedExpenseType As DropDownList = CType(e.Item.FindControl("lstExpenseType"), DropDownList)
            If lstDditedExpenseType IsNot Nothing AndAlso lstDditedExpenseType.Enabled AndAlso lstDditedExpenseType.SelectedValue >= 0 Then
                rec.ExpenseTypeID = lstDditedExpenseType.SelectedValue
            End If

            Dim dur As New TimeSpan
            Dim cont As Boolean = True
            If CType(e.Item.FindControl("txtExpense"), TextBox).Text <> "0.00" Then
                rec.StartTime = txtDate.Text
                rec.EndTime = txtDate.Text
                rec.Duration = 0.0
                cont = True
            Else

                rec.StartTime = DateTime.Parse(rec.RecDate & " " & CType(e.Item.FindControl("txtStartHour"), TextBox).Text & ":" & CType(e.Item.FindControl("txtStartMinute"), TextBox).Text & " " & CType(e.Item.FindControl("lstStartAMPM"), ListBox).SelectedItem.Text)
                rec.EndTime = DateTime.Parse(rec.RecDate & " " & CType(e.Item.FindControl("txtEndHour"), TextBox).Text & ":" & CType(e.Item.FindControl("txtEndMinute"), TextBox).Text & " " & CType(e.Item.FindControl("lstEndAMPM"), ListBox).SelectedItem.Text)
                dur = DateTime.Parse(rec.EndTime).Subtract(DateTime.Parse(rec.StartTime))
                rec.Duration = dur.TotalMinutes
                cont = Convert.ToDateTime(rec.StartTime) < Convert.ToDateTime(rec.EndTime)
            End If


            Dim txtEditExpense As TextBox = CType(e.Item.FindControl("txtExpense"), TextBox)
            Dim txtEditMileage As TextBox = CType(e.Item.FindControl("txtMileage"), TextBox)

            If txtEditExpense.Enabled Then
                rec.Expense = txtEditExpense.Text
                rec.Mileage = 0
                rec.MileageRate = 0
            Else
                rec.Mileage = txtEditMileage.Text
                rec.MileageRate = System.Configuration.ConfigurationManager.AppSettings("MileageRate")
                rec.Expense = rec.Mileage * rec.MileageRate
            End If

            Dim cont2 As Boolean = CheckDate(rec.RecDate)

            'Dim cont3 As Boolean = CheckTime(rec.RecDate, rec.StartTime, rec.EndTime, rec.ClaimID, CType(e.Item.FindControl("lstProvidedServices"), ListBox).SelectedItem.Text)
            'If cont3 Then
            If cont2 Then
                If cont Then
                    rec.ClaimID = Val(e.CommandArgument)
                    rec.PSID = Nothing
                    rec.ProvidedBy = CType(e.Item.FindControl("lstProvidedBy"), ListBox).SelectedValue
                    'rec.LocationID = Integer.Parse(IIf(CType(e.Item.FindControl("lstLocations"), ListBox).Enabled = False, CType(e.Item.FindControl("lstLocations"), ListBox).Items(0).Value, CType(e.Item.FindControl("lstLocations"), ListBox).SelectedValue))
                    'rec.SelectServiceRate()
                    Dim u As New Units()
                    'rec.Duration = u.CalculateUnitsUtilized(rec.StartTime, rec.EndTime, rec.ServiceID)
                    'rec.BilledAmt = rec.Rate * rec.Duration
                    rec.ClaimNote = CType(e.Item.FindControl("txtClaimNote"), TextBox).Text
                    rec.ClaimNote = Regex.Replace(rec.ClaimNote, "<(.|\n)*?>", "")
                    rec.ClaimNote = rec.ClaimNote.Replace(ControlChars.NewLine, "<br>")
                    rec.ClaimNote = Regex.Replace(rec.ClaimNote, "\n", "<br>")



                    rec.Signature = CType(e.Item.FindControl("txtSignature"), TextBox).Text

                    If rec.InsertUpdateTime() Then
                        CType(e.Item.FindControl("lblStatus"), Label).Text = "Service successfully updated"
                        LoadEnteredServices()
                        LoadProvidedBy()
                        LoadTime()
                        lstProvidedEvents.SelectedIndex = 0
                        lstProvidedEvents.Focus()
                        txtNotes.Text = ""
                        'LoadLocations(True)
                    Else
                        lblSubmitStatus.Text = "There was a problem updating this service. Service not updated"
                    End If
                Else
                    lblSubmitStatus.Text = "End Time cannot be earlier than Start Time"
                End If
            Else
                lblSubmitStatus.Text = "You do not have permission to edit the date to " & rec.RecDate
            End If
            'Else
            '   lblSubmitStatus.Text = "There was a problem updating this service. Time overlaps with a previously entered service."
            'End If

            dlstEnteredServices.EditItemIndex = -1
            LoadEnteredServices()
        End If

    End Sub
    Protected Sub dlstProvidedService_OnSelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        'Dim lstServices As ListBox = CType(sender, ListBox)
        'Dim r As DataListItem = CType(lstServices.NamingContainer, DataListItem)

        'Dim lstLoc As ListBox = CType(r.FindControl("lstLocations"), ListBox)
        'Dim hdnLocationID As HiddenField = CType(r.FindControl("hdnLocationID"), HiddenField)
        'Dim lstnProvidedBy As ListBox = CType(r.FindControl("lstProvidedBy"), ListBox)

        'If lstServiceTypes.SelectedIndex > 0 Then




        '    lstLoc.Items.Clear()
        '    If lstServices.SelectedIndex = 0 Then
        '        lstLoc.Items.Insert(0, "You must select a service")
        '        lstLoc.Enabled = False
        '    Else
        '        Dim l As New Location()
        '        Dim serviceid As Integer = 0
        '        Dim indid As Integer = 0
        '        Dim lst As New List(Of Location)
        '        If lstServiceTypes.SelectedValue = 3 Or lstServiceTypes.SelectedValue = 2 Then
        '            serviceid = lstServices.SelectedValue
        '        Else
        '            indid = lstIndividuals.SelectedValue
        '        End If
        '        lst = l.SelectLocations(serviceid, indid)

        '        lstLoc.DataSource = lst
        '        lstLoc.DataBind()

        '        If lst.Count = 1 Then
        '            lstLoc.Enabled = False
        '        Else
        '            lstLoc.Enabled = True
        '            lstLoc.Items.Insert(0, "Select Location")
        '        End If
        '    End If

        'End If


        'Else
        'lstLoc.SelectedIndex = 0
        'lstLoc.Enabled = False
        'End If

    End Sub
    Private Sub lstProvidedServices_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        If lstServiceTypes.SelectedIndex > 0 Then
            'LoadLocations()

            If lstProvidedEvents.SelectedIndex > 0 Then
                Dim service As New IndividualService
                Dim lstS As New List(Of IndividualService)
                service.LocServiceID = lstProvidedEvents.SelectedValue
                'service.IndID = lstIndividuals.SelectedValue
                'lstS = service.SelectIndividualService(lstProvidedEvents.SelectedValue, Date.Parse(txtDate.Text))


            End If


            If lstProvidedEvents.SelectedIndex > 0 Then
                Dim srv As New Services()
                Dim lst As New List(Of Services)
                lst = srv.SelectServices(, , lstProvidedEvents.SelectedValue)

                For Each s As Services In lst
                    If s.UnitType = Units.TypeOfUnit.Day.ToString() Then
                        txtStartHour.Text = "12"
                        txtStartHour.Enabled = False
                        txtStartMinute.Text = "00"
                        txtStartMinute.Enabled = False
                        lstStartAMPM.SelectedItem.Text = "AM"
                        lstStartAMPM.Enabled = False
                        txtEndHour.Text = "11"
                        txtEndHour.Enabled = False
                        txtEndMinute.Text = "59"
                        txtEndMinute.Enabled = False
                        lstEndAMPM.SelectedItem.Text = "PM"
                        lstEndAMPM.Enabled = False
                    Else
                        txtStartHour.Text = "12"
                        txtStartHour.Enabled = True
                        txtStartMinute.Text = "00"
                        txtStartMinute.Enabled = True
                        txtEndHour.Text = "12"
                        txtEndHour.Enabled = True
                        txtEndMinute.Text = "00"
                        txtEndMinute.Enabled = True
                        'lstEndAMPM.SelectedItem.Text = "AM"

                        lstEndAMPM.Enabled = True
                        LoadTime()

                    End If
                    'hdnRate.Value = s.Rate
                Next
            End If
        Else
            'lstLocations.SelectedIndex = 0
            'lstLocations.Enabled = False
        End If
        lblSubmitStatus.Text = ""
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
        'lstProvidedServices.Focus()
        lstProvidedBy.Focus()
    End Sub

    Private Sub btnClearForm_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnClearForm.Click

        Response.Redirect("TimeExpenseEntry.aspx")


    End Sub


    Private Sub lstEndAMPM_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstEndAMPM.SelectedIndexChanged
        lblSubmitStatus.Text = ""
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
        If lstProvidedBy.SelectedIndex = 0 Then
            lstProvidedBy.Focus()
        Else
            txtStartHour.Focus()
        End If
    End Sub

    Private Sub lstStartAMPM_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstStartAMPM.SelectedIndexChanged
        lblSubmitStatus.Text = ""
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
        If lstProvidedBy.SelectedIndex = 0 Then
            lstProvidedBy.Focus()
        Else
            txtStartHour.Focus()
        End If
    End Sub

    Private Sub lstProvidedBy_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstProvidedBy.SelectedIndexChanged
        lblSubmitStatus.Text = ""
        lblApproveStatus.Text = ""
        lblVoidStatus.Text = ""
        If lstProvidedBy.SelectedIndex > 0 Then
            txtStartHour.Focus()
        Else
            lstProvidedBy.Focus()
        End If
    End Sub

    Private Sub dlstEnteredServices_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles dlstEnteredServices.ItemDataBound
        Dim lblTotalExpense As Label = CType(e.Item.FindControl("lblTotalExpense"), Label)
        Dim lblTotalHours As Label = CType(e.Item.FindControl("lblTotalHours"), Label)
        Dim lblTotalMileage As Label = CType(e.Item.FindControl("lblTotalMileage"), Label)

        If lblTotalExpense IsNot Nothing Then
            lblTotalExpense.Text = String.Format("${0}", totalExpense)
        End If

        If lblTotalExpense IsNot Nothing Then
            lblTotalHours.Text = Math.Round(totalHours, 2)
        End If

        If lblTotalMileage IsNot Nothing Then
            lblTotalMileage.Text = Math.Round(totalMileage, 1)
        End If

        If e.Item.ItemType = ListItemType.EditItem Then
            Dim lstnStartAMPM As ListBox = CType(e.Item.FindControl("lstStartAMPM"), ListBox)
            Dim lstnEndAMPM As ListBox = CType(e.Item.FindControl("lstEndAMPM"), ListBox)
            Dim hdnStartAMPM As HiddenField = CType(e.Item.FindControl("hdnStartAMPM"), HiddenField)
            Dim hdnEndAMPM As HiddenField = CType(e.Item.FindControl("hdnEndAMPM"), HiddenField)
            Dim txtStartHour As TextBox = CType(e.Item.FindControl("txtStartHour"), TextBox)
            Dim txtStartMinute As TextBox = CType(e.Item.FindControl("txtStartMinute"), TextBox)
            Dim txtEndHour As TextBox = CType(e.Item.FindControl("txtEndHour"), TextBox)
            Dim txtEndMinute As TextBox = CType(e.Item.FindControl("txtEndMinute"), TextBox)
           
            lstnStartAMPM.Items.Clear()
            lstnStartAMPM.Items.Insert(0, "PM")
            lstnStartAMPM.Items.Insert(0, "AM")
            lstnStartAMPM.SelectedValue = hdnStartAMPM.Value
            lstnEndAMPM.Items.Clear()
            lstnEndAMPM.Items.Insert(0, "PM")
            lstnEndAMPM.Items.Insert(0, "AM")
            lstnEndAMPM.SelectedValue = hdnEndAMPM.Value
            

            Dim lstProvidedEvents As ListBox = CType(e.Item.FindControl("lstProvidedEvents"), ListBox)
            Dim hdnProvidedServiceID As HiddenField = CType(e.Item.FindControl("hdnProvidedServiceID"), HiddenField)
            Dim srv As New Events 'SelectServices
            lstProvidedEvents.Items.Clear()

            Dim liveEvents As List(Of LiveEvents) = New LiveEvents().SelectLiveEvents()
            Dim editedEvents As List(Of Events) = srv.SelectEvents(,, CType(e.Item.DataItem, Claim).InternalEventID)

            For Each liveEvent In liveEvents
                If Not editedEvents.Any(Function(editedEvent) editedEvent.InternalEventID = liveEvent.InternalEventID) Then
                    editedEvents.Add(liveEvent)
                End If
            Next

            'Dim authorized As List(Of Services) = srv.SelectAuthorizedServices(lstIndividuals.SelectedValue)
            lstProvidedEvents.DataSource = editedEvents
            lstProvidedEvents.DataBind()

            'stnProvidedServices.DataSource = srv.SelectServices(lstServiceTypes.SelectedValue)
            'lstnProvidedServices.DataBind()
            'lstnProvidedServices.Items.Insert(0, "Select Provided Services")
            lstProvidedEvents.SelectedValue = CType(e.Item.DataItem, Claim).InternalEventID
            Dim txtExpense As TextBox = CType(e.Item.FindControl("txtExpense"), TextBox)
            Dim txtMileage As TextBox = CType(e.Item.FindControl("txtMileage"), TextBox)
            Dim trExpense As HtmlTableRow = CType(e.Item.FindControl("trExpense"), HtmlTableRow)

            If txtExpense.Text = "0" Or txtMileage.Text = "0" Or txtExpense.Text = "" Or txtMileage.Text = "" Then
                trExpense.Visible = False
                CType(e.Item.FindControl("txtExpense"), TextBox).Enabled = False
                CType(e.Item.FindControl("lstExpenseType"), DropDownList).Enabled = False
                CType(e.Item.FindControl("txtMileage"), TextBox).Enabled = False

                txtStartHour.Enabled = True
                txtStartMinute.Enabled = True
                lstStartAMPM.Enabled = True
                txtEndHour.Enabled = True
                txtEndMinute.Enabled = True
                lstnEndAMPM.Enabled = True
                lstnStartAMPM.Enabled = True
            Else
                trExpense.Visible = True

                CType(e.Item.FindControl("txtStartHour"), TextBox).Enabled = False
                CType(e.Item.FindControl("txtEndHour"), TextBox).Enabled = False
                CType(e.Item.FindControl("txtStartMinute"), TextBox).Enabled = False
                CType(e.Item.FindControl("txtEndMinute"), TextBox).Enabled = False
                CType(e.Item.FindControl("lstStartAMPM"), ListBox).Enabled = False
                CType(e.Item.FindControl("lstEndAMPM"), ListBox).Enabled = False

                ' Ensure the expense types are populated
                Dim lstEditedExpenseType As DropDownList = CType(e.Item.FindControl("lstExpenseType"), DropDownList)
                Dim expenseTypeSelection As New ExpenseType
                Dim expenseTypes As List(Of ExpenseType) = expenseTypeSelection.SelectAllExpenseTypes()
                lstEditedExpenseType.Items.Clear()
                lstEditedExpenseType.DataSource = expenseTypes
                lstEditedExpenseType.DataValueField = "ExpenseTypeID"
                lstEditedExpenseType.DataTextField = "Description"
                lstEditedExpenseType.DataBind()

                Dim sourceClaimData As Claim = CType(dlstEnteredServices.DataSource(e.Item.ItemIndex), Claim)
                If sourceClaimData.ExpenseTypeID IsNot Nothing And sourceClaimData.ExpenseTypeID >= 0 Then
                    lstEditedExpenseType.SelectedValue = sourceClaimData.ExpenseTypeID
                    lstEditedExpenseType.Items.Insert(0, New ListItem("Select Expense Type", -1))
                Else
                    lstEditedExpenseType.Items.Insert(0, New ListItem("Invalid Expense Type", -1))
                End If
                

            End If
            

            'Dim d As DateTime = DateTime.Parse(CType(e.Item.FindControl("txtServiceDate"), TextBox).Text & " " & CType(e.Item.FindControl("txtStartHour"), TextBox).Text & ":" & CType(e.Item.FindControl("txtStartMinute"), TextBox).Text & " " & CType(e.Item.FindControl("lstStartAMPM"), ListBox).SelectedItem.Text)
            'Dim f As DateTime = DateTime.Parse(CType(e.Item.FindControl("txtServiceDate"), TextBox).Text & " " & CType(e.Item.FindControl("txtEndHour"), TextBox).Text & ":" & CType(e.Item.FindControl("txtEndMinute"), TextBox).Text & " " & CType(e.Item.FindControl("lstEndAMPM"), ListBox).SelectedItem.Text)

            'If d = f Then
            '    CType(e.Item.FindControl("txtStartHour"), TextBox).Enabled = False
            '    CType(e.Item.FindControl("txtEndHour"), TextBox).Enabled = False
            '    CType(e.Item.FindControl("txtStartMinute"), TextBox).Enabled = False
            '    CType(e.Item.FindControl("txtEndMinute"), TextBox).Enabled = False
            '    CType(e.Item.FindControl("lstStartAMPM"), ListBox).Enabled = False
            '    CType(e.Item.FindControl("lstEndAMPM"), ListBox).Enabled = False

            '    ' Ensure the expense types are populated
            '    Dim lstEditedExpenseType As DropDownList = CType(e.Item.FindControl("lstExpenseType"), DropDownList)
            '    Dim expenseTypeSelection As New ExpenseType
            '    Dim expenseTypes As List(Of ExpenseType) = expenseTypeSelection.SelectAllExpenseTypes()
            '    lstEditedExpenseType.Items.Clear()
            '    lstEditedExpenseType.DataSource = expenseTypes
            '    lstEditedExpenseType.DataValueField = "ExpenseTypeID"
            '    lstEditedExpenseType.DataTextField = "Description"
            '    lstEditedExpenseType.DataBind()

            '    Dim sourceClaimData As Claim = CType(dlstEnteredServices.DataSource(e.Item.ItemIndex), Claim)
            '    If sourceClaimData.ExpenseTypeID IsNot Nothing And sourceClaimData.ExpenseTypeID >= 0 Then
            '        lstEditedExpenseType.SelectedValue = sourceClaimData.ExpenseTypeID
            '        lstEditedExpenseType.Items.Insert(0, New ListItem("Select Expense Type", -1))
            '    Else
            '        lstEditedExpenseType.Items.Insert(0, New ListItem("Invalid Expense Type", -1))
            '    End If
            'Else

            '    CType(e.Item.FindControl("txtExpense"), TextBox).Enabled = False
            '    CType(e.Item.FindControl("lstExpenseType"), DropDownList).Enabled = False
            '    CType(e.Item.FindControl("txtMileage"), TextBox).Enabled = False
                
            'End If

            Dim serviceid As Integer = 0
            Dim indid As Integer = 0



            Dim txtClaimNote As TextBox = CType(e.Item.FindControl("txtClaimNote"), TextBox)


            If txtClaimNote.Text <> "" Then
                txtClaimNote.Text = txtClaimNote.Text.Replace("<br>", vbNewLine)
            End If


            Dim lstnProvidedBy As ListBox = CType(e.Item.FindControl("lstProvidedBy"), ListBox)
            Dim hdnProvidedByID As HiddenField = CType(e.Item.FindControl("hdnProvidedByID"), HiddenField)
            Dim u As New User 'SelectServices
            u.Active = True
            u.LockedOut = False
            lstnProvidedBy.Items.Clear()
            lstnProvidedBy.DataSource = u.SelectUsers()
            lstnProvidedBy.DataBind()
            lstnProvidedBy.Items.Insert(0, "Select Provided By")
            lstnProvidedBy.SelectedValue = hdnProvidedByID.Value
            If Session("RoleID") = 4 Or Session("RoleID") = 9 Or Session("RoleID") = 10 Or Session("RoleName").ToString().Contains("Staff") Then
                lstnProvidedBy.Enabled = False
            End If
        ElseIf e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
            Dim hdnApproved As HiddenField = CType(e.Item.FindControl("hdnApproved"), HiddenField)
            Dim hdnTitle As HiddenField = CType(e.Item.FindControl("hdnTitle"), HiddenField)
            Dim btnEdit As LinkButton = CType(e.Item.FindControl("btnEdit"), LinkButton)
            Dim btnRemove As LinkButton = CType(e.Item.FindControl("btnRemove"), LinkButton)
            Dim lblTitle As Label = CType(e.Item.FindControl("lblTitle"), Label)

            If hdnTitle.Value = "0" Then
                lblTitle.Text = ""
            ElseIf hdnTitle.Value = "1" Then
                lblTitle.Text = "Habilitation Specialist"
            ElseIf hdnTitle.Value = "2" Then
                lblTitle.Text = "Specialized Duties"
            ElseIf hdnTitle.Value = "3" Then
                lblTitle.Text = "Manager"
            End If

            If hdnApproved.Value = True Then
                btnEdit.Visible = False
                btnRemove.Visible = False
            Else
                btnEdit.Visible = True
                btnRemove.Visible = True
            End If

        End If
    End Sub

    Private Function CheckTime() As Boolean

        Dim srv As New Services 'SelectServices
        Dim IndSrv As New IndividualService

        Dim returnValue As Boolean = True

        Dim cb As New Claim()
        Dim clst As New List(Of Claim)
        cb.BID = SelectBID()
        'cb.IndID = lstIndividuals.SelectedValue
        cb.RecDate = txtDate.Text
        cb.RecDateEnd = txtDate.Text
        'cb.ServiceTypeID = lstServiceTypes.SelectedValue
        clst = cb.SelectClaims()

        ' Dim authorized As List(Of Services) = srv.SelectAuthorizedServices(lstIndividuals.SelectedValue)



        If clst.Count = 0 Then
            'returnValue = True
        End If

        'For Each c In clst
        '    If c.StartTime < DateTime.Parse(txtDate.Text & " " & txtEndHour.Text & ":" & txtEndMinute.Text & " " & lstEndAMPM.SelectedItem.Text) And c.EndTime > DateTime.Parse(txtDate.Text & " " & txtStartHour.Text & ":" & txtStartMinute.Text & " " & lstStartAMPM.SelectedItem.Text) Then
        '        If c.WCode.Contains("7095") Or c.WCode.Contains("7061") Or hdnWCode.Value.Contains("7095") Or hdnWCode.Value.Contains("7061") Or _
        '            c.WCode.Contains("2019") Or hdnWCode.Value.Contains("2019") Or _
        '            ((c.WCode.Contains("7250") And c.ProvidedServiceName.Contains("Alleg")) Or (hdnWCode.Value.Contains("7250") And lstProvidedServices.SelectedItem.Text.Contains("Alleg"))) Or _
        '            ((c.WCode.Contains("7290") And c.ProvidedServiceName.Contains("Alleg")) Or (hdnWCode.Value.Contains("7290") And lstProvidedServices.SelectedItem.Text.Contains("Alleg"))) Or _
        '            ((c.WCode.Contains("7290") And c.ProvidedServiceName.Contains("Wash")) Or (hdnWCode.Value.Contains("7290") And lstProvidedServices.SelectedItem.Text.Contains("Wash"))) Or _
        '            ((c.WCode.Contains("8002") And c.ProvidedServiceName.Contains("Alleg")) Or (hdnWCode.Value.Contains("8002") And lstProvidedServices.SelectedItem.Text.Contains("Alleg"))) Or _
        '            ((c.WCode.Contains("7258") And c.ProvidedServiceName.Contains("Beaver")) Or (hdnWCode.Value.Contains("7258") And lstProvidedServices.SelectedItem.Text.Contains("Beaver"))) Or _
        '            ((c.WCode.Contains("7265") And c.ProvidedServiceName.Contains("Alleg")) Or (hdnWCode.Value.Contains("7265") And lstProvidedServices.SelectedItem.Text.Contains("Alleg"))) Then

        '            returnValue = True
        '        Else
        '            returnValue = False
        '            lblSubmitStatus.Text = "There was a problem adding this service. Service not added. Time overlaps with a previously entered service."
        '            Exit For
        '        End If
        '    Else
        '        If Convert.ToDateTime(txtDate.Text).Date > Date.Now.Date Then
        '            returnValue = False
        '            If lblSubmitStatus.Text <> "" Then

        '            Else
        '                lblSubmitStatus.Text = "Invalid Service Date - No prospective date entry."
        '            End If
        '        Else
        '            returnValue = True
        '            If lblSubmitStatus.Text <> "" Then

        '            Else
        '                lblSubmitStatus.Text = ""
        '            End If
        '        End If


        '    End If
        'Next

        Return returnValue
    End Function
    Private Function CheckTime(ByVal RecDate As String, ByVal StartTime As String, ByVal EndTime As String, ByVal ClaimID As Integer, ByVal ServiceDesc As String) As Boolean

        Dim srv As New Services 'SelectServices
        Dim IndSrv As New IndividualService

        Dim returnValue As Boolean = True

        Dim cb As New Claim()
        Dim clst As New List(Of Claim)
        cb.BID = SelectBID()
        'cb.IndID = lstIndividuals.SelectedValue
        cb.RecDate = RecDate
        cb.RecDateEnd = RecDate
        cb.ServiceTypeID = lstServiceTypes.SelectedValue

        clst = cb.SelectClaims()

        'Dim authorized As List(Of Services) = srv.SelectAuthorizedServices(lstIndividuals.SelectedValue)

        'For Each a In authorized
        '    If a.Description = ServiceDesc Then
        '        'hdnWCode.Value = a.Wcode
        '    End If
        'Next

        If clst.Count = 0 Then
            returnValue = True
        End If


        'For Each c In clst
        '    If c.ClaimID <> ClaimID Then
        '        If (Convert.ToDateTime(c.StartTime) > Convert.ToDateTime(StartTime) And Convert.ToDateTime(c.StartTime) < Convert.ToDateTime(EndTime)) Or (Convert.ToDateTime(c.EndTime) > Convert.ToDateTime(StartTime) And Convert.ToDateTime(c.EndTime) < Convert.ToDateTime(EndTime)) Then
        '            If c.WCode.Contains("7095") Or c.WCode.Contains("7061") Or hdnWCode.Value.Contains("7095") Or hdnWCode.Value.Contains("7061") Or _
        '                c.WCode.Contains("2019") Or hdnWCode.Value.Contains("2019") Or _
        '                ((c.WCode.Contains("7250") And c.ProvidedServiceName.Contains("Alleg")) Or (hdnWCode.Value.Contains("7250") And ServiceDesc.ToString.Contains("Alleg"))) Or _
        '                ((c.WCode.Contains("7290") And c.ProvidedServiceName.Contains("Alleg")) Or (hdnWCode.Value.Contains("7290") And ServiceDesc.ToString.Contains("Alleg"))) Or _
        '                ((c.WCode.Contains("7290") And c.ProvidedServiceName.Contains("Wash")) Or (hdnWCode.Value.Contains("7290") And ServiceDesc.ToString.Contains("Wash"))) Or _
        '                ((c.WCode.Contains("8002") And c.ProvidedServiceName.Contains("Alleg")) Or (hdnWCode.Value.Contains("8002") And ServiceDesc.ToString.Contains("Alleg"))) Or _
        '                ((c.WCode.Contains("7258") And c.ProvidedServiceName.Contains("Beaver")) Or (hdnWCode.Value.Contains("7258") And ServiceDesc.ToString.Contains("Beaver"))) Or _
        '                ((c.WCode.Contains("7265") And c.ProvidedServiceName.Contains("Alleg")) Or (hdnWCode.Value.Contains("7265") And ServiceDesc.ToString.Contains("Alleg"))) Then

        '                returnValue = True
        '            Else
        '                returnValue = False
        '                lblSubmitStatus.Text = "There was a problem updating this service. Service not added. Time overlaps with a previously entered service."
        '                'Exit For
        '            End If
        '        Else
        '            returnValue = True
        '            If lblSubmitStatus.Text <> "" Then

        '            Else
        '                lblSubmitStatus.Text = ""
        '            End If

        '        End If
        '    Else
        '        returnValue = True
        '    End If
        'Next

        Return returnValue
    End Function
    Protected Function SelectNewBID(ByVal dates As DateTime) As Integer
        Dim mth As String = dates.Month
        Dim yr As String = dates.Year
        Dim bm As New BillingMonths
        Dim lst As List(Of BillingMonths) = bm.SelectBillingMonths(, mth, yr)
        SelectNewBID = 0
        For Each b As BillingMonths In lst
            SelectNewBID = b.BID
        Next
        Return SelectNewBID
    End Function

    Private Function CheckDate(ByVal datecheck As String) As Boolean
        Dim lst As New List(Of AssignedPermission.PermissionType)
        lst = CType(Session("Permissions"), List(Of AssignedPermission.PermissionType))

        If lst.Contains(AssignedPermission.PermissionType.EnterCSOutsideRange) Then
            If Convert.ToDateTime(datecheck).Date <= Date.Now.Date Then
                Return True
            Else
                Return False
            End If
        ElseIf lst.Contains(AssignedPermission.PermissionType.EnterCSThirtyDays) Then
            If Convert.ToDateTime(datecheck).Date >= Date.Now.AddDays(-30).Date And Convert.ToDateTime(datecheck).Date <= Date.Now.Date Then
                Return True
            Else
                Return False
            End If
        Else
            If Convert.ToDateTime(datecheck).Date >= Date.Now.AddDays(-10).Date And Convert.ToDateTime(datecheck).Date <= Date.Now.Date Then
                Return True
            Else
                Return False
            End If
        End If
    End Function

    Protected Sub txtMileage_TextChanged(sender As Object, e As EventArgs) Handles txtMileage.TextChanged
        Dim mileagerate As String = System.Configuration.ConfigurationManager.AppSettings("MileageRate")

        Dim total As Decimal = 0
        If txtExpense.Enabled Then
            total += Convert.ToDecimal(txtExpense.Text)
        End If

        If txtMileage.Enabled Then
            Dim mileageInput As Decimal

            If Decimal.TryParse(txtMileage.Text, mileageInput) Then
                total += Convert.ToDecimal(mileagerate) * mileageInput
                lblMileageTotal.Text = String.Format("${0}", Convert.ToString(total))
            Else
                lblMileageTotal.Text = "$0"
            End If

            lblTotal.Text = Convert.ToString(total)
        End If
    End Sub

    

End Class

Open in new window

Too much code to look in, save event btnSave_Click is same for Save and Edit or for Edit is there any other event
I apologize for not keeping upon this topic. I became overwhelmed at work and forgot all about it. Thank you all for your help.