mirror of
https://github.com/ericasch6/scrum-poker-internal.git
synced 2026-10-15 08:06:09 +00:00
fix: refactored the codebase
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
<?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, ',', ''),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user