Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ Journal des modifications 13.1.0 ------ - Admission : nouveau format de fichier unique CSV des futurs doctorants/apprenants (importable par Pégase). - Association d'individu à un membre de jury : si un acteur existe déjà avec le même individu et le même rôle pas besoin d'en créer un nouveau. - [FIX] Plantage lors de la suppression d'un dossier d'admission : toutes les données liées n'étaient pas supprimées correctement au préalable. - [FIX] Plantage lors de la suppression d'une association d'individu à un membre de jury en l'absence de directeur de thèse. Loading module/Admission/src/Admission/Controller/AdmissionController.php +1 −2 Original line number Diff line number Diff line Loading @@ -1028,14 +1028,13 @@ class AdmissionController extends AdmissionAbstractController //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); $this->admissionExporter->exportToZip([$admisCSV], $zipFilename); }catch (Exception $e){ throw new RuntimeException("Un problème est survenu lors de la génération du ZIP",0,$e); } Loading module/Admission/src/Admission/Service/Exporter/Admission/AdmissionExporter.php +122 −48 Original line number Diff line number Diff line Loading @@ -11,9 +11,13 @@ use RuntimeException; use UnicaenApp\View\Model\CsvModel; use ZipArchive; class AdmissionExporter{ class AdmissionExporter { use TransmissionServiceAwareTrait; private const origine_admission1 = 'ED'; private const code_regime_inscription1 = 'REG006'; public function exportToZip(array $csvs, string $zipFilename): ZipArchive { // Création de l'archive ZIP Loading Loading @@ -56,32 +60,96 @@ class AdmissionExporter{ return $content; } public function exportAdmisCSV($admissions): CsvModel /** * @param Admission[] $admissions */ public function exportAdmisCSV(array $admissions): CsvModel { //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' $headers = [ 'sexe', 'nom_naissance', 'nom_usage', 'prenom', 'prenom2', 'prenom3', 'date_naissance', 'code_commune_naissance', 'libelle_commune_naissance_etranger', 'code_pays_naissance', 'code_nationalite', 'ine', 'adresse_code_pays', 'adresse_ligne1_etage', 'adresse_ligne2_batiment', 'adresse_ligne3_voie', 'adresse_ligne4_complement', 'adresse_ligne5_etranger', 'adresse_code_postal', 'adresse_code_commune', 'numero_telephone1', 'numero_telephone2', 'mail', // 'origine_admission1', 'code_voeu1', 'code_periode1', 'annee_concours1', 'code_regime_inscription1', 'code_profil_specifique1', 'code_cursus_amenage_sise1', 'origine_admission2', 'annee_concours2', 'code_voeu2', 'code_periode2', 'code_regime_inscription2', 'code_profil_specifique2', 'code_cursus_amenage_sise2', 'origine_admission3', 'annee_concours3', 'code_voeu3', 'code_periode3', 'code_regime_inscription3', 'code_profil_specifique3', 'code_cursus_amenage_sise3', 'origine_admission4', 'annee_concours4', 'code_voeu4', 'code_periode4', 'code_regime_inscription4', 'code_profil_specifique4', 'code_cursus_amenage_sise4', 'origine_admission5', 'annee_concours5', 'code_voeu5', 'code_periode5', 'code_regime_inscription5', 'code_profil_specifique5', 'code_cursus_amenage_sise5', ]; $records = []; /** @var Admission $admission */ foreach ($admissions as $admission) { $entry = []; /** @var Transmission $transmission */ $transmission = $this->transmissionService->getRepository()->findOneBy(["admission" => $admission]); /** @var Etudiant $etudiant */ $etudiant = $admission->getEtudiant()->first(); if ($sexe = $admission->getIndividu()->getCivilite()) { $sexe = rtrim($sexe, '.') === "M" ? "M" : "F"; } $entry = []; $entry['sexe'] = $sexe; $entry['nom_famille'] = $etudiant->getNomFamille(); $entry['nom_usuel'] = $etudiant->getNomUsuel(); $entry['nom_naissance'] = $etudiant->getNomFamille(); $entry['nom_usage'] = $etudiant->getNomUsuel(); $entry['prenom'] = $etudiant->getPrenom(); $entry['prenom2'] = $etudiant->getPrenom2(); $entry['prenom3'] = $etudiant->getPrenom3(); $entry['date_naissance'] = $etudiant->getDateNaissanceFormat(); $entry['code_commune_naissance'] = $etudiant->getCodeCommuneNaissance(); $entry['libellé_commune_naissance'] = $etudiant->getLibelleCommuneNaissance(); $entry['libelle_commune_naissance_etranger'] = null; $entry['code_pays_naissance'] = $etudiant->getPaysNaissance() ? $etudiant->getPaysNaissance()->getCodePaysApogee() : null; $entry['code_nationalite'] = $etudiant->getNationalite() ? $etudiant->getNationalite()->getCodePaysApogee() : null; $entry['ine'] = $etudiant->getIne(); Loading @@ -90,47 +158,53 @@ class AdmissionExporter{ $entry['adresse_ligne2_batiment'] = $etudiant->getAdresseLigne2Batiment(); $entry['adresse_ligne3_voie'] = $etudiant->getAdresseLigne3voie(); $entry['adresse_ligne4_complement'] = $etudiant->getAdresseLigne4Complement(); $entry['adresse_ligne5_etranger'] = null; $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') . '_admis.csv'; $CSV = new CsvModel(); $CSV->setDelimiter(';'); $CSV->setEnclosure('"'); $CSV->setHeader($headers); $CSV->setData($records); $CSV->setFilename($filename); $entry['mail'] = $etudiant->getCourriel(); // $entry['origine_admission1'] = self::origine_admission1; $entry['code_voeu1'] = $transmission?->getCodeVoeu(); $entry['code_periode1'] = $transmission?->getCodePeriode(); $entry['annee_concours1'] = null; $entry['code_regime_inscription1'] = self::code_regime_inscription1; $entry['code_profil_specifique1'] = null; $entry['code_cursus_amenage_sise1'] = null; $entry['origine_admission2'] = null; $entry['annee_concours2'] = null; $entry['code_voeu2'] = null; $entry['code_periode2'] = null; $entry['code_regime_inscription2'] = null; $entry['code_profil_specifique2'] = null; $entry['code_cursus_amenage_sise2'] = null; $entry['origine_admission3'] = null; $entry['annee_concours3'] = null; $entry['code_voeu3'] = null; $entry['code_periode3'] = null; $entry['code_regime_inscription3'] = null; $entry['code_profil_specifique3'] = null; $entry['code_cursus_amenage_sise3'] = null; $entry['origine_admission4'] = null; $entry['annee_concours4'] = null; $entry['code_voeu4'] = null; $entry['code_periode4'] = null; $entry['code_regime_inscription4'] = null; $entry['code_profil_specifique4'] = null; $entry['code_cursus_amenage_sise4'] = null; $entry['origine_admission5'] = null; $entry['annee_concours5'] = null; $entry['code_voeu5'] = null; $entry['code_periode5'] = null; $entry['code_regime_inscription5'] = null; $entry['code_profil_specifique5'] = null; $entry['code_cursus_amenage_sise5'] = null; return $CSV; } public function exportAdmissionsCSV($admissions): CsvModel { //export $headers = ['numero_candidat', 'origine_admission', 'voie_admission', 'annee_concours', 'code_voeu', 'code_periode', 'code_sise', 'code_formation_psup', 'code_etablissement_affectation']; $records = []; /** @var Admission $admission */ foreach ($admissions as $admission) { /** @var Transmission $transmission */ $transmission = $this->transmissionService->getRepository()->findOneBy(["admission" => $admission]); $entry = []; $entry['origine_admission'] = "CO"; $entry['voie_admission'] = "D"; $entry['annee_concours'] = null; $entry['code_voeu'] = $transmission?->getCodeVoeu(); $entry['code_periode'] = $transmission?->getCodePeriode(); $entry['code_sise'] = null; $entry['code_formation_psup'] = null; $entry['code_etablissement_affectation'] = null; $records[] = $entry; } $filename = (new DateTime())->format('Ymd') . '_admissions.csv'; $filename = (new DateTime())->format('Ymd') . '_admis.csv'; $CSV = new CsvModel(); $CSV->setDelimiter(';'); $CSV->setEnclosure('"'); Loading Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ Journal des modifications 13.1.0 ------ - Admission : nouveau format de fichier unique CSV des futurs doctorants/apprenants (importable par Pégase). - Association d'individu à un membre de jury : si un acteur existe déjà avec le même individu et le même rôle pas besoin d'en créer un nouveau. - [FIX] Plantage lors de la suppression d'un dossier d'admission : toutes les données liées n'étaient pas supprimées correctement au préalable. - [FIX] Plantage lors de la suppression d'une association d'individu à un membre de jury en l'absence de directeur de thèse. Loading
module/Admission/src/Admission/Controller/AdmissionController.php +1 −2 Original line number Diff line number Diff line Loading @@ -1028,14 +1028,13 @@ class AdmissionController extends AdmissionAbstractController //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); $this->admissionExporter->exportToZip([$admisCSV], $zipFilename); }catch (Exception $e){ throw new RuntimeException("Un problème est survenu lors de la génération du ZIP",0,$e); } Loading
module/Admission/src/Admission/Service/Exporter/Admission/AdmissionExporter.php +122 −48 Original line number Diff line number Diff line Loading @@ -11,9 +11,13 @@ use RuntimeException; use UnicaenApp\View\Model\CsvModel; use ZipArchive; class AdmissionExporter{ class AdmissionExporter { use TransmissionServiceAwareTrait; private const origine_admission1 = 'ED'; private const code_regime_inscription1 = 'REG006'; public function exportToZip(array $csvs, string $zipFilename): ZipArchive { // Création de l'archive ZIP Loading Loading @@ -56,32 +60,96 @@ class AdmissionExporter{ return $content; } public function exportAdmisCSV($admissions): CsvModel /** * @param Admission[] $admissions */ public function exportAdmisCSV(array $admissions): CsvModel { //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' $headers = [ 'sexe', 'nom_naissance', 'nom_usage', 'prenom', 'prenom2', 'prenom3', 'date_naissance', 'code_commune_naissance', 'libelle_commune_naissance_etranger', 'code_pays_naissance', 'code_nationalite', 'ine', 'adresse_code_pays', 'adresse_ligne1_etage', 'adresse_ligne2_batiment', 'adresse_ligne3_voie', 'adresse_ligne4_complement', 'adresse_ligne5_etranger', 'adresse_code_postal', 'adresse_code_commune', 'numero_telephone1', 'numero_telephone2', 'mail', // 'origine_admission1', 'code_voeu1', 'code_periode1', 'annee_concours1', 'code_regime_inscription1', 'code_profil_specifique1', 'code_cursus_amenage_sise1', 'origine_admission2', 'annee_concours2', 'code_voeu2', 'code_periode2', 'code_regime_inscription2', 'code_profil_specifique2', 'code_cursus_amenage_sise2', 'origine_admission3', 'annee_concours3', 'code_voeu3', 'code_periode3', 'code_regime_inscription3', 'code_profil_specifique3', 'code_cursus_amenage_sise3', 'origine_admission4', 'annee_concours4', 'code_voeu4', 'code_periode4', 'code_regime_inscription4', 'code_profil_specifique4', 'code_cursus_amenage_sise4', 'origine_admission5', 'annee_concours5', 'code_voeu5', 'code_periode5', 'code_regime_inscription5', 'code_profil_specifique5', 'code_cursus_amenage_sise5', ]; $records = []; /** @var Admission $admission */ foreach ($admissions as $admission) { $entry = []; /** @var Transmission $transmission */ $transmission = $this->transmissionService->getRepository()->findOneBy(["admission" => $admission]); /** @var Etudiant $etudiant */ $etudiant = $admission->getEtudiant()->first(); if ($sexe = $admission->getIndividu()->getCivilite()) { $sexe = rtrim($sexe, '.') === "M" ? "M" : "F"; } $entry = []; $entry['sexe'] = $sexe; $entry['nom_famille'] = $etudiant->getNomFamille(); $entry['nom_usuel'] = $etudiant->getNomUsuel(); $entry['nom_naissance'] = $etudiant->getNomFamille(); $entry['nom_usage'] = $etudiant->getNomUsuel(); $entry['prenom'] = $etudiant->getPrenom(); $entry['prenom2'] = $etudiant->getPrenom2(); $entry['prenom3'] = $etudiant->getPrenom3(); $entry['date_naissance'] = $etudiant->getDateNaissanceFormat(); $entry['code_commune_naissance'] = $etudiant->getCodeCommuneNaissance(); $entry['libellé_commune_naissance'] = $etudiant->getLibelleCommuneNaissance(); $entry['libelle_commune_naissance_etranger'] = null; $entry['code_pays_naissance'] = $etudiant->getPaysNaissance() ? $etudiant->getPaysNaissance()->getCodePaysApogee() : null; $entry['code_nationalite'] = $etudiant->getNationalite() ? $etudiant->getNationalite()->getCodePaysApogee() : null; $entry['ine'] = $etudiant->getIne(); Loading @@ -90,47 +158,53 @@ class AdmissionExporter{ $entry['adresse_ligne2_batiment'] = $etudiant->getAdresseLigne2Batiment(); $entry['adresse_ligne3_voie'] = $etudiant->getAdresseLigne3voie(); $entry['adresse_ligne4_complement'] = $etudiant->getAdresseLigne4Complement(); $entry['adresse_ligne5_etranger'] = null; $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') . '_admis.csv'; $CSV = new CsvModel(); $CSV->setDelimiter(';'); $CSV->setEnclosure('"'); $CSV->setHeader($headers); $CSV->setData($records); $CSV->setFilename($filename); $entry['mail'] = $etudiant->getCourriel(); // $entry['origine_admission1'] = self::origine_admission1; $entry['code_voeu1'] = $transmission?->getCodeVoeu(); $entry['code_periode1'] = $transmission?->getCodePeriode(); $entry['annee_concours1'] = null; $entry['code_regime_inscription1'] = self::code_regime_inscription1; $entry['code_profil_specifique1'] = null; $entry['code_cursus_amenage_sise1'] = null; $entry['origine_admission2'] = null; $entry['annee_concours2'] = null; $entry['code_voeu2'] = null; $entry['code_periode2'] = null; $entry['code_regime_inscription2'] = null; $entry['code_profil_specifique2'] = null; $entry['code_cursus_amenage_sise2'] = null; $entry['origine_admission3'] = null; $entry['annee_concours3'] = null; $entry['code_voeu3'] = null; $entry['code_periode3'] = null; $entry['code_regime_inscription3'] = null; $entry['code_profil_specifique3'] = null; $entry['code_cursus_amenage_sise3'] = null; $entry['origine_admission4'] = null; $entry['annee_concours4'] = null; $entry['code_voeu4'] = null; $entry['code_periode4'] = null; $entry['code_regime_inscription4'] = null; $entry['code_profil_specifique4'] = null; $entry['code_cursus_amenage_sise4'] = null; $entry['origine_admission5'] = null; $entry['annee_concours5'] = null; $entry['code_voeu5'] = null; $entry['code_periode5'] = null; $entry['code_regime_inscription5'] = null; $entry['code_profil_specifique5'] = null; $entry['code_cursus_amenage_sise5'] = null; return $CSV; } public function exportAdmissionsCSV($admissions): CsvModel { //export $headers = ['numero_candidat', 'origine_admission', 'voie_admission', 'annee_concours', 'code_voeu', 'code_periode', 'code_sise', 'code_formation_psup', 'code_etablissement_affectation']; $records = []; /** @var Admission $admission */ foreach ($admissions as $admission) { /** @var Transmission $transmission */ $transmission = $this->transmissionService->getRepository()->findOneBy(["admission" => $admission]); $entry = []; $entry['origine_admission'] = "CO"; $entry['voie_admission'] = "D"; $entry['annee_concours'] = null; $entry['code_voeu'] = $transmission?->getCodeVoeu(); $entry['code_periode'] = $transmission?->getCodePeriode(); $entry['code_sise'] = null; $entry['code_formation_psup'] = null; $entry['code_etablissement_affectation'] = null; $records[] = $entry; } $filename = (new DateTime())->format('Ymd') . '_admissions.csv'; $filename = (new DateTime())->format('Ymd') . '_admis.csv'; $CSV = new CsvModel(); $CSV->setDelimiter(';'); $CSV->setEnclosure('"'); Loading