import { Body, Controller, Get, HttpException, HttpStatus, Post, UseGuards } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { GetUser } from './get-user.decorator';
import { UserEmpresasService } from './user-empresas.service';

@UseGuards(AuthGuard('jwt'))
@Controller('auth/empresas')
export class UserEmpresasController {
  constructor(private userEmpresasService: UserEmpresasService) {}

  @Get('asignadas')
  async getEmpresasAsignadas(@GetUser() user: any) {
    try {
      const empresas = await this.userEmpresasService.getEmpresasAsignadas(user.id);
      return {
        success: true,
        data: empresas,
      };
    } catch (error) {
      throw new HttpException(
        {
          success: false,
          message: 'Error al obtener empresas asignadas',
          error: error.message,
        },
        HttpStatus.INTERNAL_SERVER_ERROR,
      );
    }
  }

  @Get('actual')
  async getEmpresaActual(@GetUser() user: any) {
    try {
      const empresaActual = await this.userEmpresasService.getEmpresaActual(user.id);
      return {
        success: true,
        data: empresaActual,
      };
    } catch (error) {
      throw new HttpException(
        {
          success: false,
          message: 'Error al obtener empresa actual',
          error: error.message,
        },
        HttpStatus.INTERNAL_SERVER_ERROR,
      );
    }
  }

  @Post('cambiar')
  async cambiarEmpresa(@GetUser() user: any, @Body() body: { empresa_id: string }) {
    try {
      const result = await this.userEmpresasService.cambiarEmpresaActual(user.id, body.empresa_id);
      return {
        success: true,
        message: 'Empresa actualizada correctamente',
        data: result,
      };
    } catch (error) {
      throw new HttpException(
        {
          success: false,
          message: 'Error al cambiar de empresa',
          error: error.message,
        },
        HttpStatus.BAD_REQUEST,
      );
    }
  }
}
