Commit 7ac9aff5 authored by Lorenzo Trujillo Rojas's avatar Lorenzo Trujillo Rojas
Browse files

Merge branch 'main' into 'main'

Agregando entitdad route, visited  y endpoint para la recomendación de rutas

See merge request ltrpro/pueblosmagicosconia!57
parents b7d88d4c 0f4015bf
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ import { RouteModule } from './route/route.module';
import { Route } from './route/entities/route.entity';
import { TravelPlaceModule } from './travel-place/travel-place.module';
import { TravelPlace } from './travel-place/entities/travel-place.entity';
import { VisitedModule } from './visited/visited.module';
import { Visited } from './visited/entities/visited.entity';

@Module({
  imports: [
@@ -54,6 +56,7 @@ import { TravelPlace } from './travel-place/entities/travel-place.entity';
        Category,
        Route,
        TravelPlace,
        Visited,
      ],
      synchronize: DbConstants.DB_SYNC,
      logging: false,
@@ -73,6 +76,7 @@ import { TravelPlace } from './travel-place/entities/travel-place.entity';
    CategoryModule,
    RouteModule,
    TravelPlaceModule,
    VisitedModule,
  ],
  controllers: [AppController],
  providers: [AppService, DatabaseSeederModule],
+1 −1
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ export class PlaceService {
    }
  }

  async findAllByTown(idTown: number, lang: LANGUAGES) {
  async findAllByTown(idTown: number, lang: LANGUAGES): Promise<GetPlaceDto[]> {
    const res: any[] = await this.dataSource
      .getRepository(Place)
      .createQueryBuilder('place')
+1 −1
Original line number Diff line number Diff line
@@ -3,5 +3,5 @@ export interface RecommendPlace {
  openAt: number;
  closeAt: number;
  categories: number[];
  grade: number;
  rating: number;
}
+32 −29
Original line number Diff line number Diff line
import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common';
import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, Req, Query } from '@nestjs/common';
import { RouteService } from './route.service';
import { CreateRouteDto } from './dto/create-route.dto';
import { UpdateRouteDto } from './dto/update-route.dto';
import { ApiConsumes, ApiTags } from '@nestjs/swagger';
import { ApiBearerAuth, ApiConsumes, ApiParam, ApiQuery, ApiTags } from '@nestjs/swagger';
import { LANGUAGES } from 'src/shared/enum/languages.enum';
import { AuthUserGuard } from 'src/auth/user/authUser.guard';
import { CustomUserRequest } from 'src/auth/user/interface/customUserReq';

@Controller('route')
@ApiTags('routes')
@ApiTags('route')
export class RouteController {
  constructor(private readonly routeService: RouteService) {}

  @Post()
  @ApiConsumes('multipart/form-data')
  // @UseGuards(AuthUserGuard)
  async create(@Body() createRouteDto: CreateRouteDto) {
    return await this.routeService.create();
  }

  @Get()
  findAll() {
    return this.routeService.findAll();
  }
  // @Post()
  // @ApiConsumes('multipart/form-data')
  // // @UseGuards(AuthUserGuard)
  // async create(@Body() createRouteDto: CreateRouteDto) {
  //   return await this.routeService.recommend();
  // }

  @Get(':idRoute')
  async findOne(@Param('idRoute') idRoute: number) {
    return await this.routeService.findOne(idRoute);
  }
  // @Get(':idRoute')
  // async findOne(@Param('idRoute') idRoute: number) {
  //   return await this.routeService.findOne(idRoute);
  // }

  @Patch(':id')
  update(@Param('id') id: string, @Body() updateRouteDto: UpdateRouteDto) {
    return this.routeService.update(+id, updateRouteDto);
  }
  // @Patch(':id')
  // update(@Param('id') id: string, @Body() updateRouteDto: UpdateRouteDto) {
  //   return this.routeService.update(+id, updateRouteDto);
  // }

  @Delete(':id')
  remove(@Param('id') id: string) {
    return this.routeService.remove(+id);
  }
  // @Delete(':id')
  // remove(@Param('id') id: string) {
  //   return this.routeService.remove(+id);
  // }

  @Get('recommend')
  recommendRoute() {
    return this.routeService.recommend();
  @Get('recommend:idTown')
  @ApiQuery({ name: 'lang', type: String })
  @ApiParam({ name: 'idTown', type: Number })
  @ApiBearerAuth('jwt')
  @UseGuards(AuthUserGuard)
  async recommendRoute(@Req() req: CustomUserRequest, @Query('lang') lang: string, @Param('idTown') idTown: number) {
    const { email } = req.user;
    return await this.routeService.recommend(idTown, email, lang as LANGUAGES);
  }
}
+20 −1
Original line number Diff line number Diff line
@@ -14,6 +14,11 @@ import { Town } from 'src/town/entities/town.entity';
import { TravelPlace } from 'src/travel-place/entities/travel-place.entity';
import { TravelPlaceService } from 'src/travel-place/travel-place.service';
import { Place } from 'src/place/entities/place.entity';
import { PlaceService } from 'src/place/place.service';
import { AvailableDate } from 'src/place/entities/available-date.entity';
import { PlaceTraduction } from 'src/place/entities/place-traduction.entity';
import { VisitedService } from 'src/visited/visited.service';
import { Visited } from 'src/visited/entities/visited.entity';

@Module({
  controllers: [RouteController],
@@ -25,7 +30,21 @@ import { Place } from 'src/place/entities/place.entity';
    EncryptionService,
    CategoryService,
    TravelPlaceService,
    PlaceService,
    VisitedService,
  ],
  imports: [
    TypeOrmModule.forFeature([
      Route,
      User,
      Category,
      Town,
      TravelPlace,
      Place,
      AvailableDate,
      PlaceTraduction,
      Visited,
    ]),
  ],
  imports: [TypeOrmModule.forFeature([Route, User, Category, Town, TravelPlace, Place])],
})
export class RouteModule {}
Loading