mirror of
https://github.com/MarijnDoeve/TijdVoorDeTest.git
synced 2026-03-06 04:44:19 +01:00
- Replaced getters/setters with direct property access across entities and repositories. - Added and configured `martin-georgiev/postgresql-for-doctrine` for PostgreSQL enhancements. - Updated Doctrine configuration with types, mappings, and JSONB query functions. - Removed unused `EliminationService` and related YAML configurations.
39 lines
939 B
PHP
39 lines
939 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tvdt\Factory;
|
|
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Tvdt\Entity\Elimination;
|
|
use Tvdt\Entity\Quiz;
|
|
use Tvdt\Repository\CandidateRepository;
|
|
|
|
final readonly class EliminationFactory
|
|
{
|
|
public function __construct(
|
|
private CandidateRepository $candidateRepository,
|
|
private EntityManagerInterface $em,
|
|
) {}
|
|
|
|
public function createEliminationFromQuiz(Quiz $quiz): Elimination
|
|
{
|
|
$elimination = new Elimination($quiz);
|
|
$this->em->persist($elimination);
|
|
|
|
$scores = $this->candidateRepository->getScores($quiz);
|
|
|
|
$simpleScores = [];
|
|
|
|
foreach (array_reverse($scores) as $i => $score) {
|
|
$simpleScores[$score->name] = $i < $quiz->dropouts ? Elimination::SCREEN_RED : Elimination::SCREEN_GREEN;
|
|
}
|
|
|
|
$elimination->data = $simpleScores;
|
|
|
|
$this->em->flush();
|
|
|
|
return $elimination;
|
|
}
|
|
}
|