using Stylist.Data.Models.Dtos.Review; using Stylist.Data.Models.DTOs.Review; using System.Linq.Expressions; using Stylist.Data.Models.Entities; namespace Stylist.Domain.Mapping { public static class ReviewMapping { public static Expression<Func<Review, ReviewSalonPageDto>> MapToReviewSalonPageDto => x => new ReviewSalonPageDto() { Id = x.Id, Comment = x.Comment, Rating = x.Rating, User = x.Reservation.User.MapToUserReviewDto() }; public static RatingSalonPageDto? MapToRatingSalonPageDto(this ICollection<Review> reviews) { if (reviews.Count == 0) return null; return new RatingSalonPageDto { AverageRating = reviews.Average(r => r.Rating), NumberOfReviews = reviews.Count }; } public static Expression<Func<Review, ReviewPageDto>> MapToReviewPageDto => x => new ReviewPageDto() { Id = x.Id, Comment = x.Comment, Date = x.Date, Rating = x.Rating, User = x.Reservation.User.MapToUserReviewPageDto(), Hairdresser = (x.Reservation.Schedule.Hairdresser).MapToHairdresserReviewPageDto(), Service = x.Reservation.Service.MapToServiceReviewPageDto() }; } }