diff --git a/src/structures/services/structures.service.ts b/src/structures/services/structures.service.ts index fa1bdb55f594faf9accf125df99c85729c083c09..65de50201687a8c7b29d7056675f81804bef4001 100644 --- a/src/structures/services/structures.service.ts +++ b/src/structures/services/structures.service.ts @@ -13,7 +13,6 @@ import { Cron, CronExpression } from '@nestjs/schedule'; import { DateTime } from 'luxon'; import { IUser } from '../../users/interfaces/user.interface'; import * as _ from 'lodash'; -import { OwnerDto } from '../../users/dto/owner.dto'; import { StructuresSearchService } from './structures-search.service'; import { CategoriesFormationsModule } from '../../categories/schemas/categoriesFormationsModule.schema'; import { CategoriesModule } from '../../categories/categories.module'; @@ -730,15 +729,15 @@ export class StructuresService { public async findWithOwners( idStructure: string, emailUser: string - ): Promise<{ structure: Structure; owners: OwnerDto[] }> { + ): Promise<{ structure: Structure; owners: IUser[] }> { const structure = await this.findOne(idStructure); if (!structure) { throw new HttpException('Invalid structure id', HttpStatus.BAD_REQUEST); } const owners = typeof emailUser == 'undefined' - ? await this.userService.getStructureOwnersMails(structure._id, '') - : await this.userService.getStructureOwnersMails(structure._id, emailUser); + ? await this.userService.getStructureOwnersDetails(structure._id, '') + : await this.userService.getStructureOwnersDetails(structure._id, emailUser); return { structure: structure, owners: owners }; } @@ -747,7 +746,7 @@ export class StructuresService { if (!structure) { throw new HttpException('Invalid structure id', HttpStatus.BAD_REQUEST); } - const owners = await this.userService.getStructureOwnersMails(structure._id, ''); + const owners = await this.userService.getStructureOwnersDetails(structure._id, ''); const admins = await this.userService.getAdmins(); const emails = owners.map((owner) => owner.email).concat(admins.map((admin) => admin.email)); const uniqueEmails = [...new Set(emails)]; diff --git a/src/users/services/users.service.spec.ts b/src/users/services/users.service.spec.ts index 539b2fce8a265c9196320e6ddec8dba099356a23..3b0ad2daf7f8317a8bdca8215cd9f3f272741d1c 100644 --- a/src/users/services/users.service.spec.ts +++ b/src/users/services/users.service.spec.ts @@ -6,7 +6,7 @@ import * as bcrypt from 'bcrypt'; import { personalOffersDataMock } from '../../../test/mock/data/personalOffers.mock.data'; import { PersonalOfferDocument } from '../../personal-offers/schemas/personal-offer.schema'; -import { usersMockData } from '../../../test/mock/data/users.mock.data'; +import { userDetails, usersMockData } from '../../../test/mock/data/users.mock.data'; import { employersMockData } from '../../../test/mock/data/employers.mock.data'; import { LoginDto } from '../../auth/login-dto'; import { ConfigurationModule } from '../../configuration/configuration.module'; @@ -420,6 +420,13 @@ describe('UsersService', () => { } }); }); + describe('getStructureOwnersDetails', () => { + const userDetailsMock: IUser[] = userDetails as IUser[]; + it('should get Structure Owners Details', async () => { + jest.spyOn(service, 'getStructureOwnersDetails').mockResolvedValue(userDetails); + expect(await service.getStructureOwnersDetails('627b85aea0466f0f132e1599', null)).toEqual(userDetailsMock); + }); + }); describe('user employer', () => { it('should replace employer with a new one', async () => { diff --git a/src/users/services/users.service.ts b/src/users/services/users.service.ts index 6ee05978f76723da5ada4561cba70effb7d7fc39..5a69d7e701f4f6aa765ae41e6f5e089e01aa1741 100644 --- a/src/users/services/users.service.ts +++ b/src/users/services/users.service.ts @@ -11,7 +11,6 @@ import { MailerService } from '../../mailer/mailer.service'; import { IUser } from '../interfaces/user.interface'; import { EmailChangeDto } from '../dto/change-email.dto'; import { PendingStructureDto } from '../../admin/dto/pending-structure.dto'; -import { OwnerDto } from '../dto/owner.dto'; import { StructureDocument } from '../../structures/schemas/structure.schema'; import { ConfigurationService } from '../../configuration/configuration.service'; import { EmployerDocument } from '../schemas/employer.schema'; @@ -652,18 +651,14 @@ export class UsersService { return user.deleteOne(); } - public async getStructureOwnersMails(structureId: string, emailUser: string): Promise<OwnerDto[]> { + public async getStructureOwnersDetails(structureId: string, emailUser: string): Promise<IUser[]> { const users = await this.userModel .find({ structuresLink: Types.ObjectId(structureId), email: { $ne: emailUser } }) + .populate('job') + .populate('employer') + .select('name surname job employer email') .exec(); - const owners: OwnerDto[] = []; - users.forEach((user) => { - const userProfile = new OwnerDto(); - userProfile.email = user.email; - userProfile.id = user._id; - owners.push(userProfile); - }); - return owners; + return users; } public async searchUsers(searchString: string) { diff --git a/test/mock/data/users.mock.data.ts b/test/mock/data/users.mock.data.ts index 5e1285cd3f139b0611c29c678463053948f9c405..cbc762ac71307dd68daad1e76d8298b295c86b0c 100644 --- a/test/mock/data/users.mock.data.ts +++ b/test/mock/data/users.mock.data.ts @@ -56,3 +56,21 @@ export const usersMockData: IUser[] = [ save: jest.fn(), } as any, ] as IUser[]; + +export const userDetails: IUser[] = [ + { + _id: '627b85aea0466f0f132e1599', + surname: 'ADMIN', + name: 'Admin', + email: 'admin@admin.com', + employer: { + name: 'CAF', + validated: true, + }, + job: { + hasPersonalOffer: true, + name: 'CNFS', + validated: true, + }, + }, +] as IUser[];