36 lines
881 B
PHP
36 lines
881 B
PHP
<?php
|
|
|
|
namespace App\Game\Service;
|
|
|
|
use App\Game\Entity\Game;
|
|
use App\Game\Entity\Player;
|
|
use App\Game\Enum\SessionStatus;
|
|
use App\Game\Repository\PlayerRepository;
|
|
use App\Tech\Entity\User;
|
|
|
|
class PlayerService
|
|
{
|
|
public function __construct(
|
|
private PlayerRepository $playerRepository,
|
|
) {
|
|
}
|
|
|
|
public function GetCurrentlyActiveAsPlayer(User $user): ?Player
|
|
{
|
|
$player = $this->playerRepository->createQueryBuilder('p')
|
|
->join('p.session', 's')
|
|
->where('p.user = :user')
|
|
->andWhere('s.status IN (:statuses)')
|
|
->setParameter('user', $user)
|
|
->setParameter('statuses', [
|
|
SessionStatus::READY,
|
|
SessionStatus::PLAYING,
|
|
])
|
|
->setMaxResults(1)
|
|
->getQuery()
|
|
->getOneOrNullResult();
|
|
|
|
return $player;
|
|
}
|
|
}
|