using System.Threading.Tasks; using TicketManager.Models; using System.Linq; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; namespace TicketManager.Data { public class ProjectRepository : GenericRepository, IProjectRepository { private readonly IQueryable _query; public ProjectRepository(AppDbContext context) : base(context) { _query = _dbSet .Include(p => p.Assignments).ThenInclude(a => a.User) .Include(p => p.Tickets) .Include(p => p.Manager) .Include(p => p.Files) .AsNoTracking(); } public override async Task Get(int id) { return await _query.FirstOrDefaultAsync(p => p.Id == id); } public override async Task> List() { return await _query.ToListAsync(); } public bool Exists(int id) { return _dbSet.Any(e => e.Id == id); } public async Task> GetMembers(int id) { Project project = await Get(id); return project.GetMembers(); } public async Task SetMembers(int id, List usersToAdd) { Project project = await Get(id); project.SetMembers(usersToAdd); } } }