<% '======================================================================================================================= ' Kit Model '======================================================================================================================= Class KitModel_Class Public Validator Public Class_Get_Properties Public ID '90 Public JobNumber '106 Public Jcode '106 Private Sub Class_Initialize 'ValidateExitsts Me, "","" Class_Get_Properties = Array("ID, JobNumber, Jcode") End Sub End CLass Class IndexKitModel_Class Public Validator Public Class_Get_Properties Public ID Public JobNumber '90 Public Jurisdiction '106 Public LabelCount '106 Public CreatedOn Public LabelsPrinted Public ExportedToSnailWorks Public JobType Private Sub Class_Initialize 'ValidateExitsts Me, "","" Class_Get_Properties = Array("ID, JobNumber, Jurisdiction,LabelCount,CreatedOn,LabelsPrinted,ExportedToSnailWorks,JobType") End Sub End Class '======================================================================================================================= ' Kit Repository '======================================================================================================================= Class KitRepository_Class Public Function PagedIndexView(per_page, page_num, ByRef page_count, ByRef record_count) dim sql : sql = "SELECT Kit.ID,Kit.JobNumber as [JobNumber], " &_ "Jurisdiction.Name As Jurisdiction," &_ "(SELECT COUNT(*) From KitLabels Where KitId = Kit.ID)" &_ " As [LabelCount],[CreatedOn],[LabelsPrinted],[ExportedToSnailWorks],[JobType] FROM Kit INNER JOIN Jurisdiction ON Kit.Jcode = Jurisdiction.JCode Where Kit.JobType Is Null or Kit.JobType = 'Labels';" dim list : set list = new LinkedList_Class dim rs : set rs = DAL.PagedQuery(sql, empty, per_page, page_num) If Not rs.EOF and Not (IsEmpty(per_page) and IsEmpty(page_num) and IsEmpty(page_count) and IsEmpty(record_count)) then rs.PageSize = per_page rs.AbsolutePage = page_num page_count = rs.PageCount record_count = rs.RecordCount End If set PagedIndexView = PagedIndexViewKitList(rs, per_page) Destroy rs End Function Private Function PagedIndexViewKitList(rs, per_page) dim list : set list = new LinkedList_Class dim x : x =0 Do While x < per_page and Not rs.EOF list.Push Automapper.AutoMap(rs, new IndexKitModel_Class) x = x +1 rs.MoveNext Loop set PagedIndexViewKitList = list End Function Public Function SwitchBoardEditFindById(ID) dim sql : sql = "SELECT Kit.ID,Kit.JobNumber as [JobNumber], " &_ "Jurisdiction.Name As Jurisdiction," &_ "(SELECT COUNT(*) From KitLabels Where KitId = Kit.ID)" &_ " As [LabelCount],[CreatedOn],[LabelsPrinted],[ExportedToSnailWorks],[JobType] FROM Kit INNER JOIN Jurisdiction ON Kit.Jcode = Jurisdiction.JCode " &_ "WHERE ID = ? AND Kit.JobType Is Null or Kit.JobType = 'Labels'" dim rs : set rs = DAL.Query(sql,ID) If rs.EOF then Err.Raise 1, "KitRepository_Class", KitNotFoundException("ID", ID) Else set SwitchBoardEditFindByID = Automapper.AutoMap(rs,"IndexKitModel_Class") End If End Function Public Function FindByID(ID) dim sql : sql = "Select [ID], [JobNumber], [Jcode] FROM [Kit] WHERE ID = ?" dim rs : set rs = DAL.Query(sql,ID) If rs.EOF then Err.Raise 1, "KitRepository_Class", KitNotFoundException("ID", ID) Else set FindByID = Automapper.AutoMap(rs,"KitModel_Class") End If 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 [ID], [JobNumber], [Jcode] FROM [Kit]" If Not IsEmpty(where_kvarray) then sql = sql & " WHERE " dim where_keys, where_values KVUnzip where_kvarray, where_keys, where_values dim i For i = 0 to UBound(where_keys) If i > 0 then sql = sql & " AND " sql = sql & " " & where_keys(i) & " " Next End If If Not IsEmpty(order_string_or_array) then sql = sql & "ORDER BY " If IsArray(order_string_or_array) then dim order_array : order_array = order_string_or_array For i = 0 to UBound(order_array) If i > 0 then sql = sql & ", " sql = sql & " " & order_array(i) Next Else sql = sql & order_string_or_array & " " End If End If dim rs : set rs = DAL.Query(sql, where_values) set Find = KitList(rs) 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 [ID], [JobNumber], [Jcode] FROM [Kit]" If Not IsEmpty(where_kvarray) then sql = sql & " WHERE " dim where_keys, where_values KVUnzip where_kvarray, where_keys, where_values dim i For i = 0 to UBound(where_keys) If i > 0 then sql = sql & " AND " sql = sql & " " & where_keys(i) & " " Next End If If Not IsEmpty(order_string_or_array) then sql = sql & "ORDER BY " If IsArray(order_string_or_array) then dim order_array : order_array = order_string_or_array For i = 0 to UBound(order_array) If i > 0 then sql = sql & ", " sql = sql & " " & order_array(i) Next Else sql = sql & order_string_or_array & " " End If End If dim list : set list = new LinkedList_Class dim rs : set rs = DAL.PagedQuery(sql, where_values, per_page, page_num) If Not rs.EOF and Not (IsEmpty(per_page) and IsEmpty(page_num) and IsEmpty(page_count) and IsEmpty(record_count)) then rs.PageSize = per_page rs.AbsolutePage = page_num page_count = rs.PageCount record_count = rs.RecordCount End If set FindPaged = PagedKitList(rs, per_page) Destroy rs End Function Public Function SearchTablePaged(where_kvarray, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count) dim sql : sql = "Select [ID], [JobNumber], [Jcode] FROM [Kit]" If Not IsEmpty(where_kvarray) then sql = sql & " WHERE " dim where_keys, where_values KVUnzip where_kvarray, where_keys, where_values dim i For i = 0 to UBound(where_keys) If i > 0 then sql = sql & " OR" sql = sql & " " & where_keys(i) & " LIKE ?" Next End If If Not IsEmpty(order_string_or_array) then sql = sql & " ORDER BY " If IsArray(order_string_or_array) then dim order_array : order_array = order_string_or_array For i = 0 to UBound(order_array) If i > 0 then sql = sql & ", " sql = sql & " " & order_array(i) Next Else sql = sql & order_string_or_array & " " End If End If dim list : set list = new LinkedList_Class dim rs : set rs = DAL.PagedQuery(sql, where_values, per_page, page_num) If Not rs.EOF and Not (IsEmpty(per_page) and IsEmpty(page_num) and IsEmpty(page_count) and IsEmpty(record_count)) then rs.PageSize = per_page rs.AbsolutePage = page_num page_count = rs.PageCount record_count = rs.RecordCount End If set SearchTablePaged = PagedKitList(rs, per_page) Destroy rs End Function Private Function PagedKitList(rs, per_page) dim list : set list = new LinkedList_Class dim x : x =0 Do While x < per_page and Not rs.EOF list.Push Automapper.AutoMap(rs, new KitModel_Class) x = x +1 rs.MoveNext Loop set PagedKitList = list End Function Private Function KitNotFoundException(ByVal field_name, ByVal field_val) KitNotFoundException = "Kit was not found with " & field_name & " of '" & field_val & "'." End Function Private Function KitList(rs) dim list : set list = new LinkedList_Class dim model Do until rs.EOF set model = new KitModel_Class list.Push Automapper.AutoMap(rs, model) rs.MoveNext Loop set KitList = list End Function Public Sub AddNew(ByRef model) dim sql : sql = "INSERT INTO [Kit] (" &_ "[JobNumber]," &_ "[Jcode]," &_ "[CreatedOn]," &_ "[JobType])" &_ "VALUES (?,?,?,?)" DAL.Execute sql, Array(model.JobNumber, _ model.Jcode,Now(),"Labels") sql = "SELECT TOP 1 ID FROM [Kit] ORDER BY ID DESC" dim rs : set rs = DAL.Query(sql, empty) model.ID = rs("ID") Destroy rs End Sub Public Sub Update(model) dim sql : sql = "UPDATE [Kit] SET [JobNumber] = ?," &_ "[Jcode] = ?" &_ " WHERE [ID] = ?" DAL.Execute sql, Array(model.JobNumber, _ model.Jcode, _ model.ID) End Sub Public Sub Delete(id) dim sql : sql = "DELETE FROM [Kit] WHERE [ID] = ?" DAL.Execute sql, id End Sub End Class dim KitRepository__Singleton Function KitRepository() If IsEmpty(KitRepository__Singleton) then set KitRepository__Singleton = new KitRepository_Class End If set KitRepository = KitRepository__Singleton End Function %>