using GozareshgirProgramManager.Domain.ProjectAgg.Entities; using GozareshgirProgramManager.Domain.ProjectAgg.Enums; using GozareshgirProgramManager.Domain.ProjectAgg.Repositories; using GozareshgirProgramManager.Infrastructure.Persistence._Common; using GozareshgirProgramManager.Infrastructure.Persistence.Context; using Microsoft.EntityFrameworkCore; namespace GozareshgirProgramManager.Infrastructure.Persistence.Repositories; public class TaskSectionRepository:RepositoryBase,ITaskSectionRepository { private readonly ProgramManagerDbContext _context; public TaskSectionRepository(ProgramManagerDbContext context) : base(context) { _context = context; } public async Task GetByIdWithActivitiesAsync(Guid id, CancellationToken cancellationToken = default) { return await _context.TaskSections .Include(x => x.Activities) .FirstOrDefaultAsync(x => x.Id == id, cancellationToken); } public async Task GetByIdWithFullDataAsync(Guid id, CancellationToken cancellationToken = default) { return await _context.TaskSections .Include(x => x.Activities) .Include(x => x.AdditionalTimes) .FirstOrDefaultAsync(x => x.Id == id, cancellationToken); } public async Task> GetAssignedToUserAsync(long userId) { return await _context.TaskSections .Where(x => x.CurrentAssignedUserId == userId) .ToListAsync(); } public Task> GetActiveSectionsIncludeAllAsync(CancellationToken cancellationToken) { return _context.TaskSections .Where(x => x.Status == TaskSectionStatus.InProgress) .Include(x => x.Activities) .Include(x => x.AdditionalTimes) .ToListAsync(cancellationToken); } }