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

endpoint de lugares abiertos

parent 9306aa7a
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import { CustomAdminRequest } from 'src/auth/admin/interface/customAdminReq';
import { UpdatePlaceReqDto } from './dto/update-place.req.dto';
import { AuthAdminGuard } from 'src/auth/admin/authAdmin.guard';
import { GetPlaceDto } from './dto/get-place.dto';
import { AuthUserGuard } from 'src/auth/user/authUser.guard';
import { CustomUserRequest } from 'src/auth/user/interface/customUserReq';

@Controller('place')
@ApiTags('Place')
@@ -96,4 +98,13 @@ export class PlaceController {
      throw e;
    }
  }

  @Get('open/:idTown/:lang')
  @ApiBearerAuth('jwt')
  @ApiConsumes('json')
  @UseGuards(AuthUserGuard)
  @ApiParam({ name: 'idTown', type: Number })
  async findOpenPlaces(@Param('idTown') idTown: number, @Param('lang') lang: string, @Req() req: CustomUserRequest) {
    return await this.placeService.findPlacesNotVisitedByUserAndOpenResponse(req.user.email, lang as LANGUAGES, idTown);
  }
}
+16 −0
Original line number Diff line number Diff line
@@ -16,6 +16,14 @@ import { JwtService } from '@nestjs/jwt';
import { EncryptionService } from 'src/auth/encryption/encryption.service';
import { Admin } from 'src/admin/entities/admin.entity';
import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity';
import { AuthUserService } from 'src/auth/user/authUserservice';
import { UserResetCode } from 'src/auth/user/entities/user-reset-code.entity';
import { UserConfirmCode } from 'src/auth/user/entities/user-confirm-code.entity';
import { UserService } from 'src/user/user.service';
import { EmailService } from 'src/email/email.service';
import { User } from 'src/user/entities/user.entity';
import { CategoryService } from 'src/category/category.service';
import { Category } from 'src/category/entities/category.entity';

@Module({
  controllers: [PlaceController],
@@ -28,6 +36,10 @@ import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity
    JwtService,
    EncryptionService,
    TownService,
    AuthUserService,
    UserService,
    EmailService,
    CategoryService,
  ],
  imports: [
    TypeOrmModule.forFeature([
@@ -39,6 +51,10 @@ import { AdminResetCode } from 'src/auth/admin/entitites/admin-reset-code.entity
      State,
      Admin,
      AdminResetCode,
      UserResetCode,
      UserConfirmCode,
      User,
      Category,
    ]),
    TypeOrmModule,
  ],
+21 −0
Original line number Diff line number Diff line
@@ -249,4 +249,25 @@ export class PlaceService {

    return placesWithAvailability.filter((place) => place !== null);
  }

  async findPlacesNotVisitedByUserAndOpenResponse(email: string, lang: LANGUAGES, idTown: number) {
    const places: GetPlaceDto[] = await this.findPlacesNotVisitedByUserAndOpen(email, lang, idTown);

    const placesResponse = [];
    for (const place of places) {
      const visited: any = await this.dataSource
        .getRepository(Visited)
        .createQueryBuilder('visited')
        .leftJoinAndSelect('visited.place', 'place')
        .where('visited.user = :email', { email })
        .andWhere('place.idPlace = :idPlace', { idPlace: place.idPlace })
        .getOne();

      placesResponse.push({
        ...place,
        visited: visited ? true : false,
      });
    }
    return placesResponse;
  }
}