49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Repository\Groups;
|
|
|
|
use App\Entity\Groups\Accommodation;
|
|
use App\Entity\Groups\ContingentSyncState;
|
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
|
|
/**
|
|
* @extends ServiceEntityRepository<ContingentSyncState>
|
|
*/
|
|
class ContingentSyncStateRepository extends ServiceEntityRepository
|
|
{
|
|
public function __construct(ManagerRegistry $registry)
|
|
{
|
|
parent::__construct($registry, ContingentSyncState::class);
|
|
}
|
|
|
|
public function findOneByAccommodation(Accommodation $accommodation): ?ContingentSyncState
|
|
{
|
|
return $this->findOneBy(['accommodation' => $accommodation]);
|
|
}
|
|
|
|
/**
|
|
* Returns every sync state keyed by accommodation id, for the revisions endpoint.
|
|
*
|
|
* @return array<int, ContingentSyncState>
|
|
*/
|
|
public function findAllIndexedByAccommodationId(): array
|
|
{
|
|
$indexed = [];
|
|
|
|
foreach ($this->findAll() as $state) {
|
|
$accommodation = $state->getAccommodation();
|
|
|
|
if (null === $accommodation || null === $accommodation->getId()) {
|
|
continue;
|
|
}
|
|
|
|
$indexed[$accommodation->getId()] = $state;
|
|
}
|
|
|
|
return $indexed;
|
|
}
|
|
}
|