Skip to content

Commit

Permalink
fix: ajoute autoinscription detail session beneficiaire
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurlbrjc committed Feb 13, 2025
1 parent 4833aa4 commit 66d8b88
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand Down Expand Up @@ -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))
}
Expand All @@ -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)) {
Expand All @@ -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 }
)
)
}
Expand Down
25 changes: 15 additions & 10 deletions src/application/queries/query-mappers/milo.mappers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand All @@ -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,
Expand All @@ -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
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,9 @@ export class DetailSessionJeuneMiloQueryModel {
@ApiProperty()
animateur: string

@ApiProperty()
autoinscription: boolean

@ApiProperty({ required: false })
nomPartenaire?: string

Expand Down
3 changes: 2 additions & 1 deletion test/fixtures/sessions.fixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = (
Expand Down

0 comments on commit 66d8b88

Please sign in to comment.