From 573d5753b21fd3f6f56f2cbc7b1f277ca8491134 Mon Sep 17 00:00:00 2001 From: mckmonster Date: Sat, 20 Jul 2024 20:58:35 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20fonction=20permettant=20de=20cr?= =?UTF-8?q?=C3=A9er=20les=20notes=20=C3=A0=20partir=20d'un=20bulletin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commands/CreateFormsCommand.php | 2 +- controllers/ApiController.php | 25 ++++++++++++++++++ libs/controle/Controle.lib.php | 45 ++++++++++++++++++++++++++------- services/NoteManager.php | 18 ++++++++++--- templates/edu_controle.twig | 14 +++++----- 5 files changed, 83 insertions(+), 21 deletions(-) diff --git a/commands/CreateFormsCommand.php b/commands/CreateFormsCommand.php index 2d17ce5..71beed5 100644 --- a/commands/CreateFormsCommand.php +++ b/commands/CreateFormsCommand.php @@ -117,7 +117,7 @@ EOT, "bn_template" => <<wiki->redirect('?Eleves', 200); } + + /** + * @Route("/api/meeo/controle",methods={"POST"},options={"acl":{"public"}}) + */ + public function control(Request $request) { + $eleveController = $this->getService(NoteManager::class); + $content = $request->getContent(); + + parse_str($content, $parameters); + + include 'tools/meeo/libs/controle/Controle.lib.php'; + + $eleves = array_filter($parameters, function($key) { + return strpos($key, 'eleve_') === 0; + }, ARRAY_FILTER_USE_KEY); + + $controle = new Controle($parameters['intitule'], $parameters['matiere'], $parameters['coef'], $eleves); + + $eleveController->addNotes($controle->getNotes()); + + return new ApiResponse(['parameters' => $controle->getNotes()]); + // return $this->wiki->redirect('?Notes', 200); + } } \ No newline at end of file diff --git a/libs/controle/Controle.lib.php b/libs/controle/Controle.lib.php index 21c40bb..64f11d2 100644 --- a/libs/controle/Controle.lib.php +++ b/libs/controle/Controle.lib.php @@ -1,18 +1,45 @@ wiki = $wiki; + public function __construct($intitule, $matiere, $coef, $eleves) { $this->intitule = $intitule; $this->matiere = $matiere; $this->coef = $coef; + $this->eleves = $this->removePrefixFromKeys($eleves, "eleve_"); + } + + function removePrefixFromKeys($inputArray, $prefix) { + $outputArray = array(); + foreach ($inputArray as $key => $value) { + if (strpos($key, $prefix) === 0) { + $newKey = substr($key, strlen($prefix)); // Remove the prefix + $outputArray[$newKey] = $value; + } else { + $outputArray[$key] = $value; + } + } + return $outputArray; + } + + public function getNotes() { + $notes = []; + foreach ($this->eleves as $eleve => $note) { + $notes[] = [ + 'bf_titre' => "Note : ".$this->intitule." - ".$eleve." - ".$this->matiere, + 'bf_intitule' => $this->intitule, + 'listeListeMatierebf_matiere' => $this->matiere, + 'listefiche6bf_eleve' => $eleve, + 'bf_note' => $note, + 'bf_coef' => $this->coef, + ]; + }; + return $notes; } } \ No newline at end of file diff --git a/services/NoteManager.php b/services/NoteManager.php index 5250468..fac8787 100644 --- a/services/NoteManager.php +++ b/services/NoteManager.php @@ -16,6 +16,7 @@ class NoteManager { protected $entryManager; protected $listManager; protected $userManager; + protected $formId; public function __construct( Wiki $wiki, ParameterBagInterface $params, EntryManager $entryManager, ListManager $listManager, UserManager $userManager) { @@ -24,17 +25,19 @@ class NoteManager { $this->entryManager = $entryManager; $this->listManager = $listManager; $this->userManager = $userManager; + + $meeo_config = $this->params->get('meeo'); + $this->formId = $meeo_config['notesFormId']; } public function viewBulletins() { - $meeo_config = $this->params->get('meeo'); - $formId = $meeo_config['notesFormId']; + $eleveIdentifier = 'listefiche'.$meeo_config['elevesFormId'].'bf_eleve'; $groupeEE = $meeo_config['groupeEE']; if ( $this->userManager->isInGroup($groupeEE, admincheck: false) ) { $eleves = $this->entryManager->search(['formsIds' => $meeo_config['elevesFormId']]); - $entries = $this->entryManager->search(['formsIds' => $formId]); + $entries = $this->entryManager->search(['formsIds' => $this->formId]); include 'tools/meeo/libs/bulletin/Bulletin.lib.php'; @@ -50,7 +53,7 @@ class NoteManager { "bulletins" => $bulletins, ]); } else { - $entries = $entryManager->search(['formsIds' => $formId]); + $entries = $entryManager->search(['formsIds' => $this->formId]); return $this->wiki->render('@meeo/eleve_notes.twig', [ "bulletin" => $bulletin, @@ -67,4 +70,11 @@ class NoteManager { // echo var_dump($classes); return $this->wiki->render('@meeo/edu_controle.twig', ['matieres' => $matieres['label'], 'classes' => $classes['label'], 'eleves' => $eleves]); } + + public function addNotes($notes) { + foreach ($notes as $note) { + $note['antispam'] = true; + $this->entryManager->create($this->formId, $note); + } + } } \ No newline at end of file diff --git a/templates/edu_controle.twig b/templates/edu_controle.twig index a4e9751..ca010fa 100644 --- a/templates/edu_controle.twig +++ b/templates/edu_controle.twig @@ -1,16 +1,16 @@ {{ include_javascript('tools/meeo/javascripts/edu_controle_filter.js') }} -
+
- +
- {% for clef, matiere in matieres %} {% endfor %} @@ -20,7 +20,7 @@
- {% for classe in classes %} {% endfor %} @@ -30,17 +30,17 @@
- +

Eleves

-
+
{% for eleve in eleves %} {% endfor %}