Skip to content

Commit

Permalink
Create akademie kurs result page
Browse files Browse the repository at this point in the history
  • Loading branch information
Rayvented committed Dec 7, 2023
1 parent 5ac7da0 commit a2f5489
Show file tree
Hide file tree
Showing 16 changed files with 111 additions and 8 deletions.
5 changes: 5 additions & 0 deletions assets/styles/tailmater.css
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,7 @@ footer > ul > li {

.card-elevated {
@apply card bg-surface-100 flex shadow-lg;
@apply card bg-surface-100 flex shadow-lg;
}

.card-filled {
Expand All @@ -830,6 +831,10 @@ footer > ul > li {
}
}

.card-filled .btn:not(.btn-create) {
@apply bg-surface-200 hover:bg-surface-300;
}

form > fieldset > div > div .btn {
@apply !bg-surface-200 mt-5;
}
Expand Down
12 changes: 9 additions & 3 deletions src/Controller/ParticipationController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@
use App\Entity\Questionnaire;
use App\Entity\Team;
use App\Entity\User;
use App\Form\Type\Questionnaire\Question\DynamicQuestionType;
use App\Service\CurrentTeamService;
use Doctrine\ORM\EntityManagerInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;

Expand Down Expand Up @@ -72,15 +74,17 @@ public function continue(Participation $participation): RedirectResponse

#[Route(path: '/{id}/finish', name: '_finish', methods: ['GET', 'POST'])]
#[ParamConverter(data: 'participation', class: Participation::class, options: ['mapping' => ['id' => 'id']])]
public function finish(Participation $participation): RedirectResponse
public function finish(Participation $participation): Response
{
$this->evaluate($participation);
$this->removeParticipationAnswers($participation);

return $this->redirectToRoute('akademie');
return $this->render('questionnaire/result.html.twig', [
'participation' => $participation
]);
}

private function evaluate(Participation $participation): void
private function evaluate(Participation $participation): Participation
{
$questionnaire = $participation->getQuestionnaire();

Expand All @@ -102,6 +106,8 @@ private function evaluate(Participation $participation): void

$participation->setPassed($questionnaire->getPercentageToPass() <= ($achievedPoints/$overallPoints));
$participation->setState(ParticipationStateTypes::$FINISHED);

return $participation;
}

private function evaluateQuestion(Question $question, Participation $participation): bool {
Expand Down
2 changes: 1 addition & 1 deletion src/Controller/ParticipationQuestionController.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public function question(Participation $participation, Request $request): Respon
return $this->render(
view: self::$TEMPLATE_DIR . 'question.html.twig',
parameters: ['form' => $this->createForm(DynamicQuestionType::class, options: ['question' => $question]),
'question' => $question,],
'question' => $question, 'participation' => $participation],
);
}

Expand Down
4 changes: 4 additions & 0 deletions src/Controller/QuestionnaireController.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Contracts\Translation\TranslatorInterface;

#[Route(path: '/questionnaire', name: 'questionnaire')]
class QuestionnaireController extends BaseController
Expand All @@ -28,6 +29,7 @@ class QuestionnaireController extends BaseController
public function __construct(
private EntityManagerInterface $em,
private CurrentTeamService $currentTeamService,
private TranslatorInterface $translator
)
{
}
Expand Down Expand Up @@ -58,6 +60,7 @@ public function create(
[
'form' => $form,
'error' => $error,
'title' => $this->translator->trans(id: 'questionnaire.create', domain: 'questionnaire'),
],
);
}
Expand Down Expand Up @@ -88,6 +91,7 @@ public function edit(
[
'form' => $form,
'success' => $success??true,
'title' => $this->translator->trans(id: 'questionnaire.edit', domain: 'questionnaire'),
],
);
}
Expand Down
2 changes: 1 addition & 1 deletion templates/akademie/kurs.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
url: "{{ kurs.video }}",
loop: false,
{% if not buchung.abgeschlossen %}
controls: false,
controls: true,
title: false,
{% endif %}
responsive: true
Expand Down
12 changes: 10 additions & 2 deletions templates/questionnaire/participationQuestion/question.html.twig
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
{% extends 'base.html.twig' %}

{% block title %}
{{ question.label }}
{{ participation.academyBilling.kurs.title }}
{% endblock %}

{% block body %}
{{ form_start(form) }}
<fieldset>
{{ form_row( attribute(form, question.id)) }}
<h3 class="mb-5">{{ question.label }}</h3>
{% for answer in attribute(form, question.id).children %}
<div class="form-row-checkbox">
<div class="form-check">
{{ form_widget(answer) }}
{{ form_label(answer) }}
</div>
</div>
{% endfor %}
</fieldset>
{{ form_row(form.continue, {row_attr: {class: 'form-buttons'}}) }}
{{ form_end(form) }}
Expand Down
2 changes: 1 addition & 1 deletion templates/questionnaire/questionnaire/create.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{% trans_default_domain 'questionnaire' %}

{% block title %}
{{ title }}
{% trans %}questionnaire.create{% endtrans %}
{% endblock %}

{% block body %}
Expand Down
36 changes: 36 additions & 0 deletions templates/questionnaire/result.html.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{% extends 'base.html.twig' %}
{% trans_default_domain 'academy' %}

{% block title %}
{{ participation.academyBilling.kurs.title }}
{% endblock %}

{% block body %}
<div class="card-filled py-10">
{% if participation.passed %}
<svg viewBox="0 0 24 24" class="text-green-600 w-16 h-16 mx-auto my-6">
<path fill="currentColor"
d="M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm6.927,8.2-6.845,9.289a1.011,1.011,0,0,1-1.43.188L5.764,13.769a1,1,0,1,1,1.25-1.562l4.076,3.261,6.227-8.451A1,1,0,1,1,18.927,8.2Z">
</path>
</svg>
<div class="text-center">
<h2>{{ 'result.success.headline'|trans }}</h2>
<p class="mb-10">{{ 'result.success.description'|trans }}</p>
<a href="{{ path('akademie_kurs_zertifikat', {'id':participation.academyBilling.id}) }}" class="btn btn-create">
{{ 'result.success.button_cert'|trans }}
</a>
</div>
{% else %}
<div class="text-center">
<h2>{{ 'result.failed.headline'|trans }}</h2>
<p class="mb-10">{{ 'result.failed.description'|trans }}</p>
<a href="{{ path('participation_start', {'id': participation.id }) }}" class="btn">
{{ 'result.failed.button_retry'|trans }}
</a>
</div>
{% endif %}
<div class="text-center mt-5">
<a href="{{ path('akademie') }}" class="text-sm text-muted">&laquo; {{ 'result.button_back'|trans }}</a>
</div>
</div>
{% endblock %}
10 changes: 10 additions & 0 deletions translations/akademie/academy.de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,13 @@ certification:
Dieses Zertifikat wurde automatisch erstellt.<br>
Die Gültigkeit kann über die Buchungs ID: -- {billingId} -- überprüft werden.'
text: 'Hiermit bestätigen wir, dass {username} ({email}) den Kurs "{lessonTitle}" am {finishedAt} erfolgreich abgeschlossen hat.'
result:
success:
headline: Kurs bestanden
description: Sie haben die erforderliche Punktzahl erreicht und somit den Kurs erfolgreich abgeschlossen.
button_cert: Zertifikat downloaden
failed:
headline: Kurs nicht bestanden
description: Sie haben die erforderliche Punktzahl leider nicht erreicht und somit den Kurs nicht bestanden.
button_retry: Nochmal versuchen
button_back: Zurück zur Übersicht
10 changes: 10 additions & 0 deletions translations/akademie/academy.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,13 @@ certification:
title: Zertifikat für den Abschluss einen Datenschutzkurses von der Open-Datenschutz Akademie
disclaimer: ' Dieses Zertifikat wurde automatisch erstellt.<br> Die Gültigkeit kann über die Buchungs ID: -- {billingId} -- überprüft werden.'
text: 'Hiermit bestätigen wir, dass {username} ({email}) den Kurs "{lessonTitle}" am {finishedAt} erfolgreich abgeschlossen hat.'
result:
success:
headline: Kurs bestanden
description: Sie haben die erforderliche Punktzahl erreicht und somit den Kurs erfolgreich abgeschlossen.
button_cert: Zertifikat downloaden
failed:
headline: Kurs nicht bestanden
description: Sie haben die erforderliche Punktzahl leider nicht erreicht und somit den Kurs nicht bestanden.
button_retry: Nochmal versuchen
button_back: Zurück zur Übersicht
10 changes: 10 additions & 0 deletions translations/akademie/academy.ev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,13 @@ certification:
title: Zertifikat für den Abschluss einen Datenschutzkurses von der Open-Datenschutz Akademie
disclaimer: ' Dieses Zertifikat wurde automatisch erstellt.<br> Die Gültigkeit kann über die Buchungs ID: -- {billingId} -- überprüft werden.'
text: 'Hiermit bestätigen wir, dass {username} ({email}) den Kurs "{lessonTitle}" am {finishedAt} erfolgreich abgeschlossen hat.'
result:
success:
headline: Kurs bestanden
description: Sie haben die erforderliche Punktzahl erreicht und somit den Kurs erfolgreich abgeschlossen.
button_cert: Zertifikat downloaden
failed:
headline: Kurs nicht bestanden
description: Sie haben die erforderliche Punktzahl leider nicht erreicht und somit den Kurs nicht bestanden.
button_retry: Nochmal versuchen
button_back: Zurück zur Übersicht
10 changes: 10 additions & 0 deletions translations/akademie/academy.fr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,13 @@ certification:
title: Zertifikat für den Abschluss einen Datenschutzkurses von der Open-Datenschutz Akademie
disclaimer: ' Dieses Zertifikat wurde automatisch erstellt.<br> Die Gültigkeit kann über die Buchungs ID: -- {billingId} -- überprüft werden.'
text: 'Hiermit bestätigen wir, dass {username} ({email}) den Kurs "{lessonTitle}" am {finishedAt} erfolgreich abgeschlossen hat.'
result:
success:
headline: Kurs bestanden
description: Sie haben die erforderliche Punktzahl erreicht und somit den Kurs erfolgreich abgeschlossen.
button_cert: Zertifikat downloaden
failed:
headline: Kurs nicht bestanden
description: Sie haben die erforderliche Punktzahl leider nicht erreicht und somit den Kurs nicht bestanden.
button_retry: Nochmal versuchen
button_back: Zurück zur Übersicht
1 change: 1 addition & 0 deletions translations/questionnaire/questionnaire.de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ questionnaire:
description: 'Beschreibung'
words: 'Fragebögen'
create: 'Fragebogen hinzufügen'
edit: 'Fragebogen bearbeiten'
show: 'Fragebogen anzeigen'
percentageToPass: 'Benötigte Punktzahl zum Bestehen'
participation:
Expand Down
1 change: 1 addition & 0 deletions translations/questionnaire/questionnaire.en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ questionnaire:
description: 'Description'
words: 'Fragebögen'
create: 'Fragebogen hinzufügen'
edit: 'Fragebogen bearbeiten'
show: 'Fragebogen anzeigen'
percentageToPass: 'Benötigte Punktzahl zum Bestehen'
participation:
Expand Down
1 change: 1 addition & 0 deletions translations/questionnaire/questionnaire.ev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ questionnaire:
description: 'Beschreibung'
words: 'Fragebögen'
create: 'Fragebogen hinzufügen'
edit: 'Fragebogen bearbeiten'
show: 'Fragebogen anzeigen'
percentageToPass: 'Benötigte Punktzahl zum Bestehen'
participation:
Expand Down
1 change: 1 addition & 0 deletions translations/questionnaire/questionnaire.fr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ questionnaire:
description: 'Beschreibung'
words: 'Fragebögen'
create: 'Fragebogen hinzufügen'
edit: 'Fragebogen bearbeiten'
show: 'Fragebogen anzeigen'
percentageToPass: 'Benötigte Punktzahl zum Bestehen'
participation:
Expand Down

0 comments on commit a2f5489

Please sign in to comment.