Loading backend/src/place/place.service.ts +35 −5 Original line number Diff line number Diff line import { BadRequestException, Injectable } from '@nestjs/common'; import { CreatePlaceDateTradDto } from './dto/create-place-date.dto'; import { UpdatePlaceDto } from './dto/update-place.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { InjectDataSource, InjectRepository } from '@nestjs/typeorm'; import { Place } from './entities/place.entity'; import { Repository } from 'typeorm'; import { DataSource, Repository } from 'typeorm'; import { AvailableDate } from './entities/available-date.entity'; import { CreatePlaceDto } from './dto/create-place.dto'; import { CreateDateDto } from './dto/create-date.dto'; import { PlaceTraduction } from './entities/place-traduction.entity'; import { LANGUAGES } from 'src/shared/enum/languages.enum'; import { Town } from 'src/town/entities/town.entity'; import { GetPlaceDto } from './dto/get-place.dto'; import { ServerConstants } from 'src/constants/server.contants'; @Injectable() export class PlaceService { Loading @@ -18,6 +20,7 @@ export class PlaceService { @InjectRepository(AvailableDate) private availableDateRepository: Repository<AvailableDate>, @InjectRepository(PlaceTraduction) private placeTraductionRepository: Repository<PlaceTraduction>, @InjectRepository(Town) private townRepository: Repository<Town>, @InjectDataSource() private dataSource: DataSource, ) {} async create(createPlaceDto: CreatePlaceDateTradDto) { Loading Loading @@ -58,9 +61,36 @@ export class PlaceService { await this.availableDateRepository.insert(createDate); } async findAllByTown(idTown: number) { const town: Town = await this.townRepository.findOneBy({ townId: idTown }); const places: Place[] = await this.placeRepository.findBy({ idTown: town }); async findAllByTown(idTown: number, lang: LANGUAGES) { const res: GetPlaceDto[] = await this.dataSource .getRepository(PlaceTraduction) .createQueryBuilder('placeTrad') .leftJoin('placeTrad.idPlace', 'place') .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', ]) .where('place.idTown = :idTown', { idTown }) .andWhere('placeTrad.language = :language', { language: lang }) .getRawMany(); const places: GetPlaceDto[] = res.map((place) => { return { available: place.available, description: place.description, coords: place.coords, idTown: place.idTown, imageName: `${ServerConstants.HOST}/places/${place.imageName}`, name: place.name, openAt: place.openAt, closeAt: place.closeAt, }; }); return places; } Loading Loading
backend/src/place/place.service.ts +35 −5 Original line number Diff line number Diff line import { BadRequestException, Injectable } from '@nestjs/common'; import { CreatePlaceDateTradDto } from './dto/create-place-date.dto'; import { UpdatePlaceDto } from './dto/update-place.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { InjectDataSource, InjectRepository } from '@nestjs/typeorm'; import { Place } from './entities/place.entity'; import { Repository } from 'typeorm'; import { DataSource, Repository } from 'typeorm'; import { AvailableDate } from './entities/available-date.entity'; import { CreatePlaceDto } from './dto/create-place.dto'; import { CreateDateDto } from './dto/create-date.dto'; import { PlaceTraduction } from './entities/place-traduction.entity'; import { LANGUAGES } from 'src/shared/enum/languages.enum'; import { Town } from 'src/town/entities/town.entity'; import { GetPlaceDto } from './dto/get-place.dto'; import { ServerConstants } from 'src/constants/server.contants'; @Injectable() export class PlaceService { Loading @@ -18,6 +20,7 @@ export class PlaceService { @InjectRepository(AvailableDate) private availableDateRepository: Repository<AvailableDate>, @InjectRepository(PlaceTraduction) private placeTraductionRepository: Repository<PlaceTraduction>, @InjectRepository(Town) private townRepository: Repository<Town>, @InjectDataSource() private dataSource: DataSource, ) {} async create(createPlaceDto: CreatePlaceDateTradDto) { Loading Loading @@ -58,9 +61,36 @@ export class PlaceService { await this.availableDateRepository.insert(createDate); } async findAllByTown(idTown: number) { const town: Town = await this.townRepository.findOneBy({ townId: idTown }); const places: Place[] = await this.placeRepository.findBy({ idTown: town }); async findAllByTown(idTown: number, lang: LANGUAGES) { const res: GetPlaceDto[] = await this.dataSource .getRepository(PlaceTraduction) .createQueryBuilder('placeTrad') .leftJoin('placeTrad.idPlace', 'place') .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', ]) .where('place.idTown = :idTown', { idTown }) .andWhere('placeTrad.language = :language', { language: lang }) .getRawMany(); const places: GetPlaceDto[] = res.map((place) => { return { available: place.available, description: place.description, coords: place.coords, idTown: place.idTown, imageName: `${ServerConstants.HOST}/places/${place.imageName}`, name: place.name, openAt: place.openAt, closeAt: place.closeAt, }; }); return places; } Loading