SihamConnecteur.php 26.4 KB
Newer Older
1
2
3
4
<?php

namespace ExportRh\Connecteur\Siham;

5

6
7
use Application\Entity\Db\Intervenant;
use Application\Service\Traits\DossierServiceAwareTrait;
Antony Le Courtes's avatar
Antony Le Courtes committed
8
use ExportRh\Connecteur\ConnecteurRhInterface;
9
use ExportRh\Entity\IntervenantRh;
10
use ExportRh\Form\Fieldset\SihamFieldset;
11
use ExportRh\Service\ExportRhServiceAwareTrait;
12
use UnicaenApp\Util;
13
use UnicaenSiham\Exception\SihamException;
Antony Le Courtes's avatar
Antony Le Courtes committed
14
use UnicaenSiham\Service\Siham;
15
use Zend\Form\Fieldset;
16

17

Antony Le Courtes's avatar
Antony Le Courtes committed
18
class SihamConnecteur implements ConnecteurRhInterface
19
{
20
    use DossierServiceAwareTrait;
21
    use ExportRhServiceAwareTrait;
22

Antony Le Courtes's avatar
Antony Le Courtes committed
23
    public Siham $siham;
24
25


Antony Le Courtes's avatar
Antony Le Courtes committed
26
27

    public function __construct(Siham $siham)
28
    {
Antony Le Courtes's avatar
Antony Le Courtes committed
29
        $this->siham = $siham;
30
31
32
33
    }



34
    public function rechercherIntervenantRh($nomUsuel = '', $prenom = '', $insee = ''): array
35
    {
36
37
38
39
40
        $params = [
            'nomUsuel'    => $nomUsuel,
            'prenom'      => $prenom,
            'numeroInsee' => $insee,

Antony Le Courtes's avatar
Antony Le Courtes committed
41
42
        ];

43
        $listIntervenantRh = [];
44
        $result            = $this->siham->recupererListeAgents($params);
45
46
47
48
49
50
51
52
53

        if (!empty($result)) {
            foreach ($result as $v) {
                $intervenantRh = new IntervenantRh();
                $intervenantRh->setNomUsuel($v->getNomUsuel());
                $intervenantRh->setPrenom($v->getPrenom());
                $intervenantRh->setCodeRh($v->getMatricule());
                $dateNaissance = new \DateTime($v->getDateNaissance());
                $intervenantRh->setDateNaissance($dateNaissance);
Antony Le Courtes's avatar
Antony Le Courtes committed
54
                $intervenantRh->setNumeroInsee($v->getNumeroInseeDefinitif());
55
56
57
58
59
60
                $listIntervenantRh[] = $intervenantRh;
            }
        }


        return $listIntervenantRh;
Antony Le Courtes's avatar
Antony Le Courtes committed
61
62
63
64
    }



65
    public function recupererIntervenantRh(\Application\Entity\Db\Intervenant $intervenant): ?IntervenantRh
Antony Le Courtes's avatar
Antony Le Courtes committed
66
    {
Antony Le Courtes's avatar
Antony Le Courtes committed
67
68
69
        $agent  = null;
        $codeRh = $this->trouverCodeRhByInsee($intervenant);
        if (!empty($codeRh)) {
70
            $params =
Antony Le Courtes's avatar
Antony Le Courtes committed
71
                [
72
                    'listeMatricules' => [$codeRh],
Antony Le Courtes's avatar
Antony Le Courtes committed
73
                ];
74
75

            $agent = $this->siham->recupererDonneesPersonnellesAgent($params);
Antony Le Courtes's avatar
Antony Le Courtes committed
76
77
78
79
        }
        if (empty($agent)) {
            if (!empty($intervenant->getCodeRh())) {
                $codeRh = $intervenant->getCodeRh();
80
81
82
83
                $params =
                    [
                        'listeMatricules' => [$codeRh],
                    ];
84

85
86
                $agent = $this->siham->recupererDonneesPersonnellesAgent($params);
            }
87
88
        }

Antony Le Courtes's avatar
Antony Le Courtes committed
89

90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
        if (!empty($agent)) {
            $intervenantRh = new IntervenantRH();
            $intervenantRh->setNomUsuel($agent->getNomUsuel());
            $intervenantRh->setPrenom($agent->getPrenom());
            $intervenantRh->setTelPerso($agent->getTelephonePerso());
            $intervenantRh->setTelPersoDateDebut($agent->getTelephonePersoDateDebut());
            $intervenantRh->setTelPro($agent->getTelephonePro());
            $intervenantRh->setTelProDateDebut($agent->getTelephoneProDateDebut());
            $intervenantRh->setEmailPro($agent->getEmailPro());
            $intervenantRh->setEmailProDateDebut($agent->getEmailProDateDebut());
            $intervenantRh->setEmailPerso($agent->getEmailPerso());
            $intervenantRh->setEmailPersoDateDebut($agent->getEmailPersoDateDebut());
            $intervenantRh->setIBAN($agent->getIban());
            $intervenantRh->setBIC($agent->getBic());
            $intervenantRh->setCodeRh($agent->getMatricule());
            $intervenantRh->setAdresseNumero($agent->getNoVoieAdresse());
            $intervenantRh->setAdresseNumeroCompl(null);
            $intervenantRh->setAdresseVoirie(null);
            $intervenantRh->setAdresseVoie($agent->getNomVoieAdresse());
            $intervenantRh->setAdressePrecisions($agent->getComplementAdresse());
            $intervenantRh->setAdresseCodePostal($agent->getCodePostalAdresse());
            $intervenantRh->setAdresseCommune($agent->getBureauDistributeurAdresse());
            $intervenantRh->setAdresseDateDebut($agent->getDateDebutAdresse());


            return $intervenantRh;
Antony Le Courtes's avatar
Antony Le Courtes committed
116
117
        }

118
        return null;
Antony Le Courtes's avatar
Antony Le Courtes committed
119
120
121
122
    }



123
    public function recupererDonneesAdministrativesIntervenantRh(\Application\Entity\Db\Intervenant $intervenant): ?array
Antony Le Courtes's avatar
Antony Le Courtes committed
124
125
    {
        try {
126
            $codeRh = '';
Antony Le Courtes's avatar
Antony Le Courtes committed
127
128
129
130
            //On récupére le code RH par le INSEE
            $codeRh = $this->trouverCodeRhByInsee($intervenant);

            if (!empty($intervenant->getCodeRh()) && empty($codeRh)) {
Antony Le Courtes's avatar
Antony Le Courtes committed
131
                $codeRh = $intervenant->getCodeRh();
132
            }
Antony Le Courtes's avatar
Antony Le Courtes committed
133

134
            if (!empty($codeRh)) {
Antony Le Courtes's avatar
Antony Le Courtes committed
135
136
137
138

                $dateObservation = $intervenant->getAnnee()->getDateDebut();
                $params          =
                    [
139
140
141
                        'listeMatricules'    => [$codeRh],
                        'dateObservation'    => $intervenant->getAnnee()->getDateDebut()->format('Y-m-d'),
                        'dateFinObservation' => $intervenant->getAnnee()->getDateFin()->format('Y-m-d'),
Antony Le Courtes's avatar
Antony Le Courtes committed
142
143
144
145
146
                    ];


                $donneesAdministratives = $this->siham->recupererDonneesAdministrativeAgent($params);

147
                return (array)$donneesAdministratives;
Antony Le Courtes's avatar
Antony Le Courtes committed
148
149
150
151
152
153
154
155
156
157
            }

            return null;
        } catch (SihamException $e) {
            throw new \Exception($e->getMessage());
        }
    }



158
    public function recupererAffectationEnCoursIntervenantRh(\Application\Entity\Db\Intervenant $intervenant): ?array
Antony Le Courtes's avatar
Antony Le Courtes committed
159
    {
160
        $affectations           = [];
Antony Le Courtes's avatar
Antony Le Courtes committed
161
        $donneesAdministratives = $this->recupererDonneesAdministrativesIntervenantRh($intervenant);
162

163

164
165
        if (!empty($donneesAdministratives['listeAffectations']) || !empty($donneesAdministratives->listeAffectations)) {
            $listeAffectations = (isset($donneesAdministratives['listeAffectations'])) ? $donneesAdministratives['listeAffectations'] : $donneesAdministratives->listeAffectations;
166

167
168
169
            foreach ($listeAffectations as $affectation) {
                //On prend uniquement les affectations fonctionnelles
                if ($affectation->codeTypeRattachement == 'FUN') {
170
171
172
                    $dateDebutAffectation = new \DateTime($affectation->dateDebutAffectation);
                    $dateFinAffectation   = new \DateTime($affectation->dateFinAffectation);
                    $currentDate          = new \DateTime();
173
                    if ($currentDate > $dateDebutAffectation and $currentDate < $dateFinAffectation) {
174
175
                        $affectations[] = $affectation;
                    }
176
177
                }
            };
Antony Le Courtes's avatar
Antony Le Courtes committed
178
179
        }

180
181
182
183
184
        return $affectations;
    }



Antony Le Courtes's avatar
Antony Le Courtes committed
185
186
    public function recupererContratEnCoursIntervenantRh(Intervenant $intervenant): ?array
    {
187
        $contrats               = [];
Antony Le Courtes's avatar
Antony Le Courtes committed
188
189
        $donneesAdministratives = $this->recupererDonneesAdministrativesIntervenantRh($intervenant);

190

191
192
193
194
195
196
197
198
199
200
201
202
203
204
        if (!empty($donneesAdministratives['listeContrats']) || !empty($donneesAdministratives->listeContrats)) {
            $listeContrats = (isset($donneesAdministratives['listeContrats']) && is_array($donneesAdministratives['listeContrats'])) ? $donneesAdministratives['listeContrats'] : [$donneesAdministratives['listeContrats']];


            foreach ($listeContrats as $contrat) {

                $dateDebutContrat = new \DateTime($contrat->dateDebutContrat);
                $dateFinContrat   = new \DateTime($contrat->dateFinReelleContrat);
                $currentDate      = new \DateTime();
                if ($currentDate > $dateDebutContrat and $currentDate > $dateFinContrat) {
                    $contrats[] = $contrat;
                }
            }
        };
Antony Le Courtes's avatar
Antony Le Courtes committed
205

206
        return $contrats;
Antony Le Courtes's avatar
Antony Le Courtes committed
207
208
209
210
    }



Antony Le Courtes's avatar
divers    
Antony Le Courtes committed
211
    public function synchroniserDonneesPersonnellesIntervenantRh(\Application\Entity\Db\Intervenant $intervenant, $datas): bool
212
213
214
215
216
217
218
219
    {
        try {


            $intervenantRh      = $this->recupererIntervenantRh($intervenant);
            $dossierIntervenant = $this->getServiceDossier()->getByIntervenant($intervenant);

            //Synchronisation Tel pro
Antony Le Courtes's avatar
Antony Le Courtes committed
220
            if ($datas['generiqueFieldset']['telPro'] && !empty($dossierIntervenant->getTelPro())) {
221
222
223
224
225
226
227
228
229
230
                $params = [
                    'matricule' => $intervenantRh->getCodeRh(),
                    'numero'    => $dossierIntervenant->getTelPro(),
                    'dateDebut' => $intervenantRh->getTelProDateDebut(),
                ];

                $this->siham->modifierCoordonneesAgent($params, Siham::SIHAM_CODE_TYPOLOGIE_FIXE_PRO);
            }

            //Synchronisation Tel perso
Antony Le Courtes's avatar
Antony Le Courtes committed
231
            if ($datas['generiqueFieldset']['telPerso'] && !empty($dossierIntervenant->getTelPerso())) {
232
233
234
235
236
237
238
239
240
241
                $params = [
                    'matricule' => $intervenantRh->getCodeRh(),
                    'numero'    => $dossierIntervenant->getTelPerso(),
                    'dateDebut' => $intervenantRh->getTelPersoDateDebut(),
                ];

                $this->siham->modifierCoordonneesAgent($params, Siham::SIHAM_CODE_TYPOLOGIE_PORTABLE_PERSO);
            }

            //Synchronisation email pro
Antony Le Courtes's avatar
Antony Le Courtes committed
242
            if ($datas['generiqueFieldset']['emailPro'] && !empty($dossierIntervenant->getEmailPro())) {
243
244
245
246
247
248
249
250
251
252
                $params = [
                    'matricule' => $intervenantRh->getCodeRh(),
                    'numero'    => $dossierIntervenant->getEmailPro(),
                    'dateDebut' => $intervenantRh->getEmailProDateDebut(),
                ];

                $this->siham->modifierCoordonneesAgent($params, Siham::SIHAM_CODE_TYPOLOGIE_EMAIL_PRO);
            }

            //Synchronisation email perso
Antony Le Courtes's avatar
Antony Le Courtes committed
253
            if ($datas['generiqueFieldset']['emailPerso'] && !empty($dossierIntervenant->getEmailPerso())) {
254
255
256
257
258
259
260
261
262
                $params = [
                    'matricule' => $intervenantRh->getCodeRh(),
                    'numero'    => $dossierIntervenant->getEmailPerso(),
                    'dateDebut' => $intervenantRh->getEmailPersoDateDebut(),
                ];

                $this->siham->modifierCoordonneesAgent($params, Siham::SIHAM_CODE_TYPOLOGIE_EMAIL_PERSO);
            }

263
264
265
266
267
268
269
270
            if ($datas['generiqueFieldset']['adressePrincipale']) {

                $adresse = '';
                $adresse .= (!empty($dossierIntervenant->getAdresseNumero())) ? $dossierIntervenant->getAdresseNumero() . ' ' : '';
                $adresse .= (!empty($dossierIntervenant->getAdresseNumeroCompl())) ? $dossierIntervenant->getAdresseNumeroCompl() . ' ' : '';
                $adresse .= (!empty($dossierIntervenant->getAdresseVoirie())) ? $dossierIntervenant->getAdresseVoirie() . ' ' : '';
                $adresse .= (!empty($dossierIntervenant->getAdresseVoie())) ? $dossierIntervenant->getAdresseVoie() . ' ' : '';
                $adresse .= (!empty($dossierIntervenant->getAdressePrecisions())) ? $dossierIntervenant->getAdressePrecisions() . ' ' : '';
271
272
                $adresse = Util::reduce($adresse);
                $adresse = str_replace('_', ' ', $adresse);
273
274
275
276
277
278


                $params = [
                    'matricule'          => $intervenantRh->getCodeRh(),
                    'dateDebut'          => $intervenantRh->getAdresseDateDebut(),
                    'bureauDistributeur' => $dossierIntervenant->getAdresseCommune(),
Antony Le Courtes's avatar
Antony Le Courtes committed
279
                    'complementAdresse'  => substr($adresse, 0, 37),
280
281
282
283
284
285
286
287
288
289
290
                    'noVoie'             => ' ',
                    'natureVoie'         => '',
                    'nomVoie'            => ' ',
                    'commune'            => $dossierIntervenant->getAdresseCommune(),
                    'codePostal'         => $dossierIntervenant->getAdresseCodePostal(),
                    'codePays'           => $dossierIntervenant->getAdressePays()->getCode(),

                ];

                $this->siham->modifierAdressePrincipaleAgent($params);
            }
291

292
293
294
295
296
297
298
299
300
301
302
303
304
            //Fait planter les WS SIHAM....
            /*if ($datas['generiqueFieldset']['iban']) {
                $anneeUniversitaire            = $this->getExportRhService()->getAnneeUniversitaireEnCours();
                $dateEffet                     = $anneeUniversitaire->getDateDebut()->format('Y-m-d');
                $coordonnees                   = $this->siham->formatCoordoonneesBancairesForSiham($dossierIntervenant->getIBAN(), $dossierIntervenant->getBIC());
                $coordonnees['dateDebBanque']  = $dateEffet;
                $coordonnees['temoinValidite'] = '1';
                $coordonnees['modePaiement']   = '25';
                $coordonneesBancaires[]        = $coordonnees;
                $this->siham->modifierCoordonnéesBancairesAgent($coordonneesBancaires);
                die;
            }*/

305
306

            return true;
307
308
        } catch
        (SihamException $e) {
309
310
            throw new \Exception($e->getMessage());
        }
Antony Le Courtes's avatar
Antony Le Courtes committed
311
312
313
314
    }



315
316
317
318
319
320
321
322
323
324
325
326
327
    public function trouverCodeRhByInsee(\Application\Entity\Db\Intervenant $intervenant): ?string
    {
        $intervenantDossier = $this->getServiceDossier()->getByIntervenant($intervenant);
        $numeroInsee        = (!empty($intervenant->getNumeroInsee())) ? $intervenant->getNumeroInsee() : $intervenantDossier->getNumeroInsee();

        $params =
            [
                'numeroInsee' => $numeroInsee,
            ];

        $listeAgents = $this->siham->recupererListeAgents($params);
        $agent       = current($listeAgents);

Antony Le Courtes's avatar
Antony Le Courtes committed
328

329
330
331
332
333
334
335
336
337
        if (!empty($agent)) {
            return $agent->getMatricule();
        }

        return null;
    }



338
    public function prendreEnChargeIntervenantRh(\Application\Entity\Db\Intervenant $intervenant, $datas): ?string
Antony Le Courtes's avatar
Antony Le Courtes committed
339
    {
340
341
342
343
344
345
346
        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);

347
348
            $anneeUniversitaire = $this->getExportRhService()->getAnneeUniversitaireEnCours();
            $dateEffet          = $anneeUniversitaire->getDateDebut()->format('Y-m-d');
349
            $dateFin            = $anneeUniversitaire->getDateFin()->format('Y-m-d');
350

Antony Le Courtes's avatar
Antony Le Courtes committed
351
352
353
354
355
356
357
            /*CARRIERE*/
            $carriere = [
                'dateEffetCarriere' => $dateEffet,
                'grade'             => '0000',
                'qualiteStatutaire' => 'N',
                'temoinValidite'    => 1,
            ];
358
359
360
361
362
363
364
365
            /*CONTRAT*/
            $contrat[] =
                ['dateDebutContrat'  => $dateEffet,
                 'dateFinContrat'    => $dateFin,
                 'natureContrat'     => 'CO',
                 'typeContrat'       => 'TC01',
                 'typeLienJuridique' => 'TL02',
                ];
366

367
368
            /*POSITION ADMINISTRATIVE*/
            $position[] =
369
                ['dateEffetPosition' => $dateEffet,
370
371
                 'dateFinPrevue'     => $dateFin,
                 'dateFinReelle'     => $dateFin,
372
373
374
375
                 'position'          => $datas['connecteurForm']['position']];

            /*STATUT*/
            $statut[] =
376
                ['dateEffetStatut' => $dateEffet,
377
378
379
380
                 'statut'          => $datas['connecteurForm']['statut']];

            /*MODALITE SERVICE*/
            $service[] =
381
                ['dateEffetModalite' => $dateEffet,
382
383
384
385
386
387
388
389
390
                 'modalite'          => $datas['connecteurForm']['modaliteService']];

            /*COORDONNEES POSTALES*/
            $adresse = '';
            $adresse .= (!empty($dossierIntervenant->getAdresseNumero())) ? $dossierIntervenant->getAdresseNumero() . ' ' : '';
            $adresse .= (!empty($dossierIntervenant->getAdresseNumeroCompl())) ? $dossierIntervenant->getAdresseNumeroCompl() . ' ' : '';
            $adresse .= (!empty($dossierIntervenant->getAdresseVoirie())) ? $dossierIntervenant->getAdresseVoirie() . ' ' : '';
            $adresse .= (!empty($dossierIntervenant->getAdresseVoie())) ? $dossierIntervenant->getAdresseVoie() . ' ' : '';
            $adresse .= (!empty($dossierIntervenant->getAdressePrecisions())) ? $dossierIntervenant->getAdressePrecisions() . ' ' : '';
391
392
393
            $adresse = Util::reduce($adresse);
            $adresse = str_replace('_', ' ', $adresse);

394
395
396
397
398
399
400

            $coordonneesPostales[] = [
                'bureauDistributeur' => $dossierIntervenant->getAdresseCommune(),
                'complementAdresse'  => $adresse,
                'commune'            => $dossierIntervenant->getAdresseCommune(),
                'codePostal'         => $dossierIntervenant->getAdresseCodePostal(),
                'codePays'           => $dossierIntervenant->getAdressePays()->getCode(),
401
                'debutAdresse'       => $dateEffet,
402
403
            ];

404
            /*COORDONNEES BANCAIRES*/
405
            $coordonnees                   = $this->siham->formatCoordoonneesBancairesForSiham($dossierIntervenant->getIBAN(), $dossierIntervenant->getBIC());
406
            $coordonnees['dateDebBanque']  = $dateEffet;
407
408
            $coordonnees['temoinValidite'] = '1';
            $coordonnees['modePaiement']   = '25';
409
            $coordonneesBancaires[]        = $coordonnees;
410

411

412
            $coordonneesTelMail[] = '';
413
            if (!empty($dossierIntervenant->getTelPro())) {
414
                $coordonneesTelMail[] = [
415
                    'dateDebutTel' => $dateEffet,
416
417
418
419
                    'numero'       => $dossierIntervenant->getTelPro(),
                    'typeNumero'   => Siham::SIHAM_CODE_TYPOLOGIE_FIXE_PRO,
                ];
            }
420
            if (!empty($dossierIntervenant->getTelPerso())) {
421
                $coordonneesTelMail[] = [
422
                    'dateDebutTel' => $dateEffet,
423
424
425
426
                    'numero'       => $dossierIntervenant->getTelPerso(),
                    'typeNumero'   => Siham::SIHAM_CODE_TYPOLOGIE_PORTABLE_PERSO,
                ];
            }
427
            if (!empty($dossierIntervenant->getEmailPro())) {
428
                $coordonneesTelMail[] = [
429
                    'dateDebutTel' => $dateEffet,
430
431
432
433
                    'numero'       => $dossierIntervenant->getEmailPro(),
                    'typeNumero'   => Siham::SIHAM_CODE_TYPOLOGIE_EMAIL_PRO,
                ];
            }
434
            if (!empty($dossierIntervenant->getEmailPerso())) {
435
                $coordonneesTelMail[] = [
436
                    'dateDebutTel' => $dateEffet,
437
438
439
440
                    'numero'       => $dossierIntervenant->getEmailPerso(),
                    'typeNumero'   => Siham::SIHAM_CODE_TYPOLOGIE_EMAIL_PERSO,
                ];
            }
Antony Le Courtes's avatar
Antony Le Courtes committed
441

442
443
444
445
446
447
448
449
450
            /*NATIONALITES*/
            $nationalites[] = [
                'nationalite'   => 'FRA',//$dossierIntervenant->getPaysNationalite()->getCode(),
                'temPrincipale' => 1,
            ];

            $params = [
                'categorieEntree'           => 'ACTIVE',
                'civilite'                  => ($dossierIntervenant->getCivilite() == 'M.') ? '1' : '2',
451
                'dateEmbauche'              => $dateEffet,
452
453
                'dateNaissance'             => $dossierIntervenant->getDateNaissance()->format('Y-m-d'),
                'villeNaissance'            => $dossierIntervenant->getCommuneNaissance(),
Antony Le Courtes's avatar
Antony Le Courtes committed
454
                'departementNaissance'      => (!empty($dossierIntervenant->getDepartementNaissance())) ? substr($dossierIntervenant->getDepartementNaissance()->getCode(), 1, 2) : '',
455
                'paysNaissance'             => 'FRA',
456
457
                'emploi'                    => $datas['connecteurForm']['emploi'],
                'listeCoordonneesPostales'  => $coordonneesPostales,
458
                'listeCoordonneesBancaires' => $coordonneesBancaires,
Antony Le Courtes's avatar
Antony Le Courtes committed
459
                'listeCarriere'             => $carriere,
460
                //'listeContrats'             => $contrat,
461
462
463
464
465
466
467
468
                'listeModalitesServices'    => $service,
                'listeStatuts'              => $statut,
                'listeNationalites'         => $nationalites,
                'listeNumerosTelephoneFax'  => $coordonneesTelMail,
                'listePositions'            => $position,
                'motifEntree'               => 'PEC',
                'nomPatronymique'           => $dossierIntervenant->getNomPatronymique(),
                'nomUsuel'                  => $dossierIntervenant->getNomUsuel(),
469
470
                'numeroInsee'               => (!$dossierIntervenant->getNumeroInseeProvisoire()) ? $dossierIntervenant->getNumeroInsee() : '',
                'numeroInseeProvisoire'     => ($dossierIntervenant->getNumeroInseeProvisoire()) ? $dossierIntervenant->getNumeroInsee() : '',
471
472
473
474
475
476
                'prenom'                    => $dossierIntervenant->getPrenom(),
                'sexe'                      => ($dossierIntervenant->getCivilite() == 'M.') ? '1' : '2',
                'temoinValidite'            => '1',
                'UO'                        => $datas['connecteurForm']['affectation'],
            ];

Antony Le Courtes's avatar
Antony Le Courtes committed
477

478
            $matricule = $this->siham->priseEnChargeAgent($params);
479
480
481

            return $matricule;
        } catch (SihamException $e) {
482
483


484
485
            throw new \Exception($e->getMessage());
        }
486
487
    }

488
489


490
491
492
493
494
495
496
497
    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);
498
            $anneeUniversitaire = $this->getExportRhService()->getAnneeUniversitaireEnCours();
499

500
            $dateEffet = $anneeUniversitaire->getDateDebut()->format('Y-m-d');
501
            $dateFin   = $anneeUniversitaire->getDateFin()->format('Y-m-d');
502
503

            /*Formatage du matricule*/
Antony Le Courtes's avatar
Antony Le Courtes committed
504
505
506
507
508
509
510
511

            $matricule = '';
            //On récupére le code RH par le INSEE
            $matricule = $this->trouverCodeRhByInsee($intervenant);

            if (!empty($intervenant->getCodeRh()) && empty($matricule)) {
                $matricule = $intervenant->getCodeRh();
            }
512
            //Si code RH ne contient pas UCN alors on le reformate
Antony Le Courtes's avatar
Antony Le Courtes committed
513
            /*if (!strstr($matricule, 'UCN')) {
514
                $matricule = $this->siham->getCodeAdministration() . str_pad($matricule, 9, '0', STR_PAD_LEFT);
Antony Le Courtes's avatar
Antony Le Courtes committed
515
            }/*/
516

517
518
519

            /*POSITION ADMINISTRATIVE*/
            $position[] =
520
                ['dateEffetPosition' => $dateEffet,
521
522
                 'dateFinPrevue'     => $dateFin,
                 'dateFinReelle'     => $dateFin,
523
524
525
526
                 'position'          => $datas['connecteurForm']['position']];

            /*STATUT*/
            $statut[] =
527
                ['dateEffetStatut' => $dateEffet,
528
529
530
531
                 'statut'          => $datas['connecteurForm']['statut']];

            /*MODALITE SERVICE*/
            $service[] =
532
                ['dateEffetModalite' => $dateEffet,
533
534
                 'modalite'          => $datas['connecteurForm']['modaliteService']];

Antony Le Courtes's avatar
Antony Le Courtes committed
535
536
537
538
539
540
541
            /*CARRIERE*/
            $carriere = [
                'dateEffetCarriere' => $dateEffet,
                'grade'             => '0000',
                'qualiteStatutaire' => 'N',
                'temoinValidite'    => 1,
            ];
542

Antony Le Courtes's avatar
Antony Le Courtes committed
543
            /*CONTRAT*/
544
            $contrat[] =
Antony Le Courtes's avatar
Antony Le Courtes committed
545
546
                ['dateDebutContrat'  => $dateEffet,
                 'dateFinContrat'    => $dateFin,
547
548
549
550
551
                 'natureContrat'     => 'CO',
                 'typeContrat'       => 'TC01',
                 'typeLienJuridique' => 'TL01',
                ];

552
553
554

            $params = [
                'categorieEntree'        => 'ACTIVE',
555
                'dateRenouvellement'     => $dateEffet,
556
                'emploi'                 => $datas['connecteurForm']['emploi'],
Antony Le Courtes's avatar
Antony Le Courtes committed
557
                'listeCarriere'          => $carriere,
558
559
                'listeModalitesServices' => $service,
                'listeStatuts'           => $statut,
560
                //'listeContrats'          => $contrat,
561
562
563
564
565
                'listePositions'         => $position,
                'motifEntree'            => 'REN',
                'matricule'              => $matricule,
                'temoinValidite'         => '1',
                'UO'                     => $datas['connecteurForm']['affectation'],
566
567
            ];

568

569
570
            $matricule = $this->siham->renouvellementAgent($params);

571
572
            //Mise à jour des données personnelles de l'agent
            $this->synchroniserDonneesPersonnellesIntervenantRh($intervenant, $datas);
573
574
575
576
577
578
579
580
581

            return $matricule;
        } catch (SihamException $e) {
            throw new \Exception($e->getMessage());
        }
    }



582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
    public function cloreDossier(Intervenant $intervenant): ?bool
    {

        try {
            $anneeUniversitaire = $this->getExportRhService()->getAnneeUniversitaireEnCours();
            $dateSortie         = $anneeUniversitaire->getDateFin()->format('Y-m-d');

            $matricule = '';
            //On récupére le code RH par le INSEE
            $matricule = $this->trouverCodeRhByInsee($intervenant);
            if (!empty($intervenant->getCodeRh()) && empty($matricule)) {
                $matricule = $intervenant->getCodeRh();
            }

            $paramsWS = [
                'categorieSituation' => 'MC140',
                'dateSortie'         => $dateSortie,
                'matricule'          => $matricule,
                'motifSituation'     => 'MC141',

            ];

            return $this->siham->cloreDossier($paramsWS);
        } catch (SihamException $e) {
            throw new \Exception($e->getMessage());
        }
    }



612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
    public function recupererListeUO(): ?array
    {
        /*On récupére les UO de type composante*/
        $params = [
            'codeAdministration' => '',
            'listeUO'            => [[
                                         'typeUO' => 'COP',
                                     ]],
        ];

        $uo = $this->siham->recupererListeUO($params);

        return $uo;
    }



    public function recupererListePositions(): ?array
    {
        return $this->siham->recupererListePositions();
    }



636
    public function recupererListeEmplois(): ?array
637
638
639
640
    {
        return $this->siham->recupererListeEmplois();
    }

641
642


643
    public function recupererListeStatuts(): ?array
644
645
646
647
648
649
    {
        return $this->siham->recupererListeStatuts();
    }



650
    public function recupererListeModalites(): ?array
651
652
653
654
655
656
    {
        return $this->siham->recupererListeModalites();
    }



657
658
659
660
661
662
663
    public function recupererListeContrats(): ?array
    {
        return $this->siham->recupererListeContrats();
    }



664
665
666
667
668
669
670
671
672
673
674
675
676
    public function getConnecteurName(): string
    {
        return 'siham';
    }



    public function recupererFieldsetConnecteur(): Fieldset
    {
        $fieldset = new SihamFieldset('connecteurForm', []);

        return $fieldset;
    }
677
}