import {
  Body,
  Controller,
  Get,
  NotFoundException,
  Patch,
  Post,
  Req,
  UseGuards,
} from '@nestjs/common';
import { AuthService } from './auth.service';
import { CreateUsuarioDto } from 'src/usuarios/dto/create-usuario.dto';
import { LoginDto } from './dto/login.dto';
import { AuthGuard } from '@nestjs/passport';
import { UpdateUsuarioDto } from 'src/usuarios/dto/update-usuario.dto';
import { not } from 'rxjs/internal/util/not';

@Controller('auth')
export class AuthController {
  constructor(private readonly authService: AuthService) {}

  @UseGuards(AuthGuard('jwt'))
  @Post('registro')
  registro(@Body() registroDto: CreateUsuarioDto) {
    return this.authService.registro(registroDto);
  }

  @Post('registro/Masivo')
  registroMasivo(@Body() registroDto: CreateUsuarioDto[]) {
    return this.authService.registroMasivo(registroDto);
  }

  @UseGuards(AuthGuard('jwt'))
  @Get('buscar')
  search() {
    return this.authService.findAll();
  }

  @UseGuards(AuthGuard('jwt'))
  @Patch('update')
  update(@Body() registroDto: UpdateUsuarioDto, @Req() req: any) {
    const id_usuario = req.user.id;

    if (!id_usuario) {
      throw new NotFoundException('token sin id_usuario');
    }

    return this.authService.update(registroDto, id_usuario);
  }

  @Post('login')
  login(@Body() loginDto: LoginDto) {
    return this.authService.login(loginDto);
  }
}
