From 66d8b8814976f86ff86b8cef908ca69ce4832a2c Mon Sep 17 00:00:00 2001 From: Arthur L-Brjc <7021678+arthurlbrjc@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:28:13 +0100 Subject: [PATCH] fix: ajoute autoinscription detail session beneficiaire --- ...ail-session-jeune.milo.query.handler.db.ts | 19 ++++++++------ .../queries/query-mappers/milo.mappers.ts | 25 +++++++++++-------- .../query-models/sessions.milo.query.model.ts | 3 +++ test/fixtures/sessions.fixture.ts | 3 ++- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/application/queries/milo/get-detail-session-jeune.milo.query.handler.db.ts b/src/application/queries/milo/get-detail-session-jeune.milo.query.handler.db.ts index 6f4d0c06b..0cc3f9556 100644 --- a/src/application/queries/milo/get-detail-session-jeune.milo.query.handler.db.ts +++ b/src/application/queries/milo/get-detail-session-jeune.milo.query.handler.db.ts @@ -22,6 +22,7 @@ import { Authentification } from 'src/domain/authentification' import { estMilo } from 'src/domain/core' import { OidcClient } from 'src/infrastructure/clients/oidc-client.db' import { MiloClient } from 'src/infrastructure/clients/milo-client' +import { SessionMiloSqlModel } from 'src/infrastructure/sequelize/models/session-milo.sql-model' import { StructureMiloSqlModel } from 'src/infrastructure/sequelize/models/structure-milo.sql-model' import { JeuneSqlModel } from '../../../infrastructure/sequelize/models/jeune.sql-model' @@ -50,12 +51,10 @@ export class GetDetailSessionJeuneMiloQueryHandler extends QueryHandler< const jeune = await JeuneSqlModel.findByPk(query.idJeune, { include: [{ model: StructureMiloSqlModel, required: true }] }) - const timezoneDeLaStructureDuJeune = jeune?.structureMilo?.timezone if (!timezoneDeLaStructureDuJeune) { return failure(new JeuneMiloSansStructure(query.idJeune)) } - if (!jeune.idPartenaire) { return failure(new JeuneMiloSansIdDossier(query.idJeune)) } @@ -64,7 +63,6 @@ export class GetDetailSessionJeuneMiloQueryHandler extends QueryHandler< query.accessToken, jeune.structure ) - const resultDetailSessionMiloClient = await this.miloClient.getDetailSessionJeune(idpToken, query.idSession) if (isFailure(resultDetailSessionMiloClient)) { @@ -83,22 +81,27 @@ export class GetDetailSessionJeuneMiloQueryHandler extends QueryHandler< jeune.idPartenaire, { debut: dateSession, fin: dateSession } ) - if (isFailure(resultSessionsParDossier)) { return resultSessionsParDossier } - const detailInscription = resultSessionsParDossier.data.find( session => session.session.id.toString() === query.idSession ) const inscription = detailInscription?.sessionInstance + const configurationSession = await SessionMiloSqlModel.findByPk( + detailSession.session.id + ) + return success( mapDetailSessionJeuneDtoToQueryModel( detailSession, - jeune.idPartenaire, - timezoneDeLaStructureDuJeune, - inscription + { + idDossier: jeune.idPartenaire, + timezone: timezoneDeLaStructureDuJeune, + inscription + }, + { autoinscription: configurationSession?.autoinscription ?? false } ) ) } diff --git a/src/application/queries/query-mappers/milo.mappers.ts b/src/application/queries/query-mappers/milo.mappers.ts index 92694d33f..cb336f10d 100644 --- a/src/application/queries/query-mappers/milo.mappers.ts +++ b/src/application/queries/query-mappers/milo.mappers.ts @@ -151,9 +151,12 @@ export function mapSessionConseillerDtoToAgendaQueryModel( export function mapDetailSessionJeuneDtoToQueryModel( sessionDto: SessionJeuneDetailDto, - idDossier: string, - timezone: string, - inscription?: { statut: string } + beneficiaire: { + idDossier: string + timezone: string + inscription?: { statut: string } + }, + configuration: { autoinscription: boolean } ): DetailSessionJeuneMiloQueryModel { const queryModel: DetailSessionJeuneMiloQueryModel = { id: sessionDto.session.id.toString(), @@ -163,11 +166,11 @@ export function mapDetailSessionJeuneDtoToQueryModel( type: buildSessionTypeQueryModel(sessionDto.offre.type), dateHeureDebut: dateFromMilo( sessionDto.session.dateHeureDebut, - timezone + beneficiaire.timezone ).toISO(), dateHeureFin: dateFromMilo( sessionDto.session.dateHeureFin, - timezone + beneficiaire.timezone ).toISO(), lieu: sessionDto.session.lieu, animateur: sessionDto.session.animateur, @@ -176,20 +179,22 @@ export function mapDetailSessionJeuneDtoToQueryModel( commentaire: sessionDto.session.commentaire ?? undefined, dateMaxInscription: sessionDto.session.dateMaxInscription ? DateTime.fromISO(sessionDto.session.dateMaxInscription, { - zone: timezone + zone: beneficiaire.timezone }) .endOf('day') .toUTC() .toISO() : undefined, - nbPlacesDisponibles: sessionDto.session.nbPlacesDisponibles ?? undefined + nbPlacesDisponibles: sessionDto.session.nbPlacesDisponibles ?? undefined, + autoinscription: configuration.autoinscription } - if (inscription) + + if (beneficiaire.inscription) queryModel.inscription = { statut: dtoToStatutInscription( - inscription.statut, + beneficiaire.inscription.statut, sessionDto.session.id, - idDossier + beneficiaire.idDossier ) } diff --git a/src/application/queries/query-models/sessions.milo.query.model.ts b/src/application/queries/query-models/sessions.milo.query.model.ts index 6b0041f7d..e7c113426 100644 --- a/src/application/queries/query-models/sessions.milo.query.model.ts +++ b/src/application/queries/query-models/sessions.milo.query.model.ts @@ -222,6 +222,9 @@ export class DetailSessionJeuneMiloQueryModel { @ApiProperty() animateur: string + @ApiProperty() + autoinscription: boolean + @ApiProperty({ required: false }) nomPartenaire?: string diff --git a/test/fixtures/sessions.fixture.ts b/test/fixtures/sessions.fixture.ts index 36b65e795..ce26922a0 100644 --- a/test/fixtures/sessions.fixture.ts +++ b/test/fixtures/sessions.fixture.ts @@ -91,7 +91,8 @@ export const unDetailSessionJeuneMiloQueryModel: DetailSessionJeuneMiloQueryMode description: 'Une-Desc', commentaire: 'Un-commentaire', dateMaxInscription: '2020-04-07T10:20:00.000Z', - nbPlacesDisponibles: 10 + nbPlacesDisponibles: 10, + autoinscription: true } export const unAgendaConseillerMiloSessionListItemQueryModel = (