Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rattacher les Animations Collectives aux structures Milo #1319

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
"migration": "sequelize db:migrate",
"psql": "docker compose exec apidb psql -h localhost -d passemploidb -U passemploi ",
"seed": "sequelize db:seed:undo:all && sequelize db:seed:all",
"seed:referentiel": "sequelize db:seed:undo --seed 20211201160540-referentiel-communes-et-departements.js && sequelize db:seed --seed 20211201160540-referentiel-communes-et-departements.js && sequelize db:seed:undo --seed 20220420160540-referentiel-agences.js && sequelize db:seed --seed 20220420160540-referentiel-agences.js && sequelize db:seed:undo --seed 20221004160540-referentiel-rome.js && sequelize db:seed --seed 20221004160540-referentiel-rome.js",
"seed:referentiel:metiers": "sequelize db:seed:undo --seed 20221004160540-referentiel-rome.js && sequelize db:seed --seed 20221004160540-referentiel-rome.js",
"seed:referentiel": "sequelize db:seed:undo --seed 1-referentiel-communes-et-departements.js && sequelize db:seed --seed 1-referentiel-communes-et-departements.js && sequelize db:seed:undo --seed 1-referentiel-agences.js && sequelize db:seed --seed 1-referentiel-agences.js && sequelize db:seed:undo --seed 1-referentiel-rome.js && sequelize db:seed --seed 1-referentiel-rome.js",
Mzem marked this conversation as resolved.
Show resolved Hide resolved
"seed:referentiel:metiers": "sequelize db:seed:undo --seed 1-referentiel-rome.js && sequelize db:seed --seed 1-referentiel-rome.js",
"start": "yarn start:pg:db && nest start",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
Expand Down Expand Up @@ -56,7 +56,6 @@
"tasks:nettoyer-les-pieces-jointes": "IS_WEB=false TASK_NAME=NETTOYER_LES_PIECES_JOINTES node dist/main",
"tasks:nettoyer-les-donnees": "IS_WEB=false TASK_NAME=NETTOYER_LES_DONNEES node dist/main",
"tasks:notifier-rendez-vous-pe": "IS_WEB=false TASK_NAME=NOTIFIER_RENDEZVOUS_PE node dist/main",
"tasks:maj-agences-ac": "IS_WEB=false TASK_NAME=MAJ_AGENCE_AC node dist/main",
"tasks:maj-segments": "IS_WEB=false TASK_NAME=MAJ_SEGMENTS node dist/main",
"tasks:monitorer-jobs": "IS_WEB=false TASK_NAME=MONITORER_JOBS node dist/main",
"tasks:suivre-events-milo": "IS_WEB=false TASK_NAME=SUIVRE_FILE_EVENEMENTS_MILO node dist/main",
Expand Down
30 changes: 0 additions & 30 deletions scripts/data-migrations/mettre-a-jour-agences-milo.js

This file was deleted.

30 changes: 0 additions & 30 deletions scripts/data-migrations/mettre-a-jour-doublons-agences-milo.js

This file was deleted.

15 changes: 0 additions & 15 deletions scripts/data-migrations/purger-sessions-milo.js

This file was deleted.

33 changes: 33 additions & 0 deletions scripts/data-migrations/structures-milo-ac.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require('dotenv').config()
const { Sequelize } = require('sequelize')
const sequelize = new Sequelize(process.env.DATABASE_URL, {
dialect: 'postgres'
})

sequelize.transaction(async transaction => {
const ACsRAW = await sequelize.query(
`SELECT * FROM rendez_vous WHERE rendez_vous.type = 'ATELIER' OR rendez_vous.type = 'INFORMATION_COLLECTIVE'`
)
const ACs = ACsRAW[0]
for (const AC of ACs) {
const idStructureRaw = await sequelize.query(
`SELECT conseiller.id_structure_milo AS id_structure_milo FROM conseiller WHERE conseiller.id = '${AC.createur.id}'`,
{ transaction }
)
const idStructure = idStructureRaw[0][0].id_structure_milo

if (idStructure)
await sequelize.query(
`UPDATE rendez_vous SET id_structure_milo = '${idStructure}' WHERE rendez_vous.id = '${AC.id}'`
)
}
await sequelize.query(
`UPDATE rendez_vous SET date_suppression = NOW() WHERE (rendez_vous.type = 'ATELIER' OR rendez_vous.type = 'INFORMATION_COLLECTIVE') AND rendez_vous.id_structure_milo IS NULL`
)
Mzem marked this conversation as resolved.
Show resolved Hide resolved

await sequelize.query(`DELETE FROM rendez_vous_jeune_association WHERE id IN (SELECT rendez_vous_jeune_association.id FROM rendez_vous_jeune_association, jeune, rendez_vous
Mzem marked this conversation as resolved.
Show resolved Hide resolved
WHERE rendez_vous.id_structure_milo IS NOT null
AND rendez_vous.id = rendez_vous_jeune_association.id_rendez_vous
AND rendez_vous_jeune_association.id_jeune = jeune.id
AND jeune.id_structure_milo != rendez_vous.id_structure_milo)`)
Mzem marked this conversation as resolved.
Show resolved Hide resolved
})
36 changes: 17 additions & 19 deletions src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ import { AddFavoriOffreImmersionCommandHandler } from './application/commands/ad
import { CreateActionCommandHandler } from './application/commands/action/create-action.command.handler'
import { CreateEvenementCommandHandler } from './application/commands/create-evenement.command.handler'
import { CreateRechercheCommandHandler } from './application/commands/create-recherche.command.handler'
import { CreateRendezVousCommandHandler } from './application/commands/create-rendez-vous.command.handler'
import { CreerJeuneMiloCommandHandler } from './application/commands/creer-jeune-milo.command.handler'
import { CreerRendezVousCommandHandler } from './application/commands/rendez-vous/creer-rendez-vous.command.handler'
import { CreerJeuneMiloCommandHandler } from './application/commands/milo/creer-jeune-milo.command.handler'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chaud pour commencer à travailler un découpage en modules plutôt qu'ajouter un autre layer. On pourrait faire un point tech back dédié

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

que veux-tu dire par modules ?
là c'est juste une petite organisation pour qu'on se retrouve plus facilement dans les commands/queries

import { CreerJeunePoleEmploiCommandHandler } from './application/commands/creer-jeune-pole-emploi.command.handler'
import { CreerSuperviseursCommandHandler } from './application/commands/creer-superviseurs.command.handler'
import { DeleteActionCommandHandler } from './application/commands/action/delete-action.command.handler'
Expand Down Expand Up @@ -67,7 +67,7 @@ import { GetDetailOffreEmploiQueryHandler } from './application/queries/get-deta
import { GetDetailOffreImmersionQueryHandler } from './application/queries/get-detail-offre-immersion.query.handler'
import { GetDetailRendezVousQueryHandler } from './application/queries/rendez-vous/get-detail-rendez-vous.query.handler.db'
import { GetDetailOffreServiceCiviqueQueryHandler } from './application/queries/get-detail-offre-service-civique.query.handler'
import { GetDossierMiloJeuneQueryHandler } from './application/queries/get-dossier-milo-jeune.query.handler'
import { GetDossierMiloJeuneQueryHandler } from './application/queries/milo/get-dossier-milo-jeune.query.handler'
import { GetFavorisOffresEmploiJeuneQueryHandler } from './application/queries/get-favoris-offres-emploi-jeune.query.handler.db'
import { GetFavorisOffresImmersionJeuneQueryHandler } from './application/queries/get-favoris-offres-immersion-jeune.query.handler.db'
import { GetHomeJeuneHandler } from './application/queries/get-home-jeune.query.handler'
Expand Down Expand Up @@ -97,15 +97,15 @@ import {
import { ChatRepositoryToken } from './domain/chat'
import {
Conseiller,
ConseillersRepositoryToken
ConseillerRepositoryToken
} from './domain/conseiller/conseiller'
import { EvenementService, EvenementsRepositoryToken } from './domain/evenement'
import { Fichier, FichierRepositoryToken } from './domain/fichier'
import {
Jeune,
JeuneConfigurationApplicationRepositoryToken,
JeunePoleEmploiRepositoryToken,
JeunesRepositoryToken
JeuneRepositoryToken
} from './domain/jeune/jeune'
import {
Notification,
Expand Down Expand Up @@ -187,8 +187,8 @@ import {
} from './infrastructure/clients/pole-emploi-partenaire-client'
import { GetDemarchesQueryHandler } from './application/queries/get-demarches.query.handler'
import { GetCatalogueDemarchesQueryHandler } from './application/queries/get-catalogue-demarches.query.handler'
import { GetJeuneMiloByDossierQueryHandler } from './application/queries/get-jeune-milo-by-dossier.query.handler.db'
import { UpdateRendezVousCommandHandler } from './application/commands/update-rendez-vous.command.handler'
import { GetJeuneMiloByDossierQueryHandler } from './application/queries/milo/get-jeune-milo-by-dossier.query.handler.db'
import { ModifierRendezVousCommandHandler } from './application/commands/rendez-vous/modifier-rendez-vous.command.handler'
import { InvitationIcsClient } from './infrastructure/clients/invitation-ics.client'
import { Mail, MailRepositoryToken, MailServiceToken } from './domain/mail'
import { ChatCryptoService } from './utils/chat-crypto-service'
Expand Down Expand Up @@ -237,7 +237,7 @@ import { GetCommentairesActionQueryHandler } from './application/queries/action/
import { GetJeuneHomeAgendaQueryHandler } from './application/queries/get-jeune-home-agenda.query.handler.db'
import { JeunePoleEmploiSqlRepository } from './infrastructure/repositories/jeune/jeune-pole-emploi-sql.repository.db'
import { GetTypesQualificationsQueryHandler } from './application/queries/action/get-types-qualifications.query.handler'
import { ActionMiloHttpRepository } from './infrastructure/repositories/action/action-milo-http-sql.repository'
import { ActionMiloHttpRepository } from './infrastructure/repositories/milo/action.milo.repository'
import { QualifierActionCommandHandler } from './application/commands/action/qualifier-action.command.handler'
import { GetSuiviSemainePoleEmploiQueryHandler } from './application/queries/get-suivi-semaine-pole-emploi.query.handler'
import { GetDemarchesQueryGetter } from './application/queries/query-getters/pole-emploi/get-demarches.query.getter'
Expand Down Expand Up @@ -275,14 +275,13 @@ import { HistoriqueRendezVousRepositoryToken } from './domain/rendez-vous/histor
import { GetAnimationsCollectivesJeuneQueryHandler } from './application/queries/rendez-vous/get-animations-collectives-jeune.query.handler.db'
import { GetUnRendezVousJeuneQueryHandler } from './application/queries/rendez-vous/get-un-rendez-vous-jeune.query.handler.db'
import { CreateListeDeDiffusionCommandHandler } from './application/commands/create-liste-de-diffusion.command.handler'
import { ListeDeDiffusionSqlRepository } from './infrastructure/repositories/conseiller/liste-de-diffusion-sql.repository.db'
import { ListeDeDiffusionSqlRepository } from './infrastructure/repositories/liste-de-diffusion-sql.repository.db'
import { ListeDeDiffusionRepositoryToken } from './domain/conseiller/liste-de-diffusion'
import { GetListesDeDiffusionDuConseillerQueryHandler } from './application/queries/get-listes-de-diffusion-du-conseiller.query.handler.db'
import { ListesDeDiffusionController } from './infrastructure/routes/listes-de-diffusion.controller'
import { ListeDeDiffusionAuthorizer } from './application/authorizers/liste-de-diffusion-authorizer'
import { UpdateListeDeDiffusionCommandHandler } from './application/commands/update-liste-de-diffusion.command.handler'
import { GetDetailListeDeDiffusionQueryHandler } from './application/queries/get-detail-liste-de-diffusion.query.handler.db'
import { MajAgenceAnimationCollectiveJobHandler } from './application/jobs/maj-agence-animation-collective.job.handler.db'
import { BigqueryClient } from './infrastructure/clients/bigquery.client'
import { MessagesController } from './infrastructure/routes/messages.controller'
import { SupportController } from './infrastructure/routes/support.controller'
Expand All @@ -302,7 +301,7 @@ import { DiagorienteController } from './infrastructure/routes/diagoriente.contr
import { GetDiagorienteUrlsQueryHandler } from './application/queries/get-diagoriente-urls.query.handler'
import { ArchiverJeuneSupportCommandHandler } from './application/commands/support/archiver-jeune-support.command.handler'
import { GetDiagorienteMetiersFavorisQueryHandler } from './application/queries/get-diagoriente-metiers-favoris.query.handler'
import { EnvoyerFormulaireContactImmersionCommandHandler } from './application/commands/immersion/envoyer-formulaire-contact-immersion.command.handler'
import { EnvoyerFormulaireContactImmersionCommandHandler } from './application/commands/immersion/envoyer-formulaire-contact-immersion.command.handler.db'
import { GetAccueilJeuneMiloQueryHandler } from './application/queries/accueil/get-accueil-jeune-milo.query.handler.db'
import { GetAccueilJeunePoleEmploiQueryHandler } from './application/queries/accueil/get-accueil-jeune-pole-emploi.query.handler.db'
import { JeunesPoleEmploiController } from './infrastructure/routes/jeunes.pole-emploi.controller'
Expand Down Expand Up @@ -345,7 +344,7 @@ import { HandleJobGenererJDDCommandHandler } from './application/jobs/generer-jd
import { MajSegmentsJobHandler } from './application/jobs/maj-segments.job.handler.db'
import { GetDetailSessionJeuneMiloQueryHandler } from 'src/application/queries/milo/get-detail-session-jeune.milo.query.handler.db'
import { GetSessionsJeuneMiloQueryGetter } from 'src/application/queries/query-getters/milo/get-sessions-jeune.milo.query.getter.db'
import { EmargementSessionMiloCommandHandler } from 'src/application/commands/milo/emargement-session-milo.command.handler'
import { EmargerSessionMiloCommandHandler } from 'src/application/commands/milo/emarger-session-milo.command.handler'
import { GetSessionsConseillerMiloQueryGetter } from './application/queries/query-getters/milo/get-sessions-conseiller.milo.query.getter.db'
import { ConseillerInterStructureMiloAuthorizer } from './application/authorizers/conseiller-inter-structure-milo-authorizer'
import { GetAgendaSessionsConseillerMiloQueryHandler } from 'src/application/queries/milo/get-agenda-sessions-conseiller.milo.query.handler.db'
Expand Down Expand Up @@ -378,9 +377,9 @@ export const buildModuleMetadata = (): ModuleMetadata => ({
// De base
ActionsController,
JeunesController,
JeunesControllerV2,
JeunesMiloController,
JeunesPoleEmploiController,
JeunesControllerV2,
ConseillersController,
ConseillersControllerV2,
ConseillersMiloController,
Expand Down Expand Up @@ -467,11 +466,11 @@ export const buildModuleMetadata = (): ModuleMetadata => ({
useClass: ActionSqlRepository
},
{
provide: JeunesRepositoryToken,
provide: JeuneRepositoryToken,
useClass: JeuneSqlRepository
},
{
provide: ConseillersRepositoryToken,
provide: ConseillerRepositoryToken,
useClass: ConseillerSqlRepository
},
{
Expand Down Expand Up @@ -657,7 +656,7 @@ export function buildQueryCommandsProviders(): Provider[] {
GetResumeActionsDesJeunesDuConseillerQueryHandlerDb,
UpdateJeuneConfigurationApplicationCommandHandler,
UpdateStatutActionCommandHandler,
CreateRendezVousCommandHandler,
CreerRendezVousCommandHandler,
DeleteRendezVousCommandHandler,
GetAllRendezVousConseillerQueryHandler,
GetRendezVousJeuneQueryHandler,
Expand Down Expand Up @@ -694,7 +693,7 @@ export function buildQueryCommandsProviders(): Provider[] {
GetDetailRendezVousQueryHandler,
GetDemarchesQueryHandler,
GetJeuneMiloByDossierQueryHandler,
UpdateRendezVousCommandHandler,
ModifierRendezVousCommandHandler,
GetConseillersJeuneQueryHandler,
GetAgencesQueryHandler,
ModifierConseillerCommandHandler,
Expand Down Expand Up @@ -779,7 +778,7 @@ export function buildQueryCommandsProviders(): Provider[] {
GetDetailSessionConseillerMiloQueryHandler,
GetDetailSessionJeuneMiloQueryHandler,
UpdateSessionMiloCommandHandler,
EmargementSessionMiloCommandHandler,
EmargerSessionMiloCommandHandler,
EvenementEmploiCodePostalQueryGetter,
GetCatalogueDemarchesQueryHandler
]
Expand All @@ -797,7 +796,6 @@ export const JobHandlerProviders = [
EnvoyerEmailsMessagesConseillersJobHandler,
NotifierRecherchesOffreEmploiJobHandler,
RecupererSituationsJeunesMiloJobHandler,
MajAgenceAnimationCollectiveJobHandler,
MajCodesEvenementsJobHandler,
NotifierRappelInstanceSessionMiloJobHandler,
NotifierRendezVousPEJobHandler,
Expand Down
8 changes: 4 additions & 4 deletions src/application/authorizers/conseiller-authorizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@ import {
import { Authentification } from '../../domain/authentification'
import {
Conseiller,
ConseillersRepositoryToken
ConseillerRepositoryToken
} from '../../domain/conseiller/conseiller'
import { Core } from '../../domain/core'
import { Jeune, JeunesRepositoryToken } from '../../domain/jeune/jeune'
import { Jeune, JeuneRepositoryToken } from '../../domain/jeune/jeune'
import Structure = Core.Structure

@Injectable()
export class ConseillerAuthorizer {
constructor(
@Inject(ConseillersRepositoryToken)
@Inject(ConseillerRepositoryToken)
private conseillerRepository: Conseiller.Repository,
@Inject(JeunesRepositoryToken)
@Inject(JeuneRepositoryToken)
private jeuneRepository: Jeune.Repository
) {}
async autoriserLeConseiller(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import { Action, ActionsRepositoryToken } from '../../domain/action/action'
import { Authentification } from '../../domain/authentification'
import {
Conseiller,
ConseillersRepositoryToken
ConseillerRepositoryToken
} from '../../domain/conseiller/conseiller'
import { Core, estMiloPassEmploi } from '../../domain/core'
import { Jeune, JeunesRepositoryToken } from '../../domain/jeune/jeune'
import { Jeune, JeuneRepositoryToken } from '../../domain/jeune/jeune'
import {
RendezVous,
RendezVousRepositoryToken
Expand All @@ -21,9 +21,9 @@ import {
@Injectable()
export class ConseillerInterAgenceAuthorizer {
constructor(
@Inject(ConseillersRepositoryToken)
@Inject(ConseillerRepositoryToken)
private conseillerRepository: Conseiller.Repository,
@Inject(JeunesRepositoryToken)
@Inject(JeuneRepositoryToken)
private jeuneRepository: Jeune.Repository,
@Inject(ActionsRepositoryToken)
private actionRepository: Action.Repository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export class ConseillerInterStructureMiloAuthorizer {

if (
isSuccess(conseiller) &&
conseiller.data.structure.id === idStructureMilo
conseiller.data.structureMilo.id === idStructureMilo
) {
return emptySuccess()
}
Expand All @@ -55,7 +55,8 @@ export class ConseillerInterStructureMiloAuthorizer {
if (
isSuccess(jeuneMilo) &&
jeuneMilo.data.idStructureMilo &&
jeuneMilo.data.idStructureMilo === conseillerMilo.data.structure.id
jeuneMilo.data.idStructureMilo ===
conseillerMilo.data.structureMilo.id
) {
return emptySuccess()
}
Expand Down
4 changes: 2 additions & 2 deletions src/application/authorizers/fichier-authorizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ import {
} from '../../building-blocks/types/result'
import { Authentification } from '../../domain/authentification'
import { Fichier, FichierRepositoryToken } from '../../domain/fichier'
import { Jeune, JeunesRepositoryToken } from '../../domain/jeune/jeune'
import { Jeune, JeuneRepositoryToken } from '../../domain/jeune/jeune'

@Injectable()
export class FichierAuthorizer {
constructor(
@Inject(FichierRepositoryToken)
private fichierRepository: Fichier.Repository,
@Inject(JeunesRepositoryToken)
@Inject(JeuneRepositoryToken)
private jeuneRepository: Jeune.Repository
) {}

Expand Down
Loading
Loading