Loading backend/src/route/route.service.ts +13 −35 Original line number Diff line number Diff line import { Injectable } from '@nestjs/common'; import { CreateRouteDto } from './dto/create-route.dto'; import { UpdateRouteDto } from './dto/update-route.dto'; import { InjectDataSource, InjectRepository } from '@nestjs/typeorm'; import { Route } from './entities/route.entity'; import { DataSource, In, Repository } from 'typeorm'; import { DataSource, Repository } from 'typeorm'; import { User } from 'src/user/entities/user.entity'; import { Town } from 'src/town/entities/town.entity'; import { TravelPlaceService } from 'src/travel-place/travel-place.service'; import { TravelPlace } from 'src/travel-place/entities/travel-place.entity'; import { RecommendationsSystem } from './utils/recommendations'; import { PlaceService } from 'src/place/place.service'; import { LANGUAGES } from 'src/shared/enum/languages.enum'; Loading @@ -27,46 +24,25 @@ export class RouteService { private readonly placeService: PlaceService, private readonly visitedService: VisitedService, ) {} private async createRoute(idUser: number, idTown: number) { const user: User = await this.userRepository.findOneBy({ userId: idUser }); private async createRoute(email: string, idTown: number, idPlace: number, startDate: Date, endDate: Date) { const user: User = await this.userRepository.findOneBy({ email }); const town: Town = await this.townRepository.findOneBy({ townId: idTown }); await this.routeRepository.save({ user, town, startDate: new Date(), endDate: new Date() }); // const idRoute = await this.routeRepository.save({ user, town, startDate, endDate }); const idRoute = (await this.routeRepository.save({ user, town, startDate, endDate })).idRoute; await this.travelPlaceService.create({ idRoute: 1, idPlace: 1, idRoute, idPlace, startDate: new Date(), endDate: new Date(), done: true, done: false, }); } findAll() { return `This action returns all route`; } async findOne(id: number) { const res: any[] = await this.dataSource .getRepository(Route) .createQueryBuilder('route') .leftJoinAndSelect('route.travelPlace', 'travelPlace') .getMany(); return res; } update(id: number, updateRouteDto: UpdateRouteDto) { return `This action updates a #${id} route`; } remove(id: number) { return `This action removes a #${id} route`; } async recommend(idTown: number, email: string, language: LANGUAGES) { // Obtener los visitados y los candidatos const places: GetPlaceDto[] = await this.placeService.findAllByTown(idTown, language); const placesNotVisited: GetPlaceDto[] = await this.placeService.findPlacesNotVisitedByUser(email, language, idTown); const visited: Visited[] = await this.visitedService.getVisitedByUser(email); const placesMapped: RecommendPlace[] = places.map((place) => { const placesMapped: RecommendPlace[] = placesNotVisited.map((place) => { return { idPlace: place.idPlace, openAt: place.openAt, Loading @@ -93,6 +69,8 @@ export class RouteService { placesChooen.push(await this.placeService.findOneAndTradAndAvailable(index, LANGUAGES.EN)); } return placesChooen; for (const place of placesChooen) { await this.createRoute(email, idTown, place.idPlace, new Date(), new Date()); } } } Loading
backend/src/route/route.service.ts +13 −35 Original line number Diff line number Diff line import { Injectable } from '@nestjs/common'; import { CreateRouteDto } from './dto/create-route.dto'; import { UpdateRouteDto } from './dto/update-route.dto'; import { InjectDataSource, InjectRepository } from '@nestjs/typeorm'; import { Route } from './entities/route.entity'; import { DataSource, In, Repository } from 'typeorm'; import { DataSource, Repository } from 'typeorm'; import { User } from 'src/user/entities/user.entity'; import { Town } from 'src/town/entities/town.entity'; import { TravelPlaceService } from 'src/travel-place/travel-place.service'; import { TravelPlace } from 'src/travel-place/entities/travel-place.entity'; import { RecommendationsSystem } from './utils/recommendations'; import { PlaceService } from 'src/place/place.service'; import { LANGUAGES } from 'src/shared/enum/languages.enum'; Loading @@ -27,46 +24,25 @@ export class RouteService { private readonly placeService: PlaceService, private readonly visitedService: VisitedService, ) {} private async createRoute(idUser: number, idTown: number) { const user: User = await this.userRepository.findOneBy({ userId: idUser }); private async createRoute(email: string, idTown: number, idPlace: number, startDate: Date, endDate: Date) { const user: User = await this.userRepository.findOneBy({ email }); const town: Town = await this.townRepository.findOneBy({ townId: idTown }); await this.routeRepository.save({ user, town, startDate: new Date(), endDate: new Date() }); // const idRoute = await this.routeRepository.save({ user, town, startDate, endDate }); const idRoute = (await this.routeRepository.save({ user, town, startDate, endDate })).idRoute; await this.travelPlaceService.create({ idRoute: 1, idPlace: 1, idRoute, idPlace, startDate: new Date(), endDate: new Date(), done: true, done: false, }); } findAll() { return `This action returns all route`; } async findOne(id: number) { const res: any[] = await this.dataSource .getRepository(Route) .createQueryBuilder('route') .leftJoinAndSelect('route.travelPlace', 'travelPlace') .getMany(); return res; } update(id: number, updateRouteDto: UpdateRouteDto) { return `This action updates a #${id} route`; } remove(id: number) { return `This action removes a #${id} route`; } async recommend(idTown: number, email: string, language: LANGUAGES) { // Obtener los visitados y los candidatos const places: GetPlaceDto[] = await this.placeService.findAllByTown(idTown, language); const placesNotVisited: GetPlaceDto[] = await this.placeService.findPlacesNotVisitedByUser(email, language, idTown); const visited: Visited[] = await this.visitedService.getVisitedByUser(email); const placesMapped: RecommendPlace[] = places.map((place) => { const placesMapped: RecommendPlace[] = placesNotVisited.map((place) => { return { idPlace: place.idPlace, openAt: place.openAt, Loading @@ -93,6 +69,8 @@ export class RouteService { placesChooen.push(await this.placeService.findOneAndTradAndAvailable(index, LANGUAGES.EN)); } return placesChooen; for (const place of placesChooen) { await this.createRoute(email, idTown, place.idPlace, new Date(), new Date()); } } }