using Microsoft.EntityFrameworkCore; using SurveyLib.Core.Models; using SurveyLib.Core.Repositories; using SurveyLib.Infrastructure.EFCore.Data; namespace SurveyLib.Infrastructure.EFCore.Repositories; public class SurveyRepository : ISurveyRepository { private readonly SurveyDbContext _context; public SurveyRepository(SurveyDbContext context) { _context = context; } public async Task GetByIdAsync(int id) { return await _context.Surveys.FindAsync(id); } public async Task> GetAllAsync() { return await _context.Surveys.ToListAsync(); } public async Task AddAsync(Survey entity) { await _context.Surveys.AddAsync(entity); await _context.SaveChangesAsync(); } public async Task UpdateAsync(Survey entity) { _context.Surveys.Update(entity); await _context.SaveChangesAsync(); } public async Task DeleteAsync(Survey entity) { _context.Surveys.Remove(entity); await _context.SaveChangesAsync(); } public async Task GetWithQuestionsAsync(int surveyId) { return await _context.Surveys.Include(survey => survey.Questions) .FirstOrDefaultAsync(s => s.Id == surveyId); } public async Task GetWithCompletionsAsync(int surveyId) { return await _context.Surveys.Include(survey => survey.Completions) .FirstOrDefaultAsync(s => s.Id == surveyId); } public async Task> FindByTitleAsync(string title) { return await _context.Surveys.Where(s => s.Title.ToLower().Contains(title.ToLower())).ToListAsync(); } }