Files
nashel-backend/src/Modules/Reputation/Domain/Services/RatingCalculator.cs
Халимов Рустам 46f008aefa Модуль репутации
2026-02-12 16:11:14 +03:00

41 lines
1.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Nashel.Modules.Reputation.Domain.Repositories;
namespace Nashel.Modules.Reputation.Domain.Services;
/// <summary>
/// Сервис для расчета рейтинга пользователей.
/// </summary>
public class RatingCalculator
{
private readonly IReviewRepository _reviewRepository;
public RatingCalculator(IReviewRepository reviewRepository)
{
_reviewRepository = reviewRepository;
}
/// <summary>
/// Вычисляет средний рейтинг пользователя на основе всех его отзывов.
/// </summary>
/// <returns>Средний рейтинг (double) или 0, если отзывов нет.</returns>
public async Task<double> CalculateAverage(Guid targetId, CancellationToken cancellationToken = default)
{
var reviews = await _reviewRepository.GetByTargetIdAsync(targetId, cancellationToken);
if (reviews == null || !reviews.Any())
{
return 0.0;
}
// Простое среднее арифметическое
double avg = reviews.Average(r => r.Rating);
// Округлим до 1 знака (опционально)
return Math.Round(avg, 1);
}
}