Commit 5814392a authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

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

parent d055c81f
......@@ -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))
* 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
* La recherche d'intervenants saisis directement dans OSE fonctionne maintenant même sans avoir de vue source Intervenant
## Notes de mise à jour
......
......@@ -93,6 +93,88 @@ class RechercheProcessus
$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 {
$stmt = $this->getEntityManager()->getConnection()->executeQuery($sql);
while ($r = $stmt->fetch()) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment