65 lines
2.6 KiB
C#
65 lines
2.6 KiB
C#
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<Guid,TaskSection>,ITaskSectionRepository
|
|
{
|
|
private readonly ProgramManagerDbContext _context;
|
|
public TaskSectionRepository(ProgramManagerDbContext context) : base(context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<TaskSection?> GetByIdWithActivitiesAsync(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<TaskSection?> 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<List<TaskSection>> GetAssignedToUserAsync(long userId)
|
|
{
|
|
return await _context.TaskSections
|
|
.Where(x => x.CurrentAssignedUserId == userId)
|
|
.ToListAsync();
|
|
}
|
|
|
|
public Task<List<TaskSection>> GetActiveSectionsIncludeAllAsync(CancellationToken cancellationToken)
|
|
{
|
|
return _context.TaskSections
|
|
.Where(x => x.Status == TaskSectionStatus.InProgress)
|
|
.Include(x => x.Activities)
|
|
.Include(x => x.AdditionalTimes)
|
|
.ToListAsync(cancellationToken);
|
|
}
|
|
|
|
public async Task<bool> HasUserAnyInProgressSectionAsync(long userId, CancellationToken cancellationToken = default)
|
|
{
|
|
return await _context.TaskSections
|
|
.AnyAsync(x => x.CurrentAssignedUserId == userId && x.Status == TaskSectionStatus.InProgress,
|
|
cancellationToken);
|
|
}
|
|
|
|
public Task<List<TaskSection>> GetAllNotCompletedOrPendingIncludeAllAsync(CancellationToken cancellationToken)
|
|
{
|
|
return _context.TaskSections
|
|
.Where(x => x.Status != TaskSectionStatus.Completed && x.Status != TaskSectionStatus.PendingForCompletion)
|
|
.Include(x => x.Activities)
|
|
.Include(x => x.AdditionalTimes)
|
|
.ToListAsync(cancellationToken);
|
|
}
|
|
} |