diff --git a/src/personal-offers/personal-offers.controller.ts b/src/personal-offers/personal-offers.controller.ts index ec75b313d390fdf8e876123827ea04164b5d7b65..d3543b6ab132abcc9108e0acb95c0e337242c346 100644 --- a/src/personal-offers/personal-offers.controller.ts +++ b/src/personal-offers/personal-offers.controller.ts @@ -21,6 +21,7 @@ import { CreatePersonalOfferDto } from './dto/create-personal-offer.dto'; import { PersonalOfferDto } from './dto/personal-offer.dto'; import { PersonalOffersService } from './personal-offers.service'; import { PersonalOfferDocument } from './schemas/personal-offer.schema'; +import { Types } from 'mongoose'; @ApiTags('personnal-offers') @Controller('personal-offers') @@ -64,6 +65,10 @@ export class PersonalOffersController { ); await this.structuresService.addPersonalOffer(createPersonalOfferDto.structureId, personalOfferDocument); await this.usersService.addPersonalOffer(user._id, personalOfferDocument); + + // Update if structure has user with personalOffer (hasUserWithAppointmentDN) + this.structuresService.updateDenormalizedFields(new Types.ObjectId(createPersonalOfferDto.structureId)); + return personalOfferDocument; } diff --git a/src/personal-offers/personal-offers.service.ts b/src/personal-offers/personal-offers.service.ts index 7df3b4600e17dcdabaa71768006ee107ca2bd004..b426561b7a5657ee2c8ec48a6d8ea54eeff65d48 100644 --- a/src/personal-offers/personal-offers.service.ts +++ b/src/personal-offers/personal-offers.service.ts @@ -56,6 +56,10 @@ export class PersonalOffersService { if (!deletedOffer) { throw new HttpException('Invalid personal offer id for deletion', HttpStatus.BAD_REQUEST); } + + // Update if structure has user with personalOffer (hasUserWithAppointmentDN) + this.structuresService.updateDenormalizedFields(structure._id); + return deletedOffer; } } diff --git a/src/structures/services/structures.service.ts b/src/structures/services/structures.service.ts index 5b8c5651275ed8b9acfbdc929f551abe39022ba7..83572d2a18738d16fadb0aeeb9cf9a24a5a0b664 100644 --- a/src/structures/services/structures.service.ts +++ b/src/structures/services/structures.service.ts @@ -1296,7 +1296,11 @@ export class StructuresService { owners.forEach((owner: User) => { if (User.getWithAppointment(owner)) { - structure.hasUserWithAppointmentDN = true; + // If user has personalOffer for this structure + const ownerOffers = owner.personalOffers.map((po) => po.id); + if (structure.personalOffers.filter((structureOffer) => ownerOffers.includes(structureOffer.id)).length) { + structure.hasUserWithAppointmentDN = true; + } } // If user has job 'Conseiller numérique' ou 'Conseillère numérique' if (owner.job && this.jobsService.isConseillerNumerique(owner.job.id)) {