Skip to content
Snippets Groups Projects
Commit 01bd2b28 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Mise au point de la requête SOAP pour un renouvellement d'agent.

parent 0bc73cb7
No related branches found
No related tags found
No related merge requests found
......@@ -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,
......
......@@ -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*/
......
......@@ -76,6 +76,10 @@ class ExportRhController extends AbstractController
/* Initialisation */
$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,26 +99,32 @@ 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
*/
try {
$intervenantRh = $this->exportRhService->getIntervenantRh($intervenant);
if ($intervenantRh) {
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)) {
//Si non on propose un renouvellement de l'intervenant SI RH
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;
}
$form = $this->getExportRhForm();
$nameConnecteur = $this->exportRhService->getConnecteurName();
$form = $this->getExportRhForm();
} catch (SihamException $e) {
$this->flashMessenger()->addErrorMessage($e->getMessage());
}
return compact('typeIntervenant',
......@@ -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);
}
}
......@@ -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 = [
......
......@@ -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,15 +27,30 @@ $connecteurFieldset = $form->get('connecteurForm');
<?php elseif (empty($intervenantRh)): ?>
<?php endif; ?>
</div>
<?php echo $this->messenger()->addCurrentMessagesFromFlashMessenger()->addMessagesFromFlashMessenger(); ?>
<?php if (!empty($form)): ?>
<?php
$form->prepare();
$generiqueFieldset = $form->get('generiqueFieldset');
$connecteurFieldset = $form->get('connecteurForm');
?>
<form class="no-intranavigation" action="<?= $this->url('intervenant/pec', ['intervenant' => $intervenant->getId()]) ?>" method="post">
<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">
<? if (empty($intervenantRh)): ?>
<?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>
......@@ -155,9 +176,15 @@ $connecteurFieldset = $form->get('connecteurForm');
<input type="submit" value="Prendre en charge l'agent"/>
</p>
<?php elseif ($renouvellement): ?>
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; ?>
......@@ -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,
]];
......@@ -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
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment