Commit f234c1ac authored by Arnaud Pauget's avatar Arnaud Pauget
Browse files

Merge branch 'fix/11061_prevent_role_deletion' into 'develop'

Merge branch 'fix/17037_fix_groupBy_operation_type_to_develop' into 'develop'

See merge request !694
parents 54e8c58f 9524c7f9
Pipeline #14581 failed with stages
in 1 minute and 2 seconds
......@@ -38,7 +38,7 @@
- `Fixed` Calcul de la prochaine exécution mêmeen cas d'erreur dans le planificateur de tâches.
- `Fixed` Affichage du compte de service en charge d'exécuter la tâche dans le planificateur de tâches.
- `Fixed` Restauration du fichier permettant la génération de la doc OPENAPI.
- `Fixed` Correction du bug de déconnexion intempestive lors du changement d'organisation d'appartenance.
- `Fixed` Correction du bug de déconnexion intempestive lors du changement d'organisation d'appartenance.
- `Fixed` Amélioration de la détection de l'algorithme de hash sur les bordereaux externes.
- `Fixed` Correction du bug lors de la modification des paramètres d'un cluster de stockage.
- `Fixed` Correction de l'affichage de la prévisualisation de certains PDF.
......
......@@ -575,6 +575,55 @@ class organization
}
}
// bloque la suppression du rôle autorité de contrôle si déclaré comme autorité de contrôle
if ($this->sdoFactory->count("medona/controlAuthority", "controlAuthorityOrgUnitId='$orgId'") && (!isset($organization->orgRoleCodes) || isset($organization->orgRoleCodes) && !$organization->orgRoleCodes->contains("controlAuthority"))) {
throw new \core\Exception("This service is declared as an authority control. Remove it from the authority control panel before deleting this role.");
}
// bloque la suppression du rôle producteur si dans un accord de versement
if (isset($organization->orgRoleCodes) && !$organization->orgRoleCodes->contains("originator")) {
foreach($this->sdoFactory->index("medona/archivalAgreement", "originatorOrgIds") as $readingOriginatorOrgIds) {
$readingOriginatorOrgIds = preg_split("/[\s]/",$readingOriginatorOrgIds);
foreach($readingOriginatorOrgIds as $currentOriginatorOrgId) {
if ($currentOriginatorOrgId == $orgId) {
throw new \core\Exception("This service belongs to an archival agreement.");
};
}
};
}
// bloque la suppression du rôle service versant si dans un accord de versement
if (isset($organization->orgRoleCodes) && ($this->sdoFactory->count("medona/archivalAgreement", "depositorOrgRegNumber='$organization->registrationNumber'")>0) && !$organization->orgRoleCodes->contains("depositor")) {
throw new \core\Exception("This service belongs to an archival agreement.");
}
// bloque la suppression du rôle service archives si dans un accord de versement
if (isset($organization->orgRoleCodes) && ($this->sdoFactory->count("medona/archivalAgreement", "archiverOrgRegNumber='$organization->registrationNumber'")>0) && !$organization->orgRoleCodes->contains("archiver")) {
throw new \core\Exception("This service belongs to an archival agreement.");
}
// bloque la suppression du rôle service archives si au moins une archive
$numberOfArchives = (string)$this->sdoFactory->count("recordsManagement/archive", "archiverOrgRegNumber='$organization->registrationNumber'");
if (isset($organization->orgRoleCodes) && ($numberOfArchives > 0) && !$organization->orgRoleCodes->contains("archiver")) {
throw new \core\Exception\ForbiddenException(
"This service has %s archive(s).",
403,
null,
[$numberOfArchives]
);
}
// bloque la suppression du rôle producteur si au moins une archive
$numberOfArchives = (string)$this->sdoFactory->count("recordsManagement/archive", "originatorOrgRegNumber='$organization->registrationNumber'");
if (isset($organization->orgRoleCodes) && ($numberOfArchives > 0) && !$organization->orgRoleCodes->contains("archiver")) {
throw new \core\Exception\ForbiddenException(
"This service has %s archive(s).",
403,
null,
[$numberOfArchives]
);
}
try {
if ($this->isUsed($organization->registrationNumber)) {
$originalOrganization = $this->read($orgId);
......
......@@ -59,6 +59,15 @@ msgstr "La date de fin est antérieure à la date de début."
msgid "An owner is already defined."
msgstr "Un Opérateur d'Archivage est déjà défini."
msgid "This service is declared as an authority control. Remove it from the authority control panel before deleting this role."
msgstr "Ce service est déclaré comme autorité de contrôle. Veuillez supprimer ce lien (menu Gestion des Autorités de Contrôle) avant de lui ôter ce rôle."
msgid "This service belongs to an archival agreement."
msgstr "Ce service est dans un accord de versement."
msgid "This service has %s archive(s)."
msgstr "Ce service possède %s archive(s)."
msgid "Profile %s not found"
msgstr "Le profil %s n'a pas été trouvé"
......
Supports Markdown
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