using Stylist.Data.Dtos.Salon; using Stylist.Data.Models.DTOs.Salon; using System.Linq.Expressions; using Stylist.Data.Models.Entities; namespace Stylist.Domain.Mapping { public static class SalonMapping { public static Expression<Func<Salon, SalonRecommendedDto>> MapToRecommendedDto => x => new SalonRecommendedDto() { Id = x.Id, Name = x.Name, Adress = x.Adress, WorkingHour = x.WorkingHours .AsQueryable() .Select(WorkingHourMapping.MapToWorkingHourDto) .FirstOrDefault(wh => DateTime.Now.Date == wh.OpeningHour.Date), Rating = x.Reviews.Average(r => r.Rating), ImageUrl = x.ImageUrls, }; public static Expression<Func<Salon, SalonLandingDto>> MapToLandingDto => x => new SalonLandingDto() { Id = x.Id, Name = x.Name, Adress = x.Adress, Gender = x.Gender, WorkingHour = x.WorkingHours .AsQueryable() .Select(WorkingHourMapping.MapToWorkingHourDto) .FirstOrDefault(wh => DateTime.Now.Date == wh.OpeningHour.Date), Rating = x.Reviews.Average(r => r.Rating), ImageUrl = x.ImageUrls, }; public static Expression<Func<Salon, SalonPageDto>> MapToSalonPageDto => x => new SalonPageDto() { Id = x.Id, Name = x.Name, Adress = x.Adress, AdressUrl = x.AdressUrl, Description = x.Description, PhoneNumber = x.PhoneNumber, WebsiteUrl = x.WebsiteUrl, WorkingHour = x.WorkingHours .AsQueryable() .Select(WorkingHourMapping.MapToWorkingHourDto) .FirstOrDefault(wh => DateTime.Now.Date == wh.OpeningHour.Date), ImageUrl = x.ImageUrls, Rating = x.Reviews.MapToRatingSalonPageDto() }; } }