using System.Threading.Tasks; using TicketManager.Models; using System.Linq; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; namespace TicketManager.Data { public class ProjectRepository : IProjectRepository { private readonly AppDbContext _context; private readonly IQueryable _query; public ProjectRepository(AppDbContext context) { _context = context; _query = _context.Projects .Include(p => p.Assignments) .ThenInclude(a => a.User) .Include(p => p.Tickets) .Include(p => p.Manager) .Include(p => p.Files); } public Task AddAsync(Project project) { _context.Projects.Add(project); return _context.SaveChangesAsync(); } public async Task DeleteAsync(int id) { Project project = await GetByIdAsync(id); _context.Projects.Remove(project); return await _context.SaveChangesAsync(); } public async Task GetByIdAsync(int id) { return await _query.FirstOrDefaultAsync(p => p.Id == id); } public async Task> ListAsync() { return await _query.ToListAsync(); } public Task UpdateAsync(Project project) { _context.Entry(project).State = EntityState.Modified; return _context.SaveChangesAsync(); } public bool Exists(int id) { return _context.Projects.Any(e => e.Id == id); } } }