<% ' Auto-generated Repository for table [OrderDetails] ' Generated on 7/28/2026 2:53:42 PM ' Generator: GenerateRepo.vbs v1.0 ' ' Dependencies: ' - core/lib.DAL.asp (DAL singleton for database access) ' - core/lib.AutoMapper.asp (Automapper for object mapping) ' - core/lib.Collections.asp (LinkedList_Class) ' - core/lib.helpers.asp (KVUnzip, BuildOrderBy, QI, Destroy) Class OrderDetailsRepository_Class Public Function FindByID(id) Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleColorCodingBy], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SubmittedAt] FROM [OrderDetails] WHERE [OrderDetailID] = ?" Dim rs : Set rs = DAL.Query(sql, Array(id)) If rs.EOF Then Err.Raise 1, "OrderDetailsRepository_Class", RecordNotFoundException("OrderDetailID", id) Else Set FindByID = Automapper.AutoMap(rs, "POBO_OrderDetails") End If Destroy rs End Function Public Function GetAll(orderBy) Set GetAll = Find(Empty, orderBy) End Function Public Function Find(where_kvarray, order_string_or_array) Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleColorCodingBy], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SubmittedAt] FROM [OrderDetails]" Dim where_keys, where_values, i If Not IsEmpty(where_kvarray) Then KVUnzip where_kvarray, where_keys, where_values If Not IsEmpty(where_keys) Then sql = sql & " WHERE " For i = 0 To UBound(where_keys) If i > 0 Then sql = sql & " AND " sql = sql & " " & QI(where_keys(i)) & " = ?" Next End If End If sql = sql & BuildOrderBy(order_string_or_array, "[OrderDetailID]") Dim rs : Set rs = DAL.Query(sql, where_values) Dim list : Set list = new LinkedList_Class Do Until rs.EOF list.Push Automapper.AutoMap(rs, "POBO_OrderDetails") rs.MoveNext Loop Set Find = list Destroy rs End Function Public Function FindPaged(where_kvarray, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count) Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleColorCodingBy], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SubmittedAt] FROM [OrderDetails]" Dim where_keys, where_values, i If Not IsEmpty(where_kvarray) Then KVUnzip where_kvarray, where_keys, where_values If Not IsEmpty(where_keys) Then sql = sql & " WHERE " For i = 0 To UBound(where_keys) If i > 0 Then sql = sql & " AND " sql = sql & " " & QI(where_keys(i)) & " = ?" Next End If End If sql = sql & BuildOrderBy(order_string_or_array, "[OrderDetailID]") Dim rs : Set rs = DAL.PagedQuery(sql, where_values, per_page, page_num) If Not rs.EOF Then rs.PageSize = per_page rs.AbsolutePage = page_num page_count = rs.PageCount record_count = rs.RecordCount End If Set FindPaged = PagedList(rs, per_page) Destroy rs End Function Public Function SearchTablePaged(columns_array, search_value, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count) Dim sql : sql = "Select [BlueDeliveryDate], [BlueEnvelopeProvider], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderDetailID], [OrderID], [Phone], [PurpleColorCodingBy], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SubmittedAt] FROM [OrderDetails]" Dim i, params() If IsArray(columns_array) And UBound(columns_array) >= 0 Then sql = sql & " WHERE " ReDim params(UBound(columns_array)) For i = 0 To UBound(columns_array) If i > 0 Then sql = sql & " OR " sql = sql & " " & QI(columns_array(i)) & " LIKE ?" params(i) = "%" & search_value & "%" Next End If sql = sql & BuildOrderBy(order_string_or_array, "[OrderDetailID]") Dim rs : Set rs = DAL.PagedQuery(sql, params, per_page, page_num) If Not rs.EOF Then rs.PageSize = per_page rs.AbsolutePage = page_num page_count = rs.PageCount record_count = rs.RecordCount End If Set SearchTablePaged = PagedList(rs, per_page) Destroy rs End Function Private Function PagedList(rs, per_page) Dim list : Set list = new LinkedList_Class Dim x : x = 0 Do While (per_page <= 0 Or x < per_page) And Not rs.EOF list.Push Automapper.AutoMap(rs, "POBO_OrderDetails") x = x + 1 rs.MoveNext Loop Set PagedList = list End Function Public Sub AddNew(ByRef model) Dim sql : sql = "INSERT INTO [OrderDetails] ([BlueDeliveryDate], [BlueEnvelopeProvider], [BluePermitCity], [BluePermitClass], [BluePermitNumber], [BluePrintPermit], [BluePrintReturnAddress], [BlueWantsQuote], [ContactName], [FutureVoterStickerRolls], [IVotedStickerRolls], [MailingHasNonprofitStatus], [MailingPickupDate], [MailingPostageOption], [MailingWantsService], [MailingWantsSorting], [Municipality], [OrderID], [Phone], [PurpleColorCodingBy], [PurpleDeliveryDate], [PurpleEnvelopeProvider], [PurpleEnvelopeStock], [PurpleExtraEnvelopeQty], [PurplePrecinctCount], [PurplePrintOption], [PurplePrintStyle], [PurpleTrackMIBallot], [PurpleWantsBlueEnvelopes], [PurpleWantsQuote], [SecrecySleevesQty], [SubmittedAt]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" DAL.Execute sql, Array(model.BlueDeliveryDate, model.BlueEnvelopeProvider, model.BluePermitCity, model.BluePermitClass, model.BluePermitNumber, model.BluePrintPermit, model.BluePrintReturnAddress, model.BlueWantsQuote, model.ContactName, model.FutureVoterStickerRolls, model.IVotedStickerRolls, model.MailingHasNonprofitStatus, model.MailingPickupDate, model.MailingPostageOption, model.MailingWantsService, model.MailingWantsSorting, model.Municipality, model.OrderID, model.Phone, model.PurpleColorCodingBy, model.PurpleDeliveryDate, model.PurpleEnvelopeProvider, model.PurpleEnvelopeStock, model.PurpleExtraEnvelopeQty, model.PurplePrecinctCount, model.PurplePrintOption, model.PurplePrintStyle, model.PurpleTrackMIBallot, model.PurpleWantsBlueEnvelopes, model.PurpleWantsQuote, model.SecrecySleevesQty, model.SubmittedAt) ' Retrieve the newly inserted ID On Error Resume Next Dim rsId : Set rsId = DAL.Query("SELECT @@IDENTITY AS NewID", Empty) If Err.Number <> 0 Then ' Fallback for Access databases Err.Clear Set rsId = DAL.Query("SELECT TOP 1 [OrderDetailID] FROM [OrderDetails] ORDER BY [OrderDetailID] DESC", Empty) End If On Error GoTo 0 If Not rsId.EOF Then If Not IsNull(rsId(0)) Then model.OrderDetailID = rsId(0) End If Destroy rsId End Sub Public Sub Update(model) Dim sql : sql = "UPDATE [OrderDetails] SET [BlueDeliveryDate] = ?, [BlueEnvelopeProvider] = ?, [BluePermitCity] = ?, [BluePermitClass] = ?, [BluePermitNumber] = ?, [BluePrintPermit] = ?, [BluePrintReturnAddress] = ?, [BlueWantsQuote] = ?, [ContactName] = ?, [FutureVoterStickerRolls] = ?, [IVotedStickerRolls] = ?, [MailingHasNonprofitStatus] = ?, [MailingPickupDate] = ?, [MailingPostageOption] = ?, [MailingWantsService] = ?, [MailingWantsSorting] = ?, [Municipality] = ?, [OrderID] = ?, [Phone] = ?, [PurpleColorCodingBy] = ?, [PurpleDeliveryDate] = ?, [PurpleEnvelopeProvider] = ?, [PurpleEnvelopeStock] = ?, [PurpleExtraEnvelopeQty] = ?, [PurplePrecinctCount] = ?, [PurplePrintOption] = ?, [PurplePrintStyle] = ?, [PurpleTrackMIBallot] = ?, [PurpleWantsBlueEnvelopes] = ?, [PurpleWantsQuote] = ?, [SecrecySleevesQty] = ?, [SubmittedAt] = ? WHERE [OrderDetailID] = ?" DAL.Execute sql, Array(model.BlueDeliveryDate, model.BlueEnvelopeProvider, model.BluePermitCity, model.BluePermitClass, model.BluePermitNumber, model.BluePrintPermit, model.BluePrintReturnAddress, model.BlueWantsQuote, model.ContactName, model.FutureVoterStickerRolls, model.IVotedStickerRolls, model.MailingHasNonprofitStatus, model.MailingPickupDate, model.MailingPostageOption, model.MailingWantsService, model.MailingWantsSorting, model.Municipality, model.OrderID, model.Phone, model.PurpleColorCodingBy, model.PurpleDeliveryDate, model.PurpleEnvelopeProvider, model.PurpleEnvelopeStock, model.PurpleExtraEnvelopeQty, model.PurplePrecinctCount, model.PurplePrintOption, model.PurplePrintStyle, model.PurpleTrackMIBallot, model.PurpleWantsBlueEnvelopes, model.PurpleWantsQuote, model.SecrecySleevesQty, model.SubmittedAt, model.OrderDetailID) End Sub Public Sub Delete(id) Dim sql : sql = "DELETE FROM [OrderDetails] WHERE [OrderDetailID] = ?" DAL.Execute sql, Array(id) End Sub ' Returns the POBO_OrderDetails row for the given OrderID, or Nothing if none exists yet. Public Function FindByOrderID(orderId) Dim rs : Set rs = DAL.Query("SELECT [OrderDetailID] FROM [OrderDetails] WHERE [OrderID] = ?", Array(orderId)) If rs.EOF Then Set FindByOrderID = Nothing Else Set FindByOrderID = FindByID(rs("OrderDetailID").Value) End If Destroy rs End Function ' Inserts a new OrderDetails row for orderId if one doesn't exist yet, or updates the ' existing one (survey answers are 1:1 with an Order - re-submitting replaces them). Public Sub SaveForOrder(orderId, model) Dim existing : Set existing = FindByOrderID(orderId) model.OrderID = orderId If existing Is Nothing Then AddNew model Else model.OrderDetailID = existing.OrderDetailID Update model End If End Sub Private Function RecordNotFoundException(ByVal field_name, ByVal field_val) RecordNotFoundException = "OrderDetails record was not found with " & field_name & " = '" & field_val & "'." End Function Private Function QI(name) QI = "[" & Replace(CStr(name), "]", "]]") & "]" End Function Private Function BuildOrderBy(orderArg, defaultCol) Dim s : s = "" If IsEmpty(orderArg) Or IsNull(orderArg) Or orderArg = "" Then s = " ORDER BY " & defaultCol & " ASC" ElseIf IsArray(orderArg) Then Dim i : s = " ORDER BY " For i = 0 To UBound(orderArg) If i > 0 Then s = s & ", " s = s & QI(orderArg(i)) Next Else s = " ORDER BY " & QI(orderArg) End If BuildOrderBy = s End Function End Class Dim OrderDetailsRepository__Singleton Function OrderDetailsRepository() If IsEmpty(OrderDetailsRepository__Singleton) Then Set OrderDetailsRepository__Singleton = new OrderDetailsRepository_Class End If Set OrderDetailsRepository = OrderDetailsRepository__Singleton End Function %>