Skip to content
Snippets Groups Projects
Commit 074663fc authored by Jérémie BRISON's avatar Jérémie BRISON
Browse files

fix (structureClaim) : fix the claim of a structure multiple times with a user

parent 33fd1eea
No related branches found
No related tags found
3 merge requests!27Recette,!26Dev,!20Fix/bug-structureClaim
...@@ -7,6 +7,7 @@ import { Structure, StructureDocument } from '../schemas/structure.schema'; ...@@ -7,6 +7,7 @@ import { Structure, StructureDocument } from '../schemas/structure.schema';
import { Logger } from '@nestjs/common'; import { Logger } from '@nestjs/common';
import { structureDto } from '../dto/structure.dto'; import { structureDto } from '../dto/structure.dto';
import { UsersService } from '../../users/users.service'; import { UsersService } from '../../users/users.service';
import { User } from '../../users/schemas/user.schema';
@Injectable() @Injectable()
export class StructuresService { export class StructuresService {
...@@ -117,9 +118,10 @@ export class StructuresService { ...@@ -117,9 +118,10 @@ export class StructuresService {
}); });
} }
public async isClaimed(structureId: string): Promise<boolean> { public async isClaimed(structureId: string, user: User): Promise<boolean> {
const isStructureClaimed = await this.userService.isStructureClaimed(structureId.toString()); const isStructureClaimed = await this.userService.isStructureClaimed(structureId.toString());
if (isStructureClaimed) { const isUserAlreadyClaimed = await this.userService.isUserAlreadyClaimedStructure(structureId, user.email);
if (isStructureClaimed || isUserAlreadyClaimed) {
return true; return true;
} }
return false; return false;
......
...@@ -36,9 +36,9 @@ export class StructuresController { ...@@ -36,9 +36,9 @@ export class StructuresController {
return this.structureService.findAll(); return this.structureService.findAll();
} }
@Get(':id/isClaimed') @Post(':id/isClaimed')
public async isClaimed(@Param('id') id: string): Promise<boolean> { public async isClaimed(@Param('id') id: string, @Body() user?: User): Promise<boolean> {
return this.structureService.isClaimed(id); return this.structureService.isClaimed(id, user);
} }
@Post(':id/claim') @Post(':id/claim')
......
...@@ -288,6 +288,14 @@ export class UsersService { ...@@ -288,6 +288,14 @@ export class UsersService {
return this.userModel.findOne({ structuresLink: structureId }).exec(); return this.userModel.findOne({ structuresLink: structureId }).exec();
} }
public async isUserAlreadyClaimedStructure(structureId: string, userEmail: string): Promise<boolean> {
const user = await this.findOne(userEmail, true);
if (user) {
return user.pendingStructuresLink.includes(structureId);
}
return false;
}
public async updateStructureLinked(userEmail: string, idStructure: string): Promise<string[]> { public async updateStructureLinked(userEmail: string, idStructure: string): Promise<string[]> {
const user = await this.findOne(userEmail, true); const user = await this.findOne(userEmail, true);
if (user) { if (user) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment