Loading backend/src/place/entities/place.entity.ts +3 −0 Original line number Diff line number Diff line Loading @@ -64,4 +64,7 @@ export class Place { @Column({ nullable: false }) closeAt: number; @Column({ nullable: false, default: true }) active: boolean; } backend/src/place/place.controller.ts +15 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import { Req, Patch, UseGuards, Delete, } from '@nestjs/common'; import { PlaceService } from './place.service'; import { CreatePlaceDateTradDto } from './dto/create-place-date.dto'; Loading Loading @@ -107,4 +108,18 @@ export class PlaceController { 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); } @Delete(':idPlace') @UseGuards(AuthAdminGuard) @Roles([ALL_ROLES.ADMIN]) @ApiBearerAuth('jwt') @ApiParam({ name: 'idPlace', type: Number }) async remove(@Param('idPlace') idPlace: number) { try { await this.placeService.remove(idPlace); return { message: 'Place removed successfully' }; } catch (e) { throw e; } } } backend/src/place/place.service.ts +9 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,7 @@ export class PlaceService { .where('place.idTown = :idTown', { idTown: idTown }) .andWhere('placeTrad.language = :language', { language: lang }) .andWhere('category.language = :language', { language: lang }) .andWhere('place.active = :active', { active: true }) .getMany(); const places: GetPlaceDto[] = res.map((place): GetPlaceDto => { return { Loading Loading @@ -226,6 +227,7 @@ export class PlaceService { .createQueryBuilder('visited') .leftJoinAndSelect('visited.place', 'place') .where('visited.user = :email', { email }) .andWhere('place.active = :active', { active: true }) .getMany(); const visitedIds: number[] = visited.map((visit) => visit.place.idPlace); // podemos hacerlo en la query Loading Loading @@ -261,6 +263,7 @@ export class PlaceService { .leftJoinAndSelect('visited.place', 'place') .where('visited.user = :email', { email }) .andWhere('place.idPlace = :idPlace', { idPlace: place.idPlace }) .andWhere('place.active = :active', { active: true }) .getOne(); placesResponse.push({ Loading @@ -270,4 +273,10 @@ export class PlaceService { } return placesResponse; } async remove(id: number) { const place = await this.placeRepository.findOneByOrFail({ idPlace: id }); place.active = false; await this.placeRepository.save(place); } } Loading
backend/src/place/entities/place.entity.ts +3 −0 Original line number Diff line number Diff line Loading @@ -64,4 +64,7 @@ export class Place { @Column({ nullable: false }) closeAt: number; @Column({ nullable: false, default: true }) active: boolean; }
backend/src/place/place.controller.ts +15 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import { Req, Patch, UseGuards, Delete, } from '@nestjs/common'; import { PlaceService } from './place.service'; import { CreatePlaceDateTradDto } from './dto/create-place-date.dto'; Loading Loading @@ -107,4 +108,18 @@ export class PlaceController { 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); } @Delete(':idPlace') @UseGuards(AuthAdminGuard) @Roles([ALL_ROLES.ADMIN]) @ApiBearerAuth('jwt') @ApiParam({ name: 'idPlace', type: Number }) async remove(@Param('idPlace') idPlace: number) { try { await this.placeService.remove(idPlace); return { message: 'Place removed successfully' }; } catch (e) { throw e; } } }
backend/src/place/place.service.ts +9 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,7 @@ export class PlaceService { .where('place.idTown = :idTown', { idTown: idTown }) .andWhere('placeTrad.language = :language', { language: lang }) .andWhere('category.language = :language', { language: lang }) .andWhere('place.active = :active', { active: true }) .getMany(); const places: GetPlaceDto[] = res.map((place): GetPlaceDto => { return { Loading Loading @@ -226,6 +227,7 @@ export class PlaceService { .createQueryBuilder('visited') .leftJoinAndSelect('visited.place', 'place') .where('visited.user = :email', { email }) .andWhere('place.active = :active', { active: true }) .getMany(); const visitedIds: number[] = visited.map((visit) => visit.place.idPlace); // podemos hacerlo en la query Loading Loading @@ -261,6 +263,7 @@ export class PlaceService { .leftJoinAndSelect('visited.place', 'place') .where('visited.user = :email', { email }) .andWhere('place.idPlace = :idPlace', { idPlace: place.idPlace }) .andWhere('place.active = :active', { active: true }) .getOne(); placesResponse.push({ Loading @@ -270,4 +273,10 @@ export class PlaceService { } return placesResponse; } async remove(id: number) { const place = await this.placeRepository.findOneByOrFail({ idPlace: id }); place.active = false; await this.placeRepository.save(place); } }