Skip to content
Snippets Groups Projects
Commit 5814392a authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

La recherche d'intervenants locale fonctionne maintenant même sans avoir de vue source Intervenant

parent d055c81f
No related branches found
No related tags found
No related merge requests found
...@@ -40,6 +40,7 @@ Attention toutefois : le travail de mise en place du dispositif n'en est qu'au t ...@@ -40,6 +40,7 @@ Attention toutefois : le travail de mise en place du dispositif n'en est qu'au t
(Cf. [`INSTALL.md`](INSTALL.md) et [`UPDATE.md`](UPDATE.md)) (Cf. [`INSTALL.md`](INSTALL.md) et [`UPDATE.md`](UPDATE.md))
* Nouveau privilège permettant de modifier des services après côture, même en cas de mise en paiement (à réserver à des gestionnaires avertis des conséquences sur les paiements) * Nouveau privilège permettant de modifier des services après côture, même en cas de mise en paiement (à réserver à des gestionnaires avertis des conséquences sur les paiements)
* Dans les paramètres généraux, il n'est plus nécessaire de renseigner qui est le DRH de l'établissement * Dans les paramètres généraux, il n'est plus nécessaire de renseigner qui est le DRH de l'établissement
* La recherche d'intervenants saisis directement dans OSE fonctionne maintenant même sans avoir de vue source Intervenant
## Notes de mise à jour ## Notes de mise à jour
......
...@@ -93,6 +93,88 @@ class RechercheProcessus ...@@ -93,6 +93,88 @@ class RechercheProcessus
$intervenants = []; $intervenants = [];
try {
$stmt = $this->getEntityManager()->getConnection()->executeQuery($sql);
while ($r = $stmt->fetch()) {
$intervenants[$r['SOURCE_CODE']] = [
'civilite' => $r['CIVILITE'],
'nom' => $r['NOM_USUEL'],
'prenom' => $r['PRENOM'],
'date-naissance' => new \DateTime($r['DATE_NAISSANCE']),
'structure' => $r['STRUCTURE'],
'numero-personnel' => $r['SOURCE_CODE'],
];
}
} catch (\Exception $e) {
return $this->rechercherLocalement($critere, $limit);
}
return $intervenants;
}
/**
* @param string $critere
* @param integer $limit
*
* @return array
*/
public function rechercherLocalement($critere, $limit = 50)
{
if (strlen($critere) < 2) return [];
$anneeId = (int)$this->getServiceContext()->getAnnee()->getId();
$critere = Util::reduce($critere);
$criteres = explode('_', $critere);
$sql = '
WITH vrec AS (
SELECT
i.id,
i.source_code,
i.nom_usuel,
i.nom_patronymique,
i.prenom,
i.date_naissance,
s.libelle_court structure,
c.libelle_long civilite,
i.critere_recherche critere,
i.annee_id
FROM
intervenant i
JOIN structure s ON s.id = i.structure_id
JOIN civilite c ON c.id = i.civilite_id
WHERE
i.histo_destruction IS NULL
)
SELECT * FROM vrec WHERE
rownum <= ' . (int)$limit . ' AND annee_id = ' . $anneeId;
$sqlCri = '';
$criCode = 0;
foreach ($criteres as $c) {
$cc = (int)$c;
if (0 === $cc) {
if ($sqlCri != '') $sqlCri .= ' AND ';
$sqlCri .= 'critere LIKE q\'[%' . $c . '%]\'';
} else {
$criCode = $cc;
}
}
$orc = [];
if ($sqlCri != '') {
$orc[] = '(' . $sqlCri . ')';
}
if ($criCode) {
$orc[] = 'source_code LIKE \'%' . $criCode . '%\'';
}
$orc = implode(' OR ', $orc);
$sql .= ' AND (' . $orc . ') ORDER BY nom_usuel, prenom';
$intervenants = [];
try { try {
$stmt = $this->getEntityManager()->getConnection()->executeQuery($sql); $stmt = $this->getEntityManager()->getConnection()->executeQuery($sql);
while ($r = $stmt->fetch()) { while ($r = $stmt->fetch()) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment