StageStatsQuery.php 1.34 KB
<?php

namespace FootyRoom\Queries;

use FootyRoom\Http\Models\StageStats;
use FootyRoom\Support\MongoClient;

class StageStatsQuery
{
    /**
     * @var \FootyRoom\Support\MongoClient
     */
    protected $mongo;

    /**
     * Constructor.
     *
     * @param \FootyRoom\Support\MongoClient $mongo
     */
    public function __construct(MongoClient $mongo)
    {
        $this->mongo = $mongo->footyroom;
    }

    /**
     * Find stage stats by stage id.
     *
     * @param int $stageId
     *
     * @return \FootyRoom\Http\Models\StageStats|null
     */
    public function findByStageId($stageId)
    {
        $options = [
            'projection' => [
                '_id' => 0,
                'goalsByPlayer' => 1,
                'assistsByPlayer' => 1,
                'yellowCardsByPlayer' => 1,
                'redCardsByPlayer' => 1,
            ],
        ];

        $statsData = $this->mongo->stages->findOne(['stageId' => $stageId], $options);

        if (!$statsData) {
            return null;
        }

        $stats = new StageStats();

        $empty = true;

        foreach ($statsData as $key => $value) {
            $stats->{$key} = $value;

            if ($empty && count($value) > 0) {
                $empty = false;
            }
        }

        if ($empty) {
            return null;
        }

        return $stats;
    }
}