/** * @param CustomContextEvent $event */ public function updateScore(CustomContextEvent $event) { $certification = $event->getCertification(); $context = $certification->getContext(); $metrics = $certification->getMetrics(); //Define number of question automatically if (null === $context->getNumberOfQuestions()) { $context->setNumberOfQuestions($metrics->getQuestionCount()); } //Define required score dynamically if (null === $context->getRequiredScore()) { $context->setRequiredScore(floor($metrics->getQuestionCount() / 2)); } }
/** * @param CustomContextEvent $event */ public function removeCategories(CustomContextEvent $event) { $certification = $event->getCertification(); $context = $certification->getContext(); $metrics = $certification->getMetrics(); $excludedCategories = $context->getExcludeCategories(); if (empty($excludedCategories) || true !== $context->getAllowExcludeCategories()) { return; } foreach ($certification->getCategories() as $category) { if (!in_array($category->getName(), $excludedCategories)) { continue; } $metrics->decrement(Metrics::CATEGORY); foreach ($category->getQuestions() as $question) { $metrics->decrement(Metrics::QUESTION); $metrics->decrement(Metrics::ANSWER, count($question->getAnswers())); } $certification->removeCategory($category); } $event->setCertification($certification); }