<% ' HouseholderNameController - CRUD controller for HouseholderNames ' NorthTerritory app ' ' Dependencies (all included via HouseholdController which loads first): ' - app/models/POBO_HouseholderNames.asp ' - app/models/HouseholderNamesRepository.asp ' - app/models/POBO_Households.asp ' - app/models/HouseholdsRepository.asp Class HouseholderNameController_Class Private m_useLayout Private m_title ' Public properties for views Public householderNames ' LinkedList for Index Public householderName ' Single POBO for Show/Edit Public household ' Parent household Public householdsList ' For dropdown ' Pagination properties Public currentPage Public pageCount Public recordCount Public perPage Public searchTerm Public filterHouseholdId Private Sub Class_Initialize() m_useLayout = True m_title = "Householder Names" currentPage = 1 pageCount = 0 recordCount = 0 perPage = 25 searchTerm = "" filterHouseholdId = 0 End Sub Public Property Get useLayout useLayout = m_useLayout End Property Public Property Let useLayout(v) m_useLayout = v End Property Public Property Get Title Title = m_title End Property Public Property Let Title(v) m_title = v End Property '------------------------------------------------------------------------------------------------------------------- ' Index - List all householder names with pagination, search, and household filter '------------------------------------------------------------------------------------------------------------------- Public Sub Index() ' Get pagination params If Request.QueryString("page") <> "" And IsNumeric(Request.QueryString("page")) Then currentPage = CInt(Request.QueryString("page")) If currentPage < 1 Then currentPage = 1 End If ' Get search param searchTerm = Trim(Request.QueryString("q") & "") ' Get household filter If Request.QueryString("household") <> "" And IsNumeric(Request.QueryString("household")) Then filterHouseholdId = CLng(Request.QueryString("household")) End If ' Fetch householder names with pagination If searchTerm <> "" Then ' Search in Name column Set householderNames = HouseholderNamesRepository.SearchTablePaged( _ Array("Name"), _ searchTerm, _ Empty, _ perPage, _ currentPage, _ pageCount, _ recordCount _ ) ElseIf filterHouseholdId > 0 Then ' Filter by household Set householderNames = HouseholderNamesRepository.FindPaged( _ Array("HouseholdId", filterHouseholdId), _ Empty, _ perPage, _ currentPage, _ pageCount, _ recordCount _ ) ' Load parent household for context On Error Resume Next Set household = HouseholdsRepository.FindByID(filterHouseholdId) On Error GoTo 0 Else Set householderNames = HouseholderNamesRepository.FindPaged( _ Empty, _ Empty, _ perPage, _ currentPage, _ pageCount, _ recordCount _ ) End If %> <% End Sub '------------------------------------------------------------------------------------------------------------------- ' Show - Display a single householder name '------------------------------------------------------------------------------------------------------------------- Public Sub Show(id) On Error Resume Next Set householderName = HouseholderNamesRepository.FindByID(id) If Err.Number <> 0 Or householderName Is Nothing Then On Error GoTo 0 Flash().Error = "Householder name not found." Response.Redirect "/householder-names" Exit Sub End If On Error GoTo 0 ' Load parent household On Error Resume Next Set household = HouseholdsRepository.FindByID(householderName.HouseholdId) On Error GoTo 0 %> <% End Sub '------------------------------------------------------------------------------------------------------------------- ' Create - Display form for new householder name '------------------------------------------------------------------------------------------------------------------- Public Sub Create() Set householderName = New POBO_HouseholderNames householderName.Created = Now() householderName.LetterReturned = 0 ' Pre-fill household if passed in query string If Request.QueryString("household") <> "" And IsNumeric(Request.QueryString("household")) Then householderName.HouseholdId = CLng(Request.QueryString("household")) ' Load parent household for context On Error Resume Next Set household = HouseholdsRepository.FindByID(householderName.HouseholdId) On Error GoTo 0 End If %> <% End Sub '------------------------------------------------------------------------------------------------------------------- ' Store - Save new householder name '------------------------------------------------------------------------------------------------------------------- Public Sub Store() Set householderName = New POBO_HouseholderNames householderName.Name = Trim(Request.Form("Name")) householderName.HouseholdId = Request.Form("HouseholdId") householderName.LetterReturned = IIf(Request.Form("LetterReturned") = "1", 1, 0) householderName.Created = Now() If Request.Form("ReturnDate") <> "" Then On Error Resume Next householderName.ReturnDate = CDate(Request.Form("ReturnDate")) On Error GoTo 0 End If ' Validation If householderName.Name = "" Then Flash().Error = "Name is required." Response.Redirect "/householder-names/new?household=" & householderName.HouseholdId Exit Sub End If If Not IsNumeric(householderName.HouseholdId) Or CLng(householderName.HouseholdId) < 1 Then Flash().Error = "Please select a household." Response.Redirect "/householder-names/new" Exit Sub End If HouseholderNamesRepository.AddNew householderName Flash().Success = "Householder name created successfully." Response.Redirect "/householder-names/" & householderName.Id End Sub '------------------------------------------------------------------------------------------------------------------- ' Edit - Display form to edit householder name '------------------------------------------------------------------------------------------------------------------- Public Sub Edit(id) On Error Resume Next Set householderName = HouseholderNamesRepository.FindByID(id) If Err.Number <> 0 Or householderName Is Nothing Then On Error GoTo 0 Flash().Error = "Householder name not found." Response.Redirect "/householder-names" Exit Sub End If On Error GoTo 0 ' Load parent household for context On Error Resume Next Set household = HouseholdsRepository.FindByID(householderName.HouseholdId) On Error GoTo 0 %> <% End Sub '------------------------------------------------------------------------------------------------------------------- ' Update - Save changes to householder name '------------------------------------------------------------------------------------------------------------------- Public Sub Update(id) On Error Resume Next Set householderName = HouseholderNamesRepository.FindByID(id) If Err.Number <> 0 Or householderName Is Nothing Then On Error GoTo 0 Flash().Error = "Householder name not found." Response.Redirect "/householder-names" Exit Sub End If On Error GoTo 0 householderName.Name = Trim(Request.Form("Name")) householderName.LetterReturned = IIf(Request.Form("LetterReturned") = "1", 1, 0) If Request.Form("ReturnDate") <> "" Then On Error Resume Next householderName.ReturnDate = CDate(Request.Form("ReturnDate")) On Error GoTo 0 Else householderName.ReturnDate = #1/1/1970# End If ' Validation If householderName.Name = "" Then Flash().Error = "Name is required." Response.Redirect "/householder-names/" & id & "/edit" Exit Sub End If HouseholderNamesRepository.Update householderName Flash().Success = "Householder name updated successfully." Response.Redirect "/householder-names/" & id End Sub '------------------------------------------------------------------------------------------------------------------- ' Delete - Remove a householder name '------------------------------------------------------------------------------------------------------------------- Public Sub Delete(id) On Error Resume Next Set householderName = HouseholderNamesRepository.FindByID(id) If Err.Number <> 0 Or householderName Is Nothing Then On Error GoTo 0 Flash().Error = "Householder name not found." Response.Redirect "/householder-names" Exit Sub End If On Error GoTo 0 Dim householdId householdId = householderName.HouseholdId HouseholderNamesRepository.Delete id Flash().Success = "Householder name deleted successfully." Response.Redirect "/householder-names?household=" & householdId End Sub End Class ' Singleton instance Dim HouseholderNameController_Class__Singleton Function HouseholderNameController() If IsEmpty(HouseholderNameController_Class__Singleton) Then Set HouseholderNameController_Class__Singleton = New HouseholderNameController_Class End If Set HouseholderNameController = HouseholderNameController_Class__Singleton End Function %>