stylist / backend / Stylist.Domain / Repositories / Implementations / ServiceRepository.cs
ServiceRepository.cs
Raw
using Microsoft.EntityFrameworkCore;
using Stylist.Data.Models;
using Stylist.Data.Models.DTOs;
using Stylist.Data.Models.DTOs.Service;
using Stylist.Domain.Mapping;
using Stylist.Domain.Repositories.Interfaces;

namespace Stylist.Domain.Repositories.Implementations
{
    public class ServiceRepository : IServiceRepository
    {
        public ServiceRepository(StylistContext context)
        {
            _context = context;
        }

        private readonly StylistContext _context;
        public async Task<IEnumerable<ServiceSalonPageDto>> GetRecommendedServicesBySalonAsync(int salonId)
        {
            var services = await _context
                .Services
                .AsNoTracking()
                .Where(s => s.SalonId == salonId)
                .Select(ServiceMapping.MapToServiceSalonPageDto)
                .Take(3)
                .ToListAsync();

            return services;
        }

        public async Task<IEnumerable<ServiceChoosePageDto>> GetServicesBySalonAsync(int salonId)
        {
            var salonServices = await _context
                .Services
                .AsNoTracking()
                .Include(s => s.ServiceMainServices)
                .ThenInclude(sms => sms.MainService)
                .Where(s => s.SalonId == salonId)
                .Select(ServiceMapping.MapToServiceChoosePageDto)
                .ToListAsync();

            return salonServices;
        }
    }
}