Skip to content
This repository has been archived by the owner on Sep 17, 2024. It is now read-only.

Commit

Permalink
remplacer des trigrammes pour une meilleure lisibilité
Browse files Browse the repository at this point in the history
  • Loading branch information
anis committed Sep 16, 2024
1 parent 4eced78 commit cffd88c
Showing 1 changed file with 68 additions and 22 deletions.
90 changes: 68 additions & 22 deletions packages/api/src/business/rules/titre-demarche-public-find.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes'
import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
import { getDomaineId, TitreTypeId } from 'camino-common/src/static/titresTypes'
import { DEMARCHES_TYPES_IDS, DemarcheTypeId } from 'camino-common/src/static/demarchesTypes'
import { ETAPES_TYPES, EtapeTypeId } from 'camino-common/src/static/etapesTypes'
import { getDomaineId, TITRES_TYPES_IDS, TitreTypeId } from 'camino-common/src/static/titresTypes'
import { getEtapesTDE } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes/index'
import { ITitreEtape, ITitreDemarche } from '../../types'
import { machineFind } from '../rules-demarches/definitions'
import { titreEtapeForMachineValidator, toMachineEtapes } from '../rules-demarches/machine-common'
import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort'
import { titreInModificationEnInstance } from './titre-statut-id-find'
import { isEtapeStatusRejete } from 'camino-common/src/static/etapesStatuts'
import { ETAPES_STATUTS, isEtapeStatusRejete } from 'camino-common/src/static/etapesStatuts'
const titreDemarchePublicLectureFind = (
publicLecture: boolean,
demarcheTypeId: DemarcheTypeId,
Expand All @@ -19,40 +19,47 @@ const titreDemarchePublicLectureFind = (
// si le type de démarche est retrait de la demande ou déchéance
// et que le type d'étape est saisine du préfet
// alors la démarche est publique
if (['ret', 'dec'].includes(demarcheTypeId) && titreEtape.typeId === 'spp') {
if ([DEMARCHES_TYPES_IDS.Retrait, DEMARCHES_TYPES_IDS.Decheance].includes(demarcheTypeId) && titreEtape.typeId === ETAPES_TYPES.saisineDuPrefet) {
return true
}

// si le type d'étape est un classement sans suite
// et le type de titre n'est ni ARM ni AXM
// alors la démarche n'est pas publique
if (titreEtape.typeId === 'css' && (!titreTypeId || !['arm', 'axm'].includes(titreTypeId))) {
if (
titreEtape.typeId === ETAPES_TYPES.classementSansSuite &&
(!titreTypeId || ![TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX, TITRES_TYPES_IDS.AUTORISATION_D_EXPLOITATION_METAUX].includes(titreTypeId))
) {
return false
}

// si le type d'étape est recevabilité de la demande
// et que le type de titre n'est pas ARM
// et que la démarche ne peut contenir de mise en concurrence au JORF ou JOUE
// alors la démarche est publique
if (titreEtape.typeId === 'mcr' && (!titreTypeId || titreTypeId !== 'arm') && !demarcheTypeEtapesTypes.find(et => ['anf', 'ane'].includes(et))) {
if (
titreEtape.typeId === ETAPES_TYPES.recevabiliteDeLaDemande &&
(!titreTypeId || titreTypeId !== TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX) &&
!demarcheTypeEtapesTypes.find(et => [ETAPES_TYPES.avisDeMiseEnConcurrenceAuJORF, 'ane'].includes(et))
) {
return true
}

// si le type d'étape est mise en concurrence au JORF ou JOUE
// alors la démarche est publique
if (['anf', 'ane'].includes(titreEtape.typeId)) {
if ([ETAPES_TYPES.avisDeMiseEnConcurrenceAuJORF, 'ane'].includes(titreEtape.typeId)) {
return true
}

// si le type d'étape est participation du public
// alors la démarche est publique
if (titreEtape.typeId === 'ppu') {
if (titreEtape.typeId === ETAPES_TYPES.participationDuPublic) {
return true
}

// si le type d'étape est publication de l'avis de décision implicite
// alors la démarche est publique
if (titreEtape.typeId === 'apu') {
if (titreEtape.typeId === ETAPES_TYPES.publicationDeLavisDeDecisionImplicite) {
return true
}

Expand All @@ -61,62 +68,83 @@ const titreDemarchePublicLectureFind = (
// ou avis de la commission des ARM (si pas de saisine)
// ou décision de l'ONF (étape historique)
// alors la démarche est publique
if (titreTypeId === 'arm' && ['sca', 'aca', 'def'].includes(titreEtape.typeId)) {
if (
titreTypeId === TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX &&
[
ETAPES_TYPES.saisineDeLaCommissionDesAutorisationsDeRecherchesMinieres_CARM_,
ETAPES_TYPES.avisDeLaCommissionDesAutorisationsDeRecherchesMinieres_CARM_,
ETAPES_TYPES.decisionDeLOfficeNationalDesForets,
].includes(titreEtape.typeId)
) {
return true
}

// si le type de titre est ARM ou AXM
// et que le type d'étape est désistement du demandeur
// alors la démarche est publique
if (titreTypeId && ['arm', 'axm'].includes(titreTypeId) && titreEtape.typeId === 'des') {
if (
titreTypeId &&
[TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX, TITRES_TYPES_IDS.AUTORISATION_D_EXPLOITATION_METAUX].includes(titreTypeId) &&
titreEtape.typeId === ETAPES_TYPES.desistementDuDemandeur
) {
return true
}

// si le type d'étape est décision implicite
// ou décision de l'administration
// et que le statut est rejeté
if (['dim', 'dex'].includes(titreEtape.typeId) && isEtapeStatusRejete(titreEtape.statutId)) {
if ([ETAPES_TYPES.decisionImplicite, ETAPES_TYPES.decisionDeLadministration].includes(titreEtape.typeId) && isEtapeStatusRejete(titreEtape.statutId)) {
// si le type de titre est AXM
// alors la démarche est publique
// sinon la démarche n'est pas (plus) publique
return titreTypeId === 'axm'
return titreTypeId === TITRES_TYPES_IDS.AUTORISATION_D_EXPLOITATION_METAUX
}

// si le type d'étape est décision implicite
// ou décision de l'administration
// ou publication au JORF
// et que le statut est accepté
// alors la démarche est publique
if (['dim', 'dex', 'dpu'].includes(titreEtape.typeId) && titreEtape.statutId === 'acc') {
if (
[ETAPES_TYPES.decisionImplicite, ETAPES_TYPES.decisionDeLadministration, ETAPES_TYPES.publicationDeDecisionAuJORF].includes(titreEtape.typeId) &&
titreEtape.statutId === ETAPES_STATUTS.ACCEPTE
) {
return true
}

// si le type d'étape est publication de décision unilatérale au JORF
// ou décision unilatérale de l'administration
// ou publication de décision au recueil des actes administratifs
// alors la démarche est publique
if (['dup', 'dux', 'rpu'].includes(titreEtape.typeId)) {
if (['dup', ETAPES_TYPES.decisionAdministrative, ETAPES_TYPES.publicationDeDecisionAuRecueilDesActesAdministratifs].includes(titreEtape.typeId)) {
return true
}

// si le type de titre est ARM
// et que le type d'étape est signature de l'autorisation de recherche minière
// ou signature de l'avenant à l'autorisation de recherche minière
// alors la démarche est publique
if (titreTypeId === 'arm' && ['sco', 'aco'].includes(titreEtape.typeId)) {
if (
titreTypeId === TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX &&
[ETAPES_TYPES.signatureDeLautorisationDeRechercheMiniere, ETAPES_TYPES.avenantALautorisationDeRechercheMiniere].includes(titreEtape.typeId)
) {
return true
}

// - le type de l’étape est annulation de la décision (and)
// - et si le statut est favorable
if (['and'].includes(titreEtape.typeId) && titreEtape.statutId === 'fav') {
if (titreEtape.typeId === ETAPES_TYPES.decisionDuJugeAdministratif && titreEtape.statutId === ETAPES_STATUTS.FAVORABLE) {
// - alors, la démarche est publique
return true
}

// Si le type de titre est ARM et que le type de démarche est renonciation
// et que l’expertise de l’onf est cours (recevabilité de la demande faite), ou si la démarche a été désistée ou si classée sans suite
if (titreTypeId === 'arm' && ['ren', 'pro'].includes(demarcheTypeId) && ['mcr', 'css', 'des'].includes(titreEtape.typeId)) {
if (
titreTypeId === TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX &&
[DEMARCHES_TYPES_IDS.Renonciation, DEMARCHES_TYPES_IDS.Prolongation].includes(demarcheTypeId) &&
[ETAPES_TYPES.recevabiliteDeLaDemande, ETAPES_TYPES.classementSansSuite, ETAPES_TYPES.desistementDuDemandeur].includes(titreEtape.typeId)
) {
return true
}

Expand All @@ -131,12 +159,30 @@ const titreDemarchePublicLectureFind = (
// enquête publique (epu)

const domaineId = titreTypeId ? getDomaineId(titreTypeId) : null
if (domaineId && ['m', 'w', 'c'].includes(domaineId) && ['ane', 'anf', 'dex', 'dpu', 'dup', 'rpu', 'ppu', 'epu'].includes(titreEtape.typeId)) {
if (
domaineId &&
['m', 'w', 'c'].includes(domaineId) &&
[
'ane',
ETAPES_TYPES.avisDeMiseEnConcurrenceAuJORF,
ETAPES_TYPES.decisionDeLadministration,
ETAPES_TYPES.publicationDeDecisionAuJORF,
'dup',
ETAPES_TYPES.publicationDeDecisionAuRecueilDesActesAdministratifs,
ETAPES_TYPES.participationDuPublic,
ETAPES_TYPES.enquetePublique,
].includes(titreEtape.typeId)
) {
return true
}

// Pour les PRM d’un titre en survie provisoire, les demandes de prolongations sont public
if (titreTypeId === 'prm' && titreEtape.typeId === 'mdp' && ['pr1', 'pr2'].includes(demarcheTypeId) && titreInModificationEnInstance([demarche])) {
if (
titreTypeId === TITRES_TYPES_IDS.PERMIS_EXCLUSIF_DE_RECHERCHES_METAUX &&
titreEtape.typeId === ETAPES_TYPES.depotDeLaDemande &&
[DEMARCHES_TYPES_IDS.Prolongation1, DEMARCHES_TYPES_IDS.Prolongation2].includes(demarcheTypeId) &&
titreInModificationEnInstance([demarche])
) {
return true
}

Expand Down Expand Up @@ -182,7 +228,7 @@ export const titreDemarchePublicFind = (
// les entreprises titulaires ou amodiataires peuvent voir la démarche
// si la démarche est visible au public
// ou si la démarche contient une demande ou une décision de l'administration unilatérale
const entreprisesLecture = publicLecture || titreDemarcheEtapes.some(te => ['mfr', 'dex', 'dux'].includes(te.typeId))
const entreprisesLecture = publicLecture || titreDemarcheEtapes.some(te => [ETAPES_TYPES.demande, ETAPES_TYPES.decisionDeLadministration, ETAPES_TYPES.decisionAdministrative].includes(te.typeId))

return { publicLecture, entreprisesLecture }
}

0 comments on commit cffd88c

Please sign in to comment.