ynh_extension_meeo/controllers/ApiController.php

118 lines
4 KiB
PHP
Raw Permalink Normal View History

<?php
namespace YesWiki\Meeo\Controller;
2024-07-29 17:28:09 +00:00
include_once "includes/email.inc.php";
include_once "includes/email.inc.php";
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use YesWiki\Core\ApiResponse;
use YesWiki\Core\Controller\AuthController;
use YesWiki\Core\YesWikiController;
use YesWiki\Meeo\Controle\Controle;
2024-07-29 16:50:23 +00:00
use YesWiki\Meeo\Service\AbsenceManager;
use YesWiki\Meeo\Service\EleveManager;
use YesWiki\Meeo\Service\NoteManager;
class ApiController extends YesWikiController
{
private $redirectParams;
2024-08-03 09:56:26 +00:00
public function __construct() {
}
/**
* @Route("/api/meeo/eleves",methods={"POST"},options={"acl":{"public"}})
*/
public function eleveUpdate(Request $request) {
2024-08-03 09:56:26 +00:00
$params = $this->getService(ParameterBagInterface::class);
$redirectParams = $params->get('meeo')['redirect'];
$eleveController = $this->getService(EleveManager::class);
$content = $request->getContent();
parse_str($content, $parameters);
$datas = [];
foreach ($parameters as $cle => $valeur) {
$clef_action = explode('_', $cle);
if ($clef_action[1] == 'classe' && $valeur != 'aucune') {
2024-07-27 13:22:09 +00:00
$eleve = $eleveController->getEleve($clef_action[0]);
// echo var_dump($valeur);
$eleve->setClasse($valeur);
echo var_dump($eleve);
$datas[] = $eleveController->updateEleve($eleve);
}
if ($clef_action[1] == 'del') {
$eleveController->del($clef_action[0]);
}
}
2024-07-28 09:14:51 +00:00
// return new ApiResponse($data);
2024-08-03 09:56:26 +00:00
return $this->wiki->redirect($redirectParams['eleveUpdate'], 200);
}
/**
* @Route("/api/meeo/controle",methods={"POST"},options={"acl":{"public"}})
*/
2024-07-27 15:19:40 +00:00
public function controle(Request $request) {
2024-08-03 09:56:26 +00:00
$params = $this->getService(ParameterBagInterface::class);
$redirectParams = $params->get('meeo')['redirect'];
$noteManager = $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);
2024-09-11 06:47:50 +00:00
$controle = new Controle($parameters['intitule'], $parameters['matiere'], $parameters['max'], $parameters['coef'], $eleves);
$controle->createNotes($noteManager);
2024-07-28 09:14:51 +00:00
// return new ApiResponse($controle);
2024-08-03 09:56:26 +00:00
return $this->wiki->redirect($redirectParams['controle'], 200);
}
2024-07-28 09:14:51 +00:00
/**
* @Route("/api/meeo/absence",methods={"POST"},options={"acl":{"public"}})
*/
public function absence(Request $request) {
2024-08-03 09:56:26 +00:00
$params = $this->getService(ParameterBagInterface::class);
$redirectParams = $params->get('meeo')['redirect'];
2024-07-28 09:14:51 +00:00
$content = $request->getContent();
parse_str($content, $parameters);
2024-07-29 16:50:23 +00:00
// Créer l'absence dans bazar
$eleve = $this->getService(EleveManager::class)->getEleve($parameters['eleve']);
$absenceManager = $this->getService(AbsenceManager::class);
$absence = $absenceManager->create($eleve, $parameters['date_debut_absence'], $parameters['date_fin_absence'], $parameters['justification']);
2024-07-29 16:50:23 +00:00
// Récupération de l'expéditeur
2024-07-29 17:28:09 +00:00
$expediteur = $this->getService(AuthController::class)->getLoggedUser();
// echo "Expediteur : ".var_dump($expediteur)."\n";
2024-07-29 16:50:23 +00:00
2024-09-04 14:07:57 +00:00
foreach ($eleve->getParentEmails() as $destinataire) {
echo "Envoyer à : ".$destinataire."\n";
// Génération du rendu du mail
$body = $this->render("@meeo/eleve_creer_absence.twig", [
'eleve' => $eleve,
'absence' => $parameters
]);
// echo $body;
// Envoi de mail à la personne qui a été absente
if (!send_mail($expediteur['email'], $expediteur['name'], $destinataire, "Absence", $body, $body))
echo "Erreur d'envoie de mail";
}
// return new ApiResponse($parameters);
return $this->wiki->redirect($redirectParams['absence'], 200);
2024-07-28 09:14:51 +00:00
}
}