Files
2026-08-20 23:00:47 +02:00

46 lines
1.0 KiB
PHP

<?php
namespace App\Services\Rooms;
use App\Models\Room;
class RoomStatisticsService
{
/**
* @return array{average: string|null, median: string|null}|null
*/
public function currentRound(Room $room): ?array
{
if ($room->revealed_at === null) {
return null;
}
$values = [];
foreach ($room->players as $player) {
$vote = $player->votes->first();
if ($vote !== null && is_numeric($vote->value)) {
$values[] = (float) $vote->value;
}
}
sort($values, SORT_NUMERIC);
$count = count($values);
if ($count === 0) {
return ['average' => null, 'median' => null];
}
$middle = intdiv($count, 2);
$median = $count % 2 === 1
? $values[$middle]
: ($values[$middle - 1] + $values[$middle]) / 2;
return [
'average' => number_format(array_sum($values) / $count, 2, ',', ''),
'median' => number_format($median, 2, ',', ''),
];
}
}