using Microsoft.EntityFrameworkCore; using Stylist.Data.Models; using Stylist.Data.Models.Dtos.Review; using Stylist.Data.Models.DTOs.Review; using Stylist.Domain.Mapping; using Stylist.Domain.Repositories.Interfaces; namespace Stylist.Domain.Repositories.Implementations { public class ReviewRepository : IReviewRepository { public ReviewRepository(StylistContext context) { _context = context; } private readonly StylistContext _context; public async Task<IEnumerable<ReviewSalonPageDto>> GetRecommendedBySalonId(int salonId) { var reviews = await _context .Reviews .AsNoTracking() .Where(r => r.SalonId == salonId) .Include(r => r.Reservation) .ThenInclude(re => re.User) .Select(ReviewMapping.MapToReviewSalonPageDto) .ToListAsync(); return reviews; } public async Task<IEnumerable<ReviewPageDto>> GetReviewsBySalonAsync(int salonId) { var reviews = await _context .Reviews .AsNoTracking() .Where(r => r.SalonId == salonId) .Include(r => r.Reservation) .Include(r => r.Reservation.Service) .Include(r => r.Reservation.User) .Include(r => r.Reservation.Schedule) .ThenInclude(s => s.Hairdresser) .Select(ReviewMapping.MapToReviewPageDto) .ToListAsync(); return reviews; } } }