using WatchIt.Database.Model; namespace WatchIt.DTO.Models.Generics.Rating; public static class RatingMappers { #region PUBLIC METHODS public static void UpdateWithRequest(this IRatingEntity entity, RatingRequest ratingRequest) { entity.Rating = ratingRequest.Rating; } public static RatingOverallResponse ToOverallResponse(this IEnumerable entities) { IEnumerable ratingEntities = entities.ToList(); long sum = ratingEntities.Sum(x => x.Rating); long count = ratingEntities.Count(); return new RatingOverallResponse { Rating = count > 0 ? (decimal)sum / count : null, Count = count }; } public static RatingUserResponse ToUserResponse(this IRatingEntity entity) => new RatingUserResponse { Date = entity.Date, Rating = entity.Rating, }; public static RatingUserOverallResponse ToUserOverallResponse(this IEnumerable entities) { IEnumerable ratingEntities = entities.ToList(); long sum = ratingEntities.Sum(x => x.Rating); long count = ratingEntities.Count(); DateTimeOffset? lastDate = count == 0 ? null : ratingEntities.Max(x => x.Date); return new RatingUserOverallResponse { Rating = count > 0 ? (decimal)sum / count : null, Date = lastDate, Count = count }; } #endregion }