using Microsoft.EntityFrameworkCore; using MTWorkHR.Core.Entities; using MTWorkHR.Core.IDto; using MTWorkHR.Infrastructure.Entities; using MTWorkHR.Infrastructure.DBContext; using MTWorkHR.Core.IRepositories; namespace MTWorkHR.Infrastructure.Repositories { public class UserTaskRepository : Repository, IUserTaskRepository { private readonly DbSet dbSet; public UserTaskRepository(HRDataContext context) : base(context) { dbSet = context.Set(); } public async Task GetByIdWithAllChildren(long id) { return await dbSet .Include(x => x.TaskAttachments).ThenInclude(a => a.AttachmentType) .Include(x => x.TaskHistories) .Include(x => x.TaskStatus) .Include(x => x.Project) .FirstOrDefaultAsync(x => x.Id == id); } public async Task GetByUserIdWithAllChildren(string userId) { return await dbSet .Include(x => x.TaskAttachments).ThenInclude(a => a.AttachmentType) .Include(x => x.TaskHistories) .Include(x => x.TaskStatus) .Include(x => x.Project) .FirstOrDefaultAsync(x => x.AssignedUserId == userId); } public async Task, int>> GetAllWithChildrenAsync() { var query = dbSet.Include(x => x.Project).Include(x => x.TaskAttachments) .Include(x => x.TaskHistories).AsQueryable(); var total = await query.CountAsync(); return new Tuple, int>(query, total); } } }