stylist / backend / Stylist.Domain / Mapping / SalonMapping.cs
SalonMapping.cs
Raw
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()
           };
    }
}