Loading module/Admission/config/module.config.php +3 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ use Admission\Service\Document\DocumentService; use Admission\Service\Document\DocumentServiceFactory; use Admission\Service\Etudiant\EtudiantService; use Admission\Service\Etudiant\EtudiantServiceFactory; use Admission\Service\Exporter\Admission\AdmissionExporter; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporter; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporterFactory; use Admission\Service\Financement\FinancementService; Loading @@ -65,6 +66,7 @@ use Doctrine\ORM\Mapping\Driver\XmlDriver; use Doctrine\Persistence\Mapping\Driver\MappingDriverChain; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use Laminas\ServiceManager\Factory\InvokableFactory; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; Loading Loading @@ -421,6 +423,7 @@ return array( UrlService::class => UrlServiceFactory::class, RecapitulatifExporter::class => RecapitulatifExporterFactory::class, AdmissionExporter::class => InvokableFactory::class, ExtractionEmailRule::class => ExtractionEmailRuleFactory::class ], Loading module/Admission/src/Admission/Controller/AdmissionController.php +28 −49 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ use Admission\Service\Admission\AdmissionServiceAwareTrait; use Admission\Service\ConventionFormationDoctorale\ConventionFormationDoctoraleServiceAwareTrait; use Admission\Service\Document\DocumentServiceAwareTrait; use Admission\Service\Etudiant\EtudiantServiceAwareTrait; use Admission\Service\Exporter\Admission\AdmissionExporterAwareTrait; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporterAwareTrait; use Admission\Service\Financement\FinancementServiceAwareTrait; use Admission\Service\Inscription\InscriptionServiceAwareTrait; Loading @@ -49,7 +50,6 @@ use Notification\Service\NotifierServiceAwareTrait; use Structure\Service\Etablissement\EtablissementServiceAwareTrait; use UnicaenApp\Form\Fieldset\MultipageFormNavFieldset; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenApp\View\Model\CsvModel; class AdmissionController extends AdmissionAbstractController { Loading @@ -73,6 +73,7 @@ class AdmissionController extends AdmissionAbstractController { use ConventionFormationDoctoraleServiceAwareTrait; use RoleServiceAwareTrait; use AdmissionRechercheServiceAwareTrait; use AdmissionExporterAwareTrait; public function indexAction(): ViewModel|Response { Loading Loading @@ -691,7 +692,7 @@ class AdmissionController extends AdmissionAbstractController { return $navigationElement; } public function genererExportCsvAction(): Response|CsvModel public function genererExportCsvAction(): Response|JsonModel { $queryParams = $this->params()->fromQuery(); Loading @@ -717,53 +718,31 @@ class AdmissionController extends AdmissionAbstractController { ->setParameter('etat', Etat::CODE_VALIDE); $listing = $qb->getQuery()->getResult(); //export $headers = ['numero_candidat', 'sexe', 'nom_famille', 'nom_usuel', 'prenom', 'prenom2', 'prenom3', 'date_naissance', 'code_commune_naissance', 'libellé_commune_naissance', 'code_pays_naissance', 'code_nationalite', 'ine', 'adresse_code_pays', 'adresse_ligne1_etage', 'adresse_ligne2_batiment', 'adresse_ligne3_voie', 'adresse_ligne4_complement', 'adresse_code_postal', 'adresse_code_commune', 'adresse_cp_ville_etranger', 'numero_telephone1', 'numero_telephone2', 'courriel' ]; $records = []; /** @var Admission $admission */ foreach ($listing as $admission) { $entry = []; /** @var Etudiant $etudiant */ $etudiant = $admission->getEtudiant()->first(); $entry['numero_candidat'] = $etudiant->getNumeroCandidat(); $entry['sexe'] = rtrim($etudiant->getSexe(), '.'); $entry['nom_famille'] = $etudiant->getNomFamille(); $entry['nom_usuel'] = $etudiant->getNomUsuel(); $entry['prenom'] = $etudiant->getPrenom(); $entry['prenom2'] = $etudiant->getPrenom2(); $entry['prenom3'] = $etudiant->getPrenom3(); $entry['date_naissance'] = $etudiant->getDateNaissance(); $entry['code_commune_naissance'] = $etudiant->getCodeCommuneNaissance(); $entry['libellé_commune_naissance'] = $etudiant->getLibelleCommuneNaissance(); $entry['code_pays_naissance'] = $etudiant->getPaysNaissance() ? $etudiant->getPaysNaissance()->getCodePaysApogee() : null; $entry['code_nationalite'] = $etudiant->getNationalite() ? $etudiant->getNationalite()->getCodePaysApogee() : null; $entry['ine'] = $etudiant->getIne(); $entry['adresse_code_pays'] = $etudiant->getAdresseCodePays() ? $etudiant->getAdresseCodePays()->getCodePaysApogee() : null; $entry['adresse_ligne1_etage'] = $etudiant->getAdresseLigne1Etage(); $entry['adresse_ligne2_batiment'] = $etudiant->getAdresseLigne2Batiment(); $entry['adresse_ligne3_voie'] = $etudiant->getAdresseLigne3voie(); $entry['adresse_ligne4_complement'] = $etudiant->getAdresseLigne4Complement(); $entry['adresse_code_postal'] = $etudiant->getAdresseCodePostal(); $entry['adresse_code_commune'] = $etudiant->getAdresseCodeCommune(); $entry['adresse_cp_ville_etranger'] = $etudiant->getAdresseCpVilleEtrangere(); $entry['numero_telephone1'] = (string)$etudiant->getNumeroTelephone1(); $entry['numero_telephone2'] = (string)$etudiant->getNumeroTelephone2(); $entry['courriel'] = $etudiant->getCourriel(); $records[] = $entry; } $filename = (new DateTime())->format('Ymd') . '_admissions.csv'; $CSV = new CsvModel(); $CSV->setDelimiter(';'); $CSV->setEnclosure('"'); $CSV->setHeader($headers); $CSV->setData($records); $CSV->setFilename($filename); return $CSV; //Génération des CSV $admisCSV = $this->admissionExporter->exportAdmisCSV($listing); $admissionsCSV = $this->admissionExporter->exportAdmissionsCSV($listing); //Création du fichier ZIP $zipFilename = tempnam(sys_get_temp_dir(), 'export_') . '.zip'; $filenameZIP = (new DateTime())->format('Ymd') . '_export_module_admissions.zip'; try{ $this->admissionExporter->exportToZip([$admisCSV, $admissionsCSV], $zipFilename); }catch (Exception $e){ throw new RuntimeException("Un problème est survenu lors de la génération du ZIP",0,$e); } $response = $this->getResponse(); $response->getHeaders()->addHeaders([ 'Content-Type' => 'application/zip', 'Content-Disposition' => 'attachment; filename="'.$filenameZIP.'"', 'Content-Length' => filesize($zipFilename) ]); $response->setContent(file_get_contents($zipFilename)); unlink($zipFilename); return $response; } /** TEMPLATES RENDERER *******************************************************************************/ Loading module/Admission/src/Admission/Controller/AdmissionControllerFactory.php +3 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ use Admission\Service\Admission\AdmissionService; use Admission\Service\ConventionFormationDoctorale\ConventionFormationDoctoraleService; use Admission\Service\Document\DocumentService; use Admission\Service\Etudiant\EtudiantService; use Admission\Service\Exporter\Admission\AdmissionExporter; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporter; use Admission\Service\Financement\FinancementService; use Admission\Service\Inscription\InscriptionService; Loading Loading @@ -58,6 +59,7 @@ class AdmissionControllerFactory implements FactoryInterface $conventionFormationDoctoraleService = $container->get(ConventionFormationDoctoraleService::class); $roleService = $container->get(RoleService::class); $admissionRechercheService = $container->get(AdmissionRechercheService::class); $admissionExporter = $container->get(AdmissionExporter::class); /** @var AdmissionOperationRule $admissionOperationRule */ $admissionOperationRule = $container->get(AdmissionOperationRule::class); Loading Loading @@ -88,6 +90,7 @@ class AdmissionControllerFactory implements FactoryInterface $controller->setConventionFormationDoctoraleService($conventionFormationDoctoraleService); $controller->setRoleService($roleService); $controller->setAdmissionRechercheService($admissionRechercheService); $controller->setAdmissionExporter($admissionExporter); return $controller; } Loading module/Admission/src/Admission/Controller/AdmissionRechercheController.php +1 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ class AdmissionRechercheController extends AbstractController implements SearchC 'text' => $text, 'routeName' => $this->routeName, 'operations' => $operations, 'role' => $this->userContextService->getSelectedIdentityRole(), 'individu' => $individu, 'admission' => $admission, 'inputIndividu' => $inputIndividu, Loading module/Admission/src/Admission/Hydrator/Financement/FinancementHydrator.php +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ class FinancementHydrator extends DoctrineObject $data["detailContratDoctoral"] = null; } if(isset($data["financement"]) && !empty($data["financement"])){ if(isset($data["financement"]) && empty($data["financement"])){ $data["financement"] = null; } Loading Loading
module/Admission/config/module.config.php +3 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ use Admission\Service\Document\DocumentService; use Admission\Service\Document\DocumentServiceFactory; use Admission\Service\Etudiant\EtudiantService; use Admission\Service\Etudiant\EtudiantServiceFactory; use Admission\Service\Exporter\Admission\AdmissionExporter; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporter; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporterFactory; use Admission\Service\Financement\FinancementService; Loading @@ -65,6 +66,7 @@ use Doctrine\ORM\Mapping\Driver\XmlDriver; use Doctrine\Persistence\Mapping\Driver\MappingDriverChain; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use Laminas\ServiceManager\Factory\InvokableFactory; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; Loading Loading @@ -421,6 +423,7 @@ return array( UrlService::class => UrlServiceFactory::class, RecapitulatifExporter::class => RecapitulatifExporterFactory::class, AdmissionExporter::class => InvokableFactory::class, ExtractionEmailRule::class => ExtractionEmailRuleFactory::class ], Loading
module/Admission/src/Admission/Controller/AdmissionController.php +28 −49 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ use Admission\Service\Admission\AdmissionServiceAwareTrait; use Admission\Service\ConventionFormationDoctorale\ConventionFormationDoctoraleServiceAwareTrait; use Admission\Service\Document\DocumentServiceAwareTrait; use Admission\Service\Etudiant\EtudiantServiceAwareTrait; use Admission\Service\Exporter\Admission\AdmissionExporterAwareTrait; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporterAwareTrait; use Admission\Service\Financement\FinancementServiceAwareTrait; use Admission\Service\Inscription\InscriptionServiceAwareTrait; Loading @@ -49,7 +50,6 @@ use Notification\Service\NotifierServiceAwareTrait; use Structure\Service\Etablissement\EtablissementServiceAwareTrait; use UnicaenApp\Form\Fieldset\MultipageFormNavFieldset; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenApp\View\Model\CsvModel; class AdmissionController extends AdmissionAbstractController { Loading @@ -73,6 +73,7 @@ class AdmissionController extends AdmissionAbstractController { use ConventionFormationDoctoraleServiceAwareTrait; use RoleServiceAwareTrait; use AdmissionRechercheServiceAwareTrait; use AdmissionExporterAwareTrait; public function indexAction(): ViewModel|Response { Loading Loading @@ -691,7 +692,7 @@ class AdmissionController extends AdmissionAbstractController { return $navigationElement; } public function genererExportCsvAction(): Response|CsvModel public function genererExportCsvAction(): Response|JsonModel { $queryParams = $this->params()->fromQuery(); Loading @@ -717,53 +718,31 @@ class AdmissionController extends AdmissionAbstractController { ->setParameter('etat', Etat::CODE_VALIDE); $listing = $qb->getQuery()->getResult(); //export $headers = ['numero_candidat', 'sexe', 'nom_famille', 'nom_usuel', 'prenom', 'prenom2', 'prenom3', 'date_naissance', 'code_commune_naissance', 'libellé_commune_naissance', 'code_pays_naissance', 'code_nationalite', 'ine', 'adresse_code_pays', 'adresse_ligne1_etage', 'adresse_ligne2_batiment', 'adresse_ligne3_voie', 'adresse_ligne4_complement', 'adresse_code_postal', 'adresse_code_commune', 'adresse_cp_ville_etranger', 'numero_telephone1', 'numero_telephone2', 'courriel' ]; $records = []; /** @var Admission $admission */ foreach ($listing as $admission) { $entry = []; /** @var Etudiant $etudiant */ $etudiant = $admission->getEtudiant()->first(); $entry['numero_candidat'] = $etudiant->getNumeroCandidat(); $entry['sexe'] = rtrim($etudiant->getSexe(), '.'); $entry['nom_famille'] = $etudiant->getNomFamille(); $entry['nom_usuel'] = $etudiant->getNomUsuel(); $entry['prenom'] = $etudiant->getPrenom(); $entry['prenom2'] = $etudiant->getPrenom2(); $entry['prenom3'] = $etudiant->getPrenom3(); $entry['date_naissance'] = $etudiant->getDateNaissance(); $entry['code_commune_naissance'] = $etudiant->getCodeCommuneNaissance(); $entry['libellé_commune_naissance'] = $etudiant->getLibelleCommuneNaissance(); $entry['code_pays_naissance'] = $etudiant->getPaysNaissance() ? $etudiant->getPaysNaissance()->getCodePaysApogee() : null; $entry['code_nationalite'] = $etudiant->getNationalite() ? $etudiant->getNationalite()->getCodePaysApogee() : null; $entry['ine'] = $etudiant->getIne(); $entry['adresse_code_pays'] = $etudiant->getAdresseCodePays() ? $etudiant->getAdresseCodePays()->getCodePaysApogee() : null; $entry['adresse_ligne1_etage'] = $etudiant->getAdresseLigne1Etage(); $entry['adresse_ligne2_batiment'] = $etudiant->getAdresseLigne2Batiment(); $entry['adresse_ligne3_voie'] = $etudiant->getAdresseLigne3voie(); $entry['adresse_ligne4_complement'] = $etudiant->getAdresseLigne4Complement(); $entry['adresse_code_postal'] = $etudiant->getAdresseCodePostal(); $entry['adresse_code_commune'] = $etudiant->getAdresseCodeCommune(); $entry['adresse_cp_ville_etranger'] = $etudiant->getAdresseCpVilleEtrangere(); $entry['numero_telephone1'] = (string)$etudiant->getNumeroTelephone1(); $entry['numero_telephone2'] = (string)$etudiant->getNumeroTelephone2(); $entry['courriel'] = $etudiant->getCourriel(); $records[] = $entry; } $filename = (new DateTime())->format('Ymd') . '_admissions.csv'; $CSV = new CsvModel(); $CSV->setDelimiter(';'); $CSV->setEnclosure('"'); $CSV->setHeader($headers); $CSV->setData($records); $CSV->setFilename($filename); return $CSV; //Génération des CSV $admisCSV = $this->admissionExporter->exportAdmisCSV($listing); $admissionsCSV = $this->admissionExporter->exportAdmissionsCSV($listing); //Création du fichier ZIP $zipFilename = tempnam(sys_get_temp_dir(), 'export_') . '.zip'; $filenameZIP = (new DateTime())->format('Ymd') . '_export_module_admissions.zip'; try{ $this->admissionExporter->exportToZip([$admisCSV, $admissionsCSV], $zipFilename); }catch (Exception $e){ throw new RuntimeException("Un problème est survenu lors de la génération du ZIP",0,$e); } $response = $this->getResponse(); $response->getHeaders()->addHeaders([ 'Content-Type' => 'application/zip', 'Content-Disposition' => 'attachment; filename="'.$filenameZIP.'"', 'Content-Length' => filesize($zipFilename) ]); $response->setContent(file_get_contents($zipFilename)); unlink($zipFilename); return $response; } /** TEMPLATES RENDERER *******************************************************************************/ Loading
module/Admission/src/Admission/Controller/AdmissionControllerFactory.php +3 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ use Admission\Service\Admission\AdmissionService; use Admission\Service\ConventionFormationDoctorale\ConventionFormationDoctoraleService; use Admission\Service\Document\DocumentService; use Admission\Service\Etudiant\EtudiantService; use Admission\Service\Exporter\Admission\AdmissionExporter; use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporter; use Admission\Service\Financement\FinancementService; use Admission\Service\Inscription\InscriptionService; Loading Loading @@ -58,6 +59,7 @@ class AdmissionControllerFactory implements FactoryInterface $conventionFormationDoctoraleService = $container->get(ConventionFormationDoctoraleService::class); $roleService = $container->get(RoleService::class); $admissionRechercheService = $container->get(AdmissionRechercheService::class); $admissionExporter = $container->get(AdmissionExporter::class); /** @var AdmissionOperationRule $admissionOperationRule */ $admissionOperationRule = $container->get(AdmissionOperationRule::class); Loading Loading @@ -88,6 +90,7 @@ class AdmissionControllerFactory implements FactoryInterface $controller->setConventionFormationDoctoraleService($conventionFormationDoctoraleService); $controller->setRoleService($roleService); $controller->setAdmissionRechercheService($admissionRechercheService); $controller->setAdmissionExporter($admissionExporter); return $controller; } Loading
module/Admission/src/Admission/Controller/AdmissionRechercheController.php +1 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ class AdmissionRechercheController extends AbstractController implements SearchC 'text' => $text, 'routeName' => $this->routeName, 'operations' => $operations, 'role' => $this->userContextService->getSelectedIdentityRole(), 'individu' => $individu, 'admission' => $admission, 'inputIndividu' => $inputIndividu, Loading
module/Admission/src/Admission/Hydrator/Financement/FinancementHydrator.php +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ class FinancementHydrator extends DoctrineObject $data["detailContratDoctoral"] = null; } if(isset($data["financement"]) && !empty($data["financement"])){ if(isset($data["financement"]) && empty($data["financement"])){ $data["financement"] = null; } Loading