diff --git a/module/ExportRh/config/module.config.php b/module/ExportRh/config/module.config.php index bc0eea02340dbce14d0c3dd2732ea7ac8e4ccafa..460ea395bae9a07354efdcc507be43bb3b405699 100644 --- a/module/ExportRh/config/module.config.php +++ b/module/ExportRh/config/module.config.php @@ -45,6 +45,17 @@ return [ ], ], ], + 'ren' => [ + 'type' => 'Segment', + 'may_terminate' => false, + 'options' => [ + 'route' => '/:intervenant/ren', + 'defaults' => [ + 'controller' => Controller\ExportRhController::class, + 'action' => 'renouvellement', + ], + ], + ], 'administration' => [ 'type' => 'Literal', 'may_terminate' => true, @@ -120,7 +131,7 @@ return [ ], [ 'controller' => Controller\ExportRhController::class, - 'action' => ['exporter', 'prise-en-charge'], + 'action' => ['exporter', 'prise-en-charge', 'renouvellement'], 'privileges' => [Privileges::EXPORT_RH_SYNC], 'assertion' => ExportRhAssertion::class, diff --git a/module/ExportRh/src/Connecteur/Siham/SihamConnecteur.php b/module/ExportRh/src/Connecteur/Siham/SihamConnecteur.php index 4e3ea1e9064669af4f109ed7292003b569512931..ef51f20330850ab32b4a53f74dda967e25f550dc 100644 --- a/module/ExportRh/src/Connecteur/Siham/SihamConnecteur.php +++ b/module/ExportRh/src/Connecteur/Siham/SihamConnecteur.php @@ -266,6 +266,56 @@ class SihamConnecteur implements ConnecteurRhInterface + public function renouvellerIntervenantRH(\Application\Entity\Db\Intervenant $intervenant, $datas): ?string + { + try { + /* Récupération du dossier de l'intervenant */ + $dossierIntervenant = $this->getServiceDossier()->getByIntervenant($intervenant); + + /* Récupération du dossier de l'intervenant */ + $dossierIntervenant = $this->getServiceDossier()->getByIntervenant($intervenant); + + /*POSITION ADMINISTRATIVE*/ + $position[] = + ['dateEffetPosition' => $datas['connecteurForm']['anneeUniversitaire'], + 'position' => $datas['connecteurForm']['position']]; + + /*STATUT*/ + $statut[] = + ['dateEffetStatut' => $datas['connecteurForm']['anneeUniversitaire'], + 'statut' => $datas['connecteurForm']['statut']]; + + /*MODALITE SERVICE*/ + $service[] = + ['dateEffetModalite' => $datas['connecteurForm']['anneeUniversitaire'], + 'modalite' => $datas['connecteurForm']['modaliteService']]; + + + $params = [ + 'categorieEntree' => 'ACTIVE', + 'dateRenouvellement' => $datas['connecteurForm']['anneeUniversitaire'], + 'emploi' => $datas['connecteurForm']['emploi'], + 'listeModalitesServices' => $service, + 'listeStatuts' => $statut, + + 'listePositions' => $position, + 'motifEntree' => 'REN', + 'matricule' => $intervenant->getCodeRh(), + 'temoinValidite' => '1', + 'UO' => $datas['connecteurForm']['affectation'], + ]; + + $matricule = $this->siham->renouvellementAgent($params); + + + return $matricule; + } catch (SihamException $e) { + throw new \Exception($e->getMessage()); + } + } + + + public function recupererListeUO(): ?array { /*On récupére les UO de type composante*/ diff --git a/module/ExportRh/src/Controller/ExportRhController.php b/module/ExportRh/src/Controller/ExportRhController.php index 97ecd0875d50acafd8990057a2783219b8841890..9d8c77a35ba5568a98cd49c85e1f051c2ee8bd48 100644 --- a/module/ExportRh/src/Controller/ExportRhController.php +++ b/module/ExportRh/src/Controller/ExportRhController.php @@ -74,8 +74,12 @@ class ExportRhController extends AbstractController { /* Initialisation */ - $role = $this->getServiceContext()->getSelectedIdentityRole(); - $intervenant = $role->getIntervenant() ?: $this->getEvent()->getParam('intervenant'); + $role = $this->getServiceContext()->getSelectedIdentityRole(); + $intervenant = $role->getIntervenant() ?: $this->getEvent()->getParam('intervenant'); + $intervenantRh = ''; + $form = ''; + $nameConnecteur = ''; + $affectationFonctionnelle = ''; if (!$intervenant) { throw new \LogicException('Intervenant non précisé ou inexistant'); @@ -95,27 +99,33 @@ class ExportRhController extends AbstractController * Etape 4 : Si il a une affectation en cours alors on propose uniquement la mise à jour des données personnelles * Etape 5 : Si il n'a pas encore d'affectation on propose alors un renouvellement de l'intervenant */ - - $intervenantRh = $this->exportRhService->getIntervenantRh($intervenant); - - if ($intervenantRh) { - //On a trouvé un intervenant dans le SI RH - $affectationEnCours = $this->exportRhService->getAffectationEnCours($intervenant); - //On regarde si il a une affectation en cours pour l'année courante si oui alors on propose uniquement une synchronisation des données personnelles - $renouvellement = true; - if (!empty($affectationEnCours)) { - //Si non on propose un renouvellement de l'intervenant SI RH - $renouvellement = false; + try { + $intervenantRh = $this->exportRhService->getIntervenantRh($intervenant); + if (!empty($intervenantRh)) { + //On a trouvé un intervenant dans le SI RH + $affectationEnCours = $this->exportRhService->getAffectationEnCours($intervenant); + //On regarde si il a une affectation en cours pour l'année courante si oui alors on propose uniquement une synchronisation des données personnelles + $renouvellement = true; + if (!empty($affectationEnCours)) { + foreach ($affectationEnCours as $affectation) //Si non on propose un renouvellement de l'intervenant SI RH + { + if ($affectation->codeTypeRattachement == 'FUN') { + $affectationFonctionnelle = $affectation; + $renouvellement = false; + } + } + } + } else { + $priseEnCharge = true; } - } else { - $priseEnCharge = true; - } - - $form = $this->getExportRhForm(); - $nameConnecteur = $this->exportRhService->getConnecteurName(); - + $nameConnecteur = $this->exportRhService->getConnecteurName(); + $form = $this->getExportRhForm(); + } catch (SihamException $e) { + $this->flashMessenger()->addErrorMessage($e->getMessage()); + } + return compact('typeIntervenant', 'intervenant', @@ -125,7 +135,8 @@ class ExportRhController extends AbstractController 'form', 'renouvellement', 'priseEnCharge', - 'nameConnecteur'); + 'nameConnecteur', + 'affectationFonctionnelle'); } @@ -157,4 +168,30 @@ class ExportRhController extends AbstractController return $this->redirect()->toRoute('intervenant/exporter', [], [], true); } + + + public function renouvellementAction() + { + try { + if ($this->getRequest()->isPost()) { + $intervenant = $this->getEvent()->getParam('intervenant'); + if (!$intervenant) { + throw new \LogicException('Intervenant non précisé ou inexistant'); + } + + $posts = $this->getRequest()->getPost(); + $result = $this->exportRhService->renouvellementIntervenantRh($intervenant, $posts); + if ($result !== false) { + $this->flashMessenger()->addSuccessMessage('succes du renouvellement matricule : ' . $result); + } else { + $this->flashMessenger()->addErrorMessage('Probleme de renouvellement'); + } + } + } catch (\Exception $e) { + $this->flashMessenger()->addErrorMessage($e->getMessage()); + } + + + return $this->redirect()->toRoute('intervenant/exporter', [], [], true); + } } diff --git a/module/ExportRh/src/Service/ExportRhService.php b/module/ExportRh/src/Service/ExportRhService.php index 9e4916ffe97d6f3e12c9c0b77752c31819310a52..767def32b7b9a13d0913049ad25ff71ae00475b7 100644 --- a/module/ExportRh/src/Service/ExportRhService.php +++ b/module/ExportRh/src/Service/ExportRhService.php @@ -91,8 +91,7 @@ class ExportRhService extends AbstractService public function getAffectationEnCours($intervenant) { $affectation = $this->connecteur->recupererAffectationEnCours($intervenant); - var_dump($affectation); - die; + return $affectation; } @@ -141,6 +140,13 @@ class ExportRhService extends AbstractService + public function renouvellementIntervenantRh(Intervenant $intervenant, $datas) + { + return $this->connecteur->renouvellerIntervenantRH($intervenant, $datas); + } + + + public function getIntervenantRHParamsDescription(): array { $desc = [ diff --git a/module/ExportRh/view/export-rh/export-rh/exporter.phtml b/module/ExportRh/view/export-rh/export-rh/exporter.phtml index 9f4036eee57f3e05503f1f7603e69fe90706b8a4..ea80448395e3474086d54aa570813d6695f79dde 100755 --- a/module/ExportRh/view/export-rh/export-rh/exporter.phtml +++ b/module/ExportRh/view/export-rh/export-rh/exporter.phtml @@ -5,13 +5,19 @@ * @var \Application\Entity\Db\IntervenantDossier $intervenantDossier */ -$form->prepare(); -$generiqueFieldset = $form->get('generiqueFieldset'); -$connecteurFieldset = $form->get('connecteurForm'); +if ($priseEnCharge) { + $action = 'intervenant/pec'; +} elseif ($renouvellement) { + $action = 'intervenant/ren'; +} else { + $action = 'intervenant/ren'; +} ?> <br/> +<?php echo $this->messenger()->addCurrentMessagesFromFlashMessenger()->addMessagesFromFlashMessenger(); ?> + <div class="messenger alert alert-warning"> <?php if ($typeIntervenant == 'P'): ?> @@ -21,143 +27,164 @@ $connecteurFieldset = $form->get('connecteurForm'); <?php elseif (empty($intervenantRh)): ?> <?php endif; ?> </div> -<?php echo $this->messenger()->addCurrentMessagesFromFlashMessenger()->addMessagesFromFlashMessenger(); ?> - -<form class="no-intranavigation" action="<?= $this->url('intervenant/pec', ['intervenant' => $intervenant->getId()]) ?>" method="post"> - <!--Partie générique du formulaire--> - <div class="panel panel-default"> - <div class="panel-heading">Récapitulatif des données personnelles</div> - <div class="panel-body"> - <? if (empty($intervenantRh)): ?> - <p>L'intervenant <?= $intervenantDossier->getPrenom() . ' ' . $intervenantDossier->getNomUsuel() ?> n'a pas été trouvé dans le SI RH. Vous pouvez si vous le souhaiter prendre en charge cette intervenant avec les données de son dossier, résumées ci-dessous :</p> - <table class="table"> - <thead> - <tr> - <th>Champs</th> - <th>Données</th> - - </tr> - </thead> - <tbody> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('nomUsuel')); ?> - <?= $this->formLabel($generiqueFieldset->get('nomUsuel')) ?> : - </td> - <td><?= $intervenantDossier->getNomUsuel() ?></td> - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('prenom')); ?> - <?= $this->formLabel($generiqueFieldset->get('prenom')) ?> : - </td> - <td><?= $intervenantDossier->getPrenom() ?></td> - - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('dateNaissance')); ?> - <?= $this->formLabel($generiqueFieldset->get('dateNaissance')) ?> : - </td> - <td><?= $intervenantDossier->getDateNaissance()->format('d/m/Y') ?></td> - - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('nationalite')); ?> - <?= $this->formLabel($generiqueFieldset->get('nationalite')) ?> : - </td> - <td><?= $intervenantDossier->getPaysNationalite()->getLibelle() ?></td> - </tr> - - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('adressePrincipale')); ?> - <?= $this->formLabel($generiqueFieldset->get('adressePrincipale')) ?> : - </td> - <td> - <?php - $adresse = ''; - $adresse .= (!empty($intervenantDossier->getAdresseNumero())) ? $intervenantDossier->getAdresseNumero() . ' ' : ''; - $adresse .= (!empty($intervenantDossier->getAdresseNumeroCompl())) ? $intervenantDossier->getAdresseNumeroCompl() . ' ' : ''; - $adresse .= (!empty($intervenantDossier->getAdresseVoirie())) ? $intervenantDossier->getAdresseVoirie() . ' ' : ''; - $adresse .= (!empty($intervenantDossier->getAdresseVoie())) ? $intervenantDossier->getAdresseVoie() . ' ' : ''; - $adresse .= (!empty($intervenantDossier->getAdressePrecisions())) ? '<br/>' . $intervenantDossier->getAdressePrecisions() . ' ' : ''; - $adresse .= '<br/>'; - $adresse .= $intervenantDossier->getAdresseCodePostal() . ' ' . $intervenantDossier->getAdresseCommune(); - echo $adresse; - ?> - </td> - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('telPro')); ?> - <?= $this->formLabel($generiqueFieldset->get('telPro')) ?> : - </td> - <td><?= $intervenantDossier->getTelPro() ?></td> - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('telPerso')); ?> - <?= $this->formLabel($generiqueFieldset->get('telPerso')) ?> : - </td> - <td><?= $intervenantDossier->getTelPerso() ?></td> - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('emailPro')); ?> - <?= $this->formLabel($generiqueFieldset->get('emailPro')) ?> : - </td> - <td><?= $intervenantDossier->getEmailPro() ?></td> - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('emailPerso')); ?> - <?= $this->formLabel($generiqueFieldset->get('emailPerso')) ?> : - </td> - <td><?= $intervenantDossier->getEmailPerso() ?></td> - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('numeroInsee')); ?> - <?= $this->formLabel($generiqueFieldset->get('numeroInsee')) ?> : - </td> - <td><?= $intervenantDossier->getNumeroInsee() ?></td> - - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('iban')); ?> - <?= $this->formLabel($generiqueFieldset->get('iban')) ?> : - </td> - <td><?= $intervenantDossier->getIBAN() ?></td> - </tr> - <tr> - <td> - <?= $this->formCheckbox($generiqueFieldset->get('bic')); ?> - <?= $this->formLabel($generiqueFieldset->get('bic')) ?> : - </td> - <td><?= $intervenantDossier->getBIC() ?></td> - </tr> - </tbody> - </table> - +<?php if (!empty($form)): ?> + <?php + $form->prepare(); + $generiqueFieldset = $form->get('generiqueFieldset'); + $connecteurFieldset = $form->get('connecteurForm'); + ?> + + <form class="no-intranavigation" action="<?= $this->url($action, ['intervenant' => $intervenant->getId()]) ?>" method="post"> + <!--Partie générique du formulaire--> + <div class="panel panel-default"> + <div class="panel-heading">Récapitulatif des données personnelles</div> + <div class="panel-body"> + <?php if (empty($intervenantRh)): ?> + <p>L'intervenant <?= $intervenantDossier->getPrenom() . ' ' . $intervenantDossier->getNomUsuel() ?> n'a pas été trouvé dans le SI RH. Vous pouvez si vous le souhaiter prendre en charge cette intervenant avec les données de son dossier, résumées ci-dessous :</p> + <?php else: ?> + <?php if (!empty($affectationFonctionnelle)): ?> + <p>L'intervenant <?= $intervenantDossier->getPrenom() . ' ' . $intervenantDossier->getNomUsuel() ?> est bien dans le <?= $nameConnecteur ?>. Il possède déjà actuellement une affectation pour l'année universitaire en cours. Vous pouvez mettre à jour ses données personnelles si + vous le souhaitez avec le bouton synchronisation ci-dessous.</p> + <?php else: ?> + <p>L'intervenant <?= $intervenantDossier->getPrenom() . ' ' . $intervenantDossier->getNomUsuel() ?> est bien dans le <?= $nameConnecteur ?>.Il ne possède pas encore d'affectation pour l'année en cours. Vous pouvez le renouveller pour cette année à l'aide du formulaire + ci-dessous.</p> + <?php endif; ?> + <?php endif; ?> + + <table class="table"> + <thead> + <tr> + <th>Champs</th> + <th>Données</th> + + </tr> + </thead> + <tbody> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('nomUsuel')); ?> + <?= $this->formLabel($generiqueFieldset->get('nomUsuel')) ?> : + </td> + <td><?= $intervenantDossier->getNomUsuel() ?></td> + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('prenom')); ?> + <?= $this->formLabel($generiqueFieldset->get('prenom')) ?> : + </td> + <td><?= $intervenantDossier->getPrenom() ?></td> + + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('dateNaissance')); ?> + <?= $this->formLabel($generiqueFieldset->get('dateNaissance')) ?> : + </td> + <td><?= $intervenantDossier->getDateNaissance()->format('d/m/Y') ?></td> + + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('nationalite')); ?> + <?= $this->formLabel($generiqueFieldset->get('nationalite')) ?> : + </td> + <td><?= $intervenantDossier->getPaysNationalite()->getLibelle() ?></td> + </tr> + + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('adressePrincipale')); ?> + <?= $this->formLabel($generiqueFieldset->get('adressePrincipale')) ?> : + </td> + <td> + <?php + $adresse = ''; + $adresse .= (!empty($intervenantDossier->getAdresseNumero())) ? $intervenantDossier->getAdresseNumero() . ' ' : ''; + $adresse .= (!empty($intervenantDossier->getAdresseNumeroCompl())) ? $intervenantDossier->getAdresseNumeroCompl() . ' ' : ''; + $adresse .= (!empty($intervenantDossier->getAdresseVoirie())) ? $intervenantDossier->getAdresseVoirie() . ' ' : ''; + $adresse .= (!empty($intervenantDossier->getAdresseVoie())) ? $intervenantDossier->getAdresseVoie() . ' ' : ''; + $adresse .= (!empty($intervenantDossier->getAdressePrecisions())) ? '<br/>' . $intervenantDossier->getAdressePrecisions() . ' ' : ''; + $adresse .= '<br/>'; + $adresse .= $intervenantDossier->getAdresseCodePostal() . ' ' . $intervenantDossier->getAdresseCommune(); + echo $adresse; + ?> + </td> + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('telPro')); ?> + <?= $this->formLabel($generiqueFieldset->get('telPro')) ?> : + </td> + <td><?= $intervenantDossier->getTelPro() ?></td> + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('telPerso')); ?> + <?= $this->formLabel($generiqueFieldset->get('telPerso')) ?> : + </td> + <td><?= $intervenantDossier->getTelPerso() ?></td> + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('emailPro')); ?> + <?= $this->formLabel($generiqueFieldset->get('emailPro')) ?> : + </td> + <td><?= $intervenantDossier->getEmailPro() ?></td> + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('emailPerso')); ?> + <?= $this->formLabel($generiqueFieldset->get('emailPerso')) ?> : + </td> + <td><?= $intervenantDossier->getEmailPerso() ?></td> + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('numeroInsee')); ?> + <?= $this->formLabel($generiqueFieldset->get('numeroInsee')) ?> : + </td> + <td><?= $intervenantDossier->getNumeroInsee() ?></td> + + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('iban')); ?> + <?= $this->formLabel($generiqueFieldset->get('iban')) ?> : + </td> + <td><?= $intervenantDossier->getIBAN() ?></td> + </tr> + <tr> + <td> + <?= $this->formCheckbox($generiqueFieldset->get('bic')); ?> + <?= $this->formLabel($generiqueFieldset->get('bic')) ?> : + </td> + <td><?= $intervenantDossier->getBIC() ?></td> + </tr> + </tbody> + </table> + + </div> </div> - </div> - <?php if ($priseEnCharge): ?> - - <!-- Formulaire spécifique au connecteur--> - <?php - echo $this->partial('export-rh/export-rh/' . $nameConnecteur . '/connecteurForm', compact('connecteurFieldset')); - ?> - - <p> - <input type="submit" value="Prendre en charge l'agent"/> - </p> - <?php elseif ($renouvellement): ?> - renouvellement - - <?php endif; ?> - -</form> + <?php if ($priseEnCharge): ?> + + <!-- Formulaire spécifique au connecteur--> + <?php + echo $this->partial('export-rh/export-rh/' . $nameConnecteur . '/connecteurForm', compact('connecteurFieldset')); + ?> + + <p> + <input type="submit" value="Prendre en charge l'agent"/> + </p> + <?php elseif ($renouvellement): ?> + <?php + echo $this->partial('export-rh/export-rh/' . $nameConnecteur . '/connecteurForm', compact('connecteurFieldset')); + ?> + + <p> + <input type="submit" value="Renouveller l'agent"/> + </p> + <?php endif; ?> + + </form> +<?php endif; ?> diff --git a/module/UnicaenSiham/src/UnicaenSiham/Service/Siham.php b/module/UnicaenSiham/src/UnicaenSiham/Service/Siham.php index 0804cc65db92bd5e2034e95eda086ef7b4ff0068..c9c77c4876cc1556eb5d7049ce4a3b7611757d5f 100644 --- a/module/UnicaenSiham/src/UnicaenSiham/Service/Siham.php +++ b/module/UnicaenSiham/src/UnicaenSiham/Service/Siham.php @@ -251,7 +251,7 @@ class Siham $paramsWS = ['ParamListAgent' => [ 'codeEtablissement' => $this->codeEtablissement, 'dateFinObservation' => (isset($params['dateFinObservation'])) ? $params['dateFinObservation'] : '', - 'dateObservation' => '',//(isset($params['dateObservation'])) ? $params['dateObservation'] : '', + 'dateObservation' => (isset($params['dateObservation'])) ? $params['dateObservation'] : '', 'listeMatricules' => $listeMatricules, ]]; @@ -259,7 +259,7 @@ class Siham try { $client = $this->sihamClient->getClient('DossierAgentWebService'); $result = $client->RecupDonneesAdministratives($paramsWS); - + if (isset($result->return)) { return $result->return; @@ -353,8 +353,7 @@ class Siham $paramsWS['ParamModifDP']['dateDebut'] = $agent->getDateDebutAdresse(); $client = $this->sihamClient->getClient('DossierAgentWebService'); $result = $client->ModifDonneesPersonnelles($paramsWS); - var_dump($this->sihamClient->getLastRequest()); - die; + if (isset($result->return)) { if ($result->return->statutMAJ == 1) { return true; @@ -730,6 +729,124 @@ class Siham + public function renouvellementAgent(array $params) + { + + //Traitement des modalités de services + $listeModalitesServices = []; + + if (!empty($params['listeModalitesServices'])) { + foreach ($params['listeModalitesServices'] as $modalite) { + $listeModalitesServices[] = ['dateEffetModalite' => $modalite['dateEffetModalite'], + 'modalite' => $modalite['modalite']]; + } + } else { + $listeModalitesServices[] = ['dateEffetModalite' => '', + 'modalite' => '']; + } + + //Traitement du statut + + $listeStatuts = []; + + if (!empty($params['listeStatuts'])) { + foreach ($params['listeStatuts'] as $statut) { + $listeStatuts[] = ['dateEffetStatut' => $statut['dateEffetStatut'], + 'statut' => $statut['statut']]; + } + } else { + $listeStatuts[] = ['dateEffetStatut' => '', + 'statut' => '']; + } + + //Traitement du carriere + $listeCarriere[] = ['dateEffetCarriere' => (isset($params['dateRenouvellement'])) ? strtoupper($params['dateRenouvellement']) : '', + 'grade' => '0000', + 'qualiteStatutaire' => 'N', + 'temoinValidite' => '1']; + + //Traitement des positions + + $listePositions = []; + + + if (!empty($params['listePositions'])) { + foreach ($params['listePositions'] as $position) { + $listePositions[] = [ + 'dateEffetPosition' => (isset($position['dateEffetPosition'])) ? strtoupper($position['dateEffetPosition']) : '', + 'position' => (isset($position['position'])) ? strtoupper($position['position']) : '', + 'temoinValidite' => (isset($position['temoinValidite'])) ? strtoupper($position['temoinValidite']) : '', + ]; + } + } else { + $listePositions[] = [ + 'dateEffetPosition' => '', + 'position' => '', + 'temoinValidite' => '', + ]; + } + + $paramsWS = ['ParamRA' => [ + 'categorieEntree' => (isset($params['categorieEntree'])) ? strtoupper($params['categorieEntree']) : '', + 'codeAdministration' => $this->codeAdministration, + 'codeEtablissement' => $this->codeEtablissement, + 'dateRenouvellement' => (isset($params['dateRenouvellement'])) ? strtoupper($params['dateRenouvellement']) : '', + 'emploi' => (isset($params['emploi'])) ? strtoupper($params['emploi']) : '', + 'listeCarriere' => $listeCarriere, + 'listeModalitesServices' => $listeModalitesServices, + 'listeStatuts' => $listeStatuts, + 'listePositions' => $listePositions, + 'motifEntree' => (isset($params['motifEntree'])) ? strtoupper($params['motifEntree']) : self::SIHAM_MOTIF_ENTREE_DEFAULT, + 'matricule' => (isset($params['matricule'])) ? strtoupper($params['matricule']) : '', + 'temoinValidite' => (isset($params['temoinValidite'])) ? strtoupper($params['temoinValidite']) : '', + 'UO' => (isset($params['UO'])) ? strtoupper($params['UO']) : '', + + ]]; + + + try { + + $client = $this->sihamClient->getClient('PECWebService'); + $result = $client->RenouvellementAgent($paramsWS); + + + if ($result->return->statut == 'ERREUR_GENERALE') { + $messageErreur = ''; + $messageWarning = ''; + if (!empty($result->return->listeAnomaliesWebServices)) { + if (is_array($result->return->listeAnomaliesWebServices)) { + foreach ($result->return->listeAnomaliesWebServices as $anomalie) { + if (isset($anomalie->anomalie)) { + if (strpos($anomalie->anomalie, 'Erreur') === 0) { + $messageErreur .= $anomalie->anomalie . '<br/>'; + } + } + } + } else { + if (isset($result->return->listeAnomaliesWebServices->anomalie)) { + if (strpos($result->return->listeAnomaliesWebServices->anomalie, 'Erreur') === 0) { + $messageErreur .= $result->return->listeAnomaliesWebServices->anomalie . '<br/>'; + } + } + } + } + //Traitement du message d'erreur spécifique à la PEC + throw new SihamException($messageErreur, 0); + } elseif ($result->return->statut == 'MAJ OK' && !empty($result->return->matricule)) { + return $result->return->matricule; + } else { + throw new SihamException('Erreur non identifié, veuillez vous rapprocher du support informatique', 0); + } + } catch (\SoapFault $e) { + + throw new SihamException($e->faultstring, 0, $e); + } + + return false; + } + + + /** * @param $params array Paramètres du webservice : codeRepertoire *