using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using LCU.Api.Internal.DispatcherLib.Persistence; using LCU.Library.Internal.DispatcherModels.Entities; using LCU.Api.Internal.DispatcherLib.Extensions.Queryables; namespace LCU.Api.Internal.DispatcherLib.Repositories; public class WorkItemExecutionRepository : BaseRepository, IWorkItemExecutionRepository { public WorkItemExecutionRepository(AppDbContext context) : base(context) { } public async Task> ListAsync() { return await _context.WorkItemExecutions.AsNoTracking().ToListAsync(); } public async Task FindByIdAsync(int id) { return await _context.WorkItemExecutions .AsNoTracking() .FirstOrDefaultAsync(workItemExecution => workItemExecution.WorkItemExecutionId == id); } public async Task AddAsync(WorkItemExecution workItemExecution) { var result = await _context.WorkItemExecutions.AddAsync(workItemExecution); return result.Entity; } public void Update(WorkItemExecution workItem) { _context.WorkItemExecutions.Update(workItem); } public async Task> FindUnFinishedWorkItemExecutions(int workItemId) { var result = await _context.WorkItemExecutions.Where(workItemExecution => workItemExecution.StartedTimestamp == null || workItemExecution.CompletedTimestamp == null) .Where(workItemExecution => workItemExecution.WorkItemId == workItemId).AsNoTracking().ToListAsync(); return result; } public async Task> FindAllByWorkItemId(int workItemId) { var result = await _context.WorkItemExecutions.Where(workItemExecution => workItemExecution.WorkItemId == workItemId) .AsNoTracking() .IncludeAll() .ToListAsync(); return result; } }