diff --git a/backend/src/place/dto/get-place.dto.ts b/backend/src/place/dto/get-place.dto.ts index ceca88a6ec9861a6c71ae5ae2bfcb1cee436e03f..ece429a357ba679f045224ed808d9134aac653ac 100644 --- a/backend/src/place/dto/get-place.dto.ts +++ b/backend/src/place/dto/get-place.dto.ts @@ -1,12 +1,13 @@ import { Available } from 'src/pointOfInterest/enum/available.enum'; -import { Town } from 'src/town/entities/town.entity'; +import { Place } from '../entities/place.entity'; export class GetPlaceDto { + idTown: number; + idPlace: Place; available: Available; name: string; description: string; imageName: string; - idTown: Town; coords: string; openAt: number; closeAt: number; diff --git a/backend/src/place/place.controller.ts b/backend/src/place/place.controller.ts index f8d9c2e28b2ab321f523995829c2644ef72285b3..c221715ca7744d5cb644bcd4c16f924f171b5417 100644 --- a/backend/src/place/place.controller.ts +++ b/backend/src/place/place.controller.ts @@ -35,8 +35,8 @@ export class PlaceController { } } - @Get(':id') - findOne(@Param('id') id: string) { - return this.placeService.findOne(+id); + @Get(':idPlace') + findOne(@Param('idPlace') idPlace: number) { + return this.placeService.findOneAndTradAndAvailable(idPlace); } } diff --git a/backend/src/place/place.service.ts b/backend/src/place/place.service.ts index 693269968f6c94aee14e3f94381775f2f6cbeff6..443bfbc3b0609b8a571ee43d423672e18ab03a31 100644 --- a/backend/src/place/place.service.ts +++ b/backend/src/place/place.service.ts @@ -81,16 +81,19 @@ export class PlaceService { 'place.closeAt AS closeAt', 'availableDate.startDate AS startDate', 'availableDate.endDate AS endDate', + 'place.available AS available', + 'place.idTown AS idTown', ]) .where('place.idTown = :idTown', { idTown: idTown }) .andWhere('placeTrad.language = :language', { language: lang }) .getRawMany(); const places: GetPlaceDto[] = res.map((place) => { return { + idTown: place.idTown, + idPlace: place.idPlace, available: place.available, description: place.description, coords: place.coords, - idTown: place.idTown, imageName: `${ServerConstants.HOST}/places/${place.imageName}`, name: place.name, openAt: place.openAt, @@ -103,7 +106,44 @@ export class PlaceService { } async findOne(id: number) { - const place = await this.placeRepository.findOneBy({ idPlace: id }); - return place; + return await this.placeRepository.findOneBy({ idPlace: id }); + } + + async findOneAndTradAndAvailable(idPlace: number) { + const place: GetPlaceDto = await this.dataSource + .getRepository(PlaceTraduction) + .createQueryBuilder('placeTrad') + .leftJoin('placeTrad.idPlace', 'place') + .leftJoin('place.availableDates', 'availableDate') + .select([ + 'place.idPlace AS idPlace', + 'place.name AS name', + 'place.imageName AS imageName', + 'placeTrad.language AS language', + 'placeTrad.description AS description', + 'place.coords AS coords', + 'place.openAt AS openAt', + 'place.closeAt AS closeAt', + 'availableDate.startDate AS startDate', + 'availableDate.endDate AS endDate', + 'place.idTown AS idTown', + 'place.available AS available', + ]) + .where('place.idPlace = :idPlace', { idPlace: idPlace }) + .getRawOne(); + + return { + idTown: place.idTown, + idPlace: place.idPlace, + available: place.available, + description: place.description, + coords: place.coords, + imageName: `${ServerConstants.HOST}/places/${place.imageName}`, + name: place.name, + openAt: place.openAt, + closeAt: place.closeAt, + startDate: place.startDate, + endDate: place.endDate, + }; } } diff --git a/backend/static/towns/default.jpeg b/backend/static/towns/default.jpg similarity index 100% rename from backend/static/towns/default.jpeg rename to backend/static/towns/default.jpg