Commit 902772c5 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Tâche #25977

Pouvoir préciser le statut lors de la création d'un nouvel utilisateur
parent a9089e7a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ author: Laurent Lécluse - DSI - Unicaen

* Possibilité d'utiliser un service Unoconv présent sur un serveur dédié autre que celui de OSE
* L'export des services au format CSV est maintenant personnalisable
* En ligne de commande, il est désormais possible d'indiquer dans quelle année universitaire et sous quel statut un intervenant sera créé, de même qu'un code intervenant

## Correction de bugs

+31 −1
Original line number Diff line number Diff line
@@ -12,6 +12,36 @@ $params = $c->getInputs([
]);

$params['date-naissance'] = $params['date-naissance']->format('d/m/Y');
$params = base64_encode(json_encode($params));
$params['params']         = ['creer-intervenant' => $params['creer-intervenant']];
unset($params['creer-intervenant']);

if ($params['params']['creer-intervenant']) {
    if ($c->hasOption('code')) {
        $params['params']['code'] = $c->getOption('code');
    }


    $bdd = $oa->getBdd();

    $annee                     = $bdd->select("SELECT libelle FROM annee WHERE id = (SELECT valeur FROM parametre WHERE nom = 'annee')", [], $bdd::FETCH_ONE)['LIBELLE'];
    $params['params']['annee'] = $c->getInput('annee', 'Année universitaire (' . $annee . ' par défaut, sinon entrez 2020 pour 2020/2021, etc.)');

    if (!$c->hasOption('statut')) {
        $statuts = $bdd->select("SELECT source_code CODE, libelle FROM statut_intervenant WHERE histo_destruction IS NULL AND source_code <> 'AUTRES' ORDER BY ordre");
        $c->println('Statut de \'intervenant ("AUTRES" par défaut, sinon entrez le code parmi les propositions suivantes) :');
        $maxCodeLength = 0;
        foreach ($statuts as $statut) {
            $sLen = strlen($statut['CODE']);
            if ($sLen > $maxCodeLength) $maxCodeLength = $sLen;
        }
        foreach ($statuts as $statut) {
            $c->print(' * ');
            $c->print(str_pad($statut['CODE'], $maxCodeLength, ' '), $c::COLOR_CYAN);
            $c->println(' ' . $statut['LIBELLE']);
        }
    }
    $params['params']['statut'] = $c->getInput('statut');
}

$params = base64_encode(json_encode($params));
$oa->exec("creer-utilisateur --data=$params");
 No newline at end of file
+4 −0
Original line number Diff line number Diff line
@@ -51,6 +51,10 @@ Paramètres possibles :
* ```login``` : Login
* ```mot-de-passe``` : Mot de passe (6 caractères minimum)
* ```creer-intervenant``` : Voulez-vous créer un intervenant pour cet utilisateur ?
* ```code``` : Code éventuel de l'intervenant
* ```annee``` : Année universitaire pour laquelle l'intervenant sera créé (ex : 2020 pour 2020/2021)
* ```statut``` : Code du statut de l'intervenant


Exemple de commande lancée avec des paramètres :
```bash
+10 −11
Original line number Diff line number Diff line
@@ -10,7 +10,6 @@ use Application\Service\Traits\StructureServiceAwareTrait;
use UnicaenAuth\Service\Traits\UserServiceAwareTrait;



class UtilisateurController extends BaseController
{
    use ContextServiceAwareTrait;
@@ -19,6 +18,7 @@ class UtilisateurController extends BaseController
    use UserServiceAwareTrait;



    /**
     * Traite les requêtes AJAX POST de sélection d'un profil utilisateur.
     * La sélection est mémorisé en session par le service AuthUserContext.
@@ -41,8 +41,7 @@ class UtilisateurController extends BaseController
            $message = sprintf("Vous endossez à présent le profil utilisateur <strong>%s</strong>%s.",
                $role->getRoleName(),
                $structure ? " pour la structure <strong>$structure</strong>" : null);
        }
        else {
        } else {
            $message = sprintf("Vous endossez à présent le profil utilisateur <strong>%s</strong>.", $role);
            if ($s = $role->getStructure()) {
                $this->getServiceContext()->setStructure($s);
@@ -84,7 +83,7 @@ class UtilisateurController extends BaseController
            $data->{'date-naissance'},
            $data->login,
            $data->{'mot-de-passe'},
            $data->{'creer-intervenant'}
            (array)$data->params
        );
    }
}
 No newline at end of file
+30 −14
Original line number Diff line number Diff line
@@ -3,10 +3,12 @@
namespace Application\Service;

use Application\Entity\Db\Intervenant;
use Application\Entity\Db\StatutIntervenant;
use Application\Entity\Db\Structure;
use Application\Entity\Db\Periode;
use Application\Entity\Db\Annee;
use Application\Entity\Db\TypeIntervenant;
use Application\Service\Traits\AnneeServiceAwareTrait;
use Application\Service\Traits\MiseEnPaiementServiceAwareTrait;
use Application\Service\Traits\MiseEnPaiementIntervenantStructureServiceAwareTrait;
use Application\Service\Traits\SourceServiceAwareTrait;
@@ -34,6 +36,7 @@ class IntervenantService extends AbstractEntityService
    use MiseEnPaiementIntervenantStructureServiceAwareTrait;
    use WorkflowServiceAwareTrait;
    use SourceServiceAwareTrait;
    use AnneeServiceAwareTrait;



@@ -325,31 +328,44 @@ class IntervenantService extends AbstractEntityService
     * @param string    $nom
     * @param string    $prenom
     * @param \DateTime $dateNaissance
     * @param string|null $statut
     * @param array     $params
     *
     * Params :
     *   code   : null | string                     => généré si non fourni
     *   annee  : null | int | Annee                => Année en cours si non fournie
     *   statut : null | string | StatutIntervenant => AUTRES si non fourni, si string alors c'est le code du statut
     *
     * @return Intervenant
     */
    public function creerIntervenant(string $nom, string $prenom, \DateTime $dateNaissance, string $statut = null): Intervenant
    public function creerIntervenant(string $nom, string $prenom, \DateTime $dateNaissance, array $params = []): Intervenant
    {
        $code = uniqid('OSE');
        if (!isset($params['code']) || empty($params['code'])) {
            $params['code'] = uniqid('OSE');
        }

        if ($statut) {
            $statutEntity = $this->getServiceStatutIntervenant()->getByCode($statut);
        } else {
            $statutEntity = $this->getServiceStatutIntervenant()->getAutres();
        if (!isset($params['annee']) || empty($params['annee'])) {
            $params['annee'] = $this->getServiceContext()->getAnnee();
        } elseif (!$params['annee'] instanceof Annee) {
            $params['annee'] = $this->getServiceAnnee()->get($params['annee']);
        }

        if (!isset($params['statut']) || empty($params['statut'])) {
            $params['statut'] = $this->getServiceStatutIntervenant()->getAutres();
        } elseif (!$params['statut'] instanceof StatutIntervenant) {
            $params['statut'] = $this->getServiceStatutIntervenant()->getByCode($params['statut']);
        }

        $intervenant = new Intervenant;
        $intervenant->setAnnee($this->getServiceContext()->getAnnee());
        $intervenant->setCode($code);

        $intervenant->setCode($params['code']);
        $intervenant->setSource($this->getServiceSource()->getOse());
        $intervenant->setSourceCode($code);
        $intervenant->setSourceCode($params['code']);

        $intervenant->setNomUsuel($nom);
        $intervenant->setPrenom($prenom);
        $intervenant->setDateNaissance($dateNaissance);
        $intervenant->setStatut($statutEntity);
        $intervenant->setAnnee($params['annee']);
        $intervenant->setStatut($params['statut']);

        $this->save($intervenant);

Loading