Commit a5a84c03 authored by Diego Iván's avatar Diego Iván
Browse files

agregando endopoint para crear una ruta y para obtener una

parent 7282a228
Loading
Loading
Loading
Loading
+27 −4
Original line number Diff line number Diff line
import { Controller, Get, Param, UseGuards, Req, Query } from '@nestjs/common';
import { Controller, Param, UseGuards, Req, Query, Body, Post, Get } from '@nestjs/common';
import { RouteService } from './route.service';
import { ApiBearerAuth, ApiParam, ApiQuery, ApiTags } from '@nestjs/swagger';
import { ApiBearerAuth, ApiBody, 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';
import { CreateRouteReq } from './dto/create-route-req';

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

  @Post('recommend/:idTown')
  @ApiQuery({ name: 'lang', type: String })
  @ApiParam({ name: 'idTown', type: Number })
  @ApiBody({ type: CreateRouteReq })
  @ApiBearerAuth('jwt')
  @UseGuards(AuthUserGuard)
  async recommendRoute(
    @Req() req: CustomUserRequest,
    @Query('lang') lang: string,
    @Param('idTown') idTown: number,
    @Body() createRouteReq: CreateRouteReq,
  ) {
    const { email } = req.user;
    return await this.routeService.recommend(
      idTown,
      email,
      lang as LANGUAGES,
      createRouteReq.start,
      createRouteReq.end,
    );
  }

  @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) {
  async recommendRouteGet(@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);
    return await this.routeService.getRouteAndPlacesByUser(email, lang as LANGUAGES, idTown);
  }
}