Loading backend/src/place/place.controller.ts +11 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ import { CustomAdminRequest } from 'src/auth/admin/interface/customAdminReq'; import { UpdatePlaceReqDto } from './dto/update-place.req.dto'; import { AuthAdminGuard } from 'src/auth/admin/authAdmin.guard'; import { GetPlaceDto } from './dto/get-place.dto'; import { AuthUserGuard } from 'src/auth/user/authUser.guard'; import { CustomUserRequest } from 'src/auth/user/interface/customUserReq'; @Controller('place') @ApiTags('Place') Loading Loading @@ -96,4 +98,13 @@ export class PlaceController { throw e; } } @Get('open/:idTown/:lang') @ApiBearerAuth('jwt') @ApiConsumes('json') @UseGuards(AuthUserGuard) @ApiParam({ name: 'idTown', type: Number }) async findOpenPlaces(@Param('idTown') idTown: number, @Param('lang') lang: string, @Req() req: CustomUserRequest) { return await this.placeService.findPlacesNotVisitedByUserAndOpenResponse(req.user.email, lang as LANGUAGES, idTown); } } backend/src/place/place.module.ts +16 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,14 @@ import { JwtService } from '@nestjs/jwt'; import { EncryptionService } from 'src/auth/encryption/encryption.service'; import { Admin } from 'src/admin/entities/admin.entity'; import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity'; import { AuthUserService } from 'src/auth/user/authUserservice'; import { UserResetCode } from 'src/auth/user/entities/user-reset-code.entity'; import { UserConfirmCode } from 'src/auth/user/entities/user-confirm-code.entity'; import { UserService } from 'src/user/user.service'; import { EmailService } from 'src/email/email.service'; import { User } from 'src/user/entities/user.entity'; import { CategoryService } from 'src/category/category.service'; import { Category } from 'src/category/entities/category.entity'; @Module({ controllers: [PlaceController], Loading @@ -28,6 +36,10 @@ import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity JwtService, EncryptionService, TownService, AuthUserService, UserService, EmailService, CategoryService, ], imports: [ TypeOrmModule.forFeature([ Loading @@ -39,6 +51,10 @@ import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity State, Admin, AdminResetCode, UserResetCode, UserConfirmCode, User, Category, ]), TypeOrmModule, ], Loading backend/src/place/place.service.ts +21 −0 Original line number Diff line number Diff line Loading @@ -249,4 +249,25 @@ export class PlaceService { return placesWithAvailability.filter((place) => place !== null); } async findPlacesNotVisitedByUserAndOpenResponse(email: string, lang: LANGUAGES, idTown: number) { const places: GetPlaceDto[] = await this.findPlacesNotVisitedByUserAndOpen(email, lang, idTown); const placesResponse = []; for (const place of places) { const visited: any = await this.dataSource .getRepository(Visited) .createQueryBuilder('visited') .leftJoinAndSelect('visited.place', 'place') .where('visited.user = :email', { email }) .andWhere('place.idPlace = :idPlace', { idPlace: place.idPlace }) .getOne(); placesResponse.push({ ...place, visited: visited ? true : false, }); } return placesResponse; } } Loading
backend/src/place/place.controller.ts +11 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ import { CustomAdminRequest } from 'src/auth/admin/interface/customAdminReq'; import { UpdatePlaceReqDto } from './dto/update-place.req.dto'; import { AuthAdminGuard } from 'src/auth/admin/authAdmin.guard'; import { GetPlaceDto } from './dto/get-place.dto'; import { AuthUserGuard } from 'src/auth/user/authUser.guard'; import { CustomUserRequest } from 'src/auth/user/interface/customUserReq'; @Controller('place') @ApiTags('Place') Loading Loading @@ -96,4 +98,13 @@ export class PlaceController { throw e; } } @Get('open/:idTown/:lang') @ApiBearerAuth('jwt') @ApiConsumes('json') @UseGuards(AuthUserGuard) @ApiParam({ name: 'idTown', type: Number }) async findOpenPlaces(@Param('idTown') idTown: number, @Param('lang') lang: string, @Req() req: CustomUserRequest) { return await this.placeService.findPlacesNotVisitedByUserAndOpenResponse(req.user.email, lang as LANGUAGES, idTown); } }
backend/src/place/place.module.ts +16 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,14 @@ import { JwtService } from '@nestjs/jwt'; import { EncryptionService } from 'src/auth/encryption/encryption.service'; import { Admin } from 'src/admin/entities/admin.entity'; import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity'; import { AuthUserService } from 'src/auth/user/authUserservice'; import { UserResetCode } from 'src/auth/user/entities/user-reset-code.entity'; import { UserConfirmCode } from 'src/auth/user/entities/user-confirm-code.entity'; import { UserService } from 'src/user/user.service'; import { EmailService } from 'src/email/email.service'; import { User } from 'src/user/entities/user.entity'; import { CategoryService } from 'src/category/category.service'; import { Category } from 'src/category/entities/category.entity'; @Module({ controllers: [PlaceController], Loading @@ -28,6 +36,10 @@ import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity JwtService, EncryptionService, TownService, AuthUserService, UserService, EmailService, CategoryService, ], imports: [ TypeOrmModule.forFeature([ Loading @@ -39,6 +51,10 @@ import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity State, Admin, AdminResetCode, UserResetCode, UserConfirmCode, User, Category, ]), TypeOrmModule, ], Loading
backend/src/place/place.service.ts +21 −0 Original line number Diff line number Diff line Loading @@ -249,4 +249,25 @@ export class PlaceService { return placesWithAvailability.filter((place) => place !== null); } async findPlacesNotVisitedByUserAndOpenResponse(email: string, lang: LANGUAGES, idTown: number) { const places: GetPlaceDto[] = await this.findPlacesNotVisitedByUserAndOpen(email, lang, idTown); const placesResponse = []; for (const place of places) { const visited: any = await this.dataSource .getRepository(Visited) .createQueryBuilder('visited') .leftJoinAndSelect('visited.place', 'place') .where('visited.user = :email', { email }) .andWhere('place.idPlace = :idPlace', { idPlace: place.idPlace }) .getOne(); placesResponse.push({ ...place, visited: visited ? true : false, }); } return placesResponse; } }