Skip to content
Snippets Groups Projects
Commit 781a1783 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Assertion pour les demandes externes + fix pour la mise en copies de supérieurs

parent a4c1afe9
No related branches found
No related tags found
No related merge requests found
......@@ -40,6 +40,10 @@ return [
DemandeexternePrivileges::DEMANDEEXTERNE_SUPPRIMER,
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_AGENT,
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_VALIDEUR,
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_GESTIONNAIRE,
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_RESPONSABLE,
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_DRH,
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_DGS,
DemandeexternePrivileges::DEMANDEEXTERNE_GERER,
],
'resources' => ['DemandeExterne'],
......
......@@ -74,9 +74,6 @@ class DemandeExterneAssertion extends AbstractAssertion
switch ($role->getRoleId()) {
case AppRoleProvider::ADMIN_TECH :
case AppRoleProvider::ADMIN_FONC :
case AppRoleProvider::DRH :
case AppRoleProvider::DGS :
case FormationRoles::GESTIONNAIRE_FORMATION :
case FormationRoles::RESPONSABLE_FORMATION :
return true;
case AgentRoleProvider::ROLE_AGENT :
......@@ -85,14 +82,28 @@ class DemandeExterneAssertion extends AbstractAssertion
case AgentRoleProvider::ROLE_VALIDATEUR :
$valideurs = array_map(function (AgentValidateur $a) { return $a->getValidateur(); }, $this->getAgentValidateurService()->getAgentsValidateursByAgent($agent));
$isValideur = DemandeExterneAssertion::userInAgents($user, $valideurs);
switch ($privilege) {
case DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_VALIDEUR :
return $isValideur and ($demande->isEtatActif(DemandeExterneEtats::ETAT_VALIDATION_AGENT));
default :
return $isValideur;
}
return match ($privilege) {
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_VALIDEUR => $isValideur and ($demande->isEtatActif(DemandeExterneEtats::ETAT_VALIDATION_AGENT)),
default => $isValideur,
};
case FormationRoles::GESTIONNAIRE_FORMATION :
return match ($privilege) {
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_GESTIONNAIRE => $demande->isEtatActif(DemandeExterneEtats::ETAT_VALIDATION_VALIDEUR),
default => true
};
case AppRoleProvider::DRH :
return match ($privilege) {
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_DRH => $demande->isEtatActif(DemandeExterneEtats::ETAT_VALIDATION_RESPONSABLE),
default => true
};
case AppRoleProvider::DGS :
return match ($privilege) {
DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_DGS => $demande->isEtatActif(DemandeExterneEtats::ETAT_VALIDATION_DRH),
default => true
};
case RoleProvider::RESPONSABLE :
if ($privilege === DemandeexternePrivileges::DEMANDEEXTERNE_MODIFIER and !$demande->isEtatActif(DemandeExterneEtats::ETAT_CREATION_EN_COURS)) return false;
if ($privilege === DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_RESPONSABLE) return $demande->isEtatActif(DemandeExterneEtats::ETAT_VALIDATION_GESTIONNAIRE);
$structures = $this->getAgentService()->computesStructures($agent);
$responsables = DemandeExterneAssertion::agentInStructures(RoleProvider::RESPONSABLE, $structures);
return DemandeExterneAssertion::userInAgents($user, $responsables);
......@@ -140,9 +151,18 @@ class DemandeExterneAssertion extends AbstractAssertion
'valider-valideur',
'refuser-valideur'
=> $this->computeAssertion($entity, DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_VALIDEUR),
'valider-gestionnaire',
'refuser-gestionnaire'
=> $this->computeAssertion($entity, DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_GESTIONNAIRE),
'valider-responsable',
'refuser-responsable'
=> $this->computeAssertion($entity, DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_RESPONSABLE),
'valider-drh',
'refuser-drh'
=> $this->computeAssertion($entity, DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_DRH),
'valider-dgs',
'refuser-dgs'
=> $this->computeAssertion($entity, DemandeexternePrivileges::DEMANDEEXTERNE_VALIDER_DGS),
default => true,
};
}
......
......@@ -285,6 +285,7 @@ class NotificationService
$superieurs = $this->getAgentValidateurService()->getAgentsValidateursByAgent($agent);
foreach ($superieurs as $superieur) $copie[] = $superieur->getValidateur()->getEmail();
}
$copie = (empty($copie)) ? null : implode(",", $copie);
if ($inscrit->getIndividu() !== null AND $inscrit->getIndividu()->getEmail() !== null) {
$rendu = $this->getRenduService()->generateRenduByTemplateCode(MailTemplates::SESSION_CONVOCATION, $vars);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment