<% Class cards_Repository_Class Private Function SelectBase() SelectBase = "SELECT [id],[board_id],[column_id],[swim_lane_id],[job_number],[job_name],[customer_name],[delivery_date],[quantity],[notes],[full_note],[position],[created_at],[created_by],[updated_at],[updated_by] FROM [cards]" End Function Public Function FindByID(id) Dim sql : sql = SelectBase() & " WHERE [id] = ?" Dim rs : Set rs = DAL.Query(sql, Array(id)) If rs.EOF Then Err.Raise 1, "cards_Repository_Class", "Card not found with id = " & id Else Set FindByID = Automapper.AutoMap(rs, "POBO_cards") End If Destroy rs End Function Public Function FindByBoardId(boardId) Dim sql : sql = SelectBase() & " WHERE [board_id] = ? ORDER BY [swim_lane_id] ASC, [column_id] ASC, [position] ASC" Dim rs : Set rs = DAL.Query(sql, Array(boardId)) Dim list : Set list = New LinkedList_Class Do Until rs.EOF list.Push Automapper.AutoMap(rs, "POBO_cards") rs.MoveNext Loop Set FindByBoardId = list Destroy rs End Function Public Function FindByCell(columnId, swimLaneId) Dim sql : sql = SelectBase() & " WHERE [column_id] = ? AND [swim_lane_id] = ? ORDER BY [position] ASC" Dim rs : Set rs = DAL.Query(sql, Array(columnId, swimLaneId)) Dim list : Set list = New LinkedList_Class Do Until rs.EOF list.Push Automapper.AutoMap(rs, "POBO_cards") rs.MoveNext Loop Set FindByCell = list Destroy rs End Function Public Function MaxPosition(columnId, swimLaneId) Dim sql : sql = "SELECT MAX([position]) FROM [cards] WHERE [column_id] = ? AND [swim_lane_id] = ?" Dim rs : Set rs = DAL.Query(sql, Array(columnId, swimLaneId)) If rs.EOF Or IsNull(rs(0)) Then MaxPosition = -1 Else MaxPosition = CLng(rs(0)) End If Destroy rs End Function Public Sub AddNew(ByRef model) Dim sql, params If QuantityIsBlank(model.quantity) Then sql = "INSERT INTO [cards] ([board_id],[column_id],[swim_lane_id],[job_number],[job_name],[customer_name],[delivery_date],[quantity],[notes],[full_note],[position],[created_at],[created_by],[updated_at],[updated_by]) VALUES (?,?,?,?,?,?,?,NULL,?,?,?,?,?,?,?)" params = Array(model.board_id, model.column_id, model.swim_lane_id, model.job_number, model.job_name, model.customer_name, model.delivery_date, model.notes, model.full_note, model.position, model.created_at, model.created_by, model.updated_at, model.updated_by) Else sql = "INSERT INTO [cards] ([board_id],[column_id],[swim_lane_id],[job_number],[job_name],[customer_name],[delivery_date],[quantity],[notes],[full_note],[position],[created_at],[created_by],[updated_at],[updated_by]) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" params = Array(model.board_id, model.column_id, model.swim_lane_id, model.job_number, model.job_name, model.customer_name, model.delivery_date, model.quantity, model.notes, model.full_note, model.position, model.created_at, model.created_by, model.updated_at, model.updated_by) End If DAL.Execute sql, params Dim rsId : Set rsId = DAL.Query("SELECT @@IDENTITY AS NewID", Empty) If Not rsId.EOF Then If Not IsNull(rsId(0)) Then model.id = rsId(0) End If Destroy rsId End Sub Public Sub Update(model) Dim sql, params If QuantityIsBlank(model.quantity) Then sql = "UPDATE [cards] SET [job_number]=?,[job_name]=?,[customer_name]=?,[delivery_date]=?,[quantity]=NULL,[notes]=?,[full_note]=?,[updated_at]=?,[updated_by]=? WHERE [id]=?" params = Array(model.job_number, model.job_name, model.customer_name, model.delivery_date, model.notes, model.full_note, model.updated_at, model.updated_by, model.id) Else sql = "UPDATE [cards] SET [job_number]=?,[job_name]=?,[customer_name]=?,[delivery_date]=?,[quantity]=?,[notes]=?,[full_note]=?,[updated_at]=?,[updated_by]=? WHERE [id]=?" params = Array(model.job_number, model.job_name, model.customer_name, model.delivery_date, model.quantity, model.notes, model.full_note, model.updated_at, model.updated_by, model.id) End If DAL.Execute sql, params End Sub Private Function QuantityIsBlank(v) QuantityIsBlank = (Len(Trim(CStr(v & ""))) = 0) End Function Public Sub Move(id, columnId, swimLaneId, position, updatedAt, updatedBy) Dim sql : sql = "UPDATE [cards] SET [column_id]=?,[swim_lane_id]=?,[position]=?,[updated_at]=?,[updated_by]=? WHERE [id]=?" DAL.Execute sql, Array(columnId, swimLaneId, position, updatedAt, updatedBy, id) End Sub Public Sub UpdatePosition(id, position, updatedAt, updatedBy) Dim sql : sql = "UPDATE [cards] SET [position]=?,[updated_at]=?,[updated_by]=? WHERE [id]=?" DAL.Execute sql, Array(position, updatedAt, updatedBy, id) End Sub Public Sub Delete(id) DAL.Execute "DELETE FROM [cards] WHERE [id]=?", Array(id) End Sub Public Sub DeleteByBoardId(boardId) DAL.Execute "DELETE FROM [cards] WHERE [board_id]=?", Array(boardId) End Sub Public Sub DeleteByColumnId(columnId) DAL.Execute "DELETE FROM [cards] WHERE [column_id]=?", Array(columnId) End Sub Public Sub DeleteBySwimLaneId(swimLaneId) DAL.Execute "DELETE FROM [cards] WHERE [swim_lane_id]=?", Array(swimLaneId) End Sub Public Function Count() Dim rs : Set rs = DAL.Query("SELECT COUNT(*) FROM [cards]", Empty) Count = CLng(rs(0)) Destroy rs End Function End Class Dim cards_Repository__Singleton Function cards_Repository() If IsEmpty(cards_Repository__Singleton) Then Set cards_Repository__Singleton = New cards_Repository_Class End If Set cards_Repository = cards_Repository__Singleton End Function %>