VSVverkeerskunde/gvq-api

View on GitHub
src/Statistics/Projectors/CompanyPlayedQuizzesProjector.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace VSV\GVQ_API\Statistics\Projectors;

use Broadway\Domain\DomainMessage;
use Broadway\EventHandling\EventListener;
use VSV\GVQ_API\Quiz\Events\QuizStarted;
use VSV\GVQ_API\Statistics\Repositories\CompanyPlayedQuizzesRepository;

class CompanyPlayedQuizzesProjector implements EventListener
{
    private $companyPlayedQuizzesRepository;

    public function __construct(CompanyPlayedQuizzesRepository $companyPlayedQuizzesRepository)
    {
        $this->companyPlayedQuizzesRepository = $companyPlayedQuizzesRepository;
    }

    public function handle(DomainMessage $domainMessage)
    {
        $payload = $domainMessage->getPayload();

        if ($payload instanceof QuizStarted) {
            $company = $payload->getQuiz()->getCompany();

            if ($company) {
                $language = $payload->getQuiz()->getLanguage();
                $this->companyPlayedQuizzesRepository->incrementCount(
                    $company->getId(),
                    $language
                );
            }
        }
    }
}