import {
  Controller,
  Get,
  Post,
  Put,
  Delete,
  Body,
  Param,
  ParseIntPipe,
  UseGuards,
} from '@nestjs/common';
import { IntegrationsService } from './integrations.service';
import { ConnectAccountDto } from './dto/connect-account.dto';
import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard';
import { CurrentUser } from '../../common/decorators/current-user.decorator';

@Controller('integrations')
@UseGuards(JwtAuthGuard)
export class IntegrationsController {
  constructor(private readonly integrationsService: IntegrationsService) {}

  @Get('accounts')
  getAccounts(@CurrentUser() user: { id: number; email: string }) {
    return this.integrationsService.getAccounts(user.id);
  }

  @Post('accounts')
  connectAccount(
    @CurrentUser() user: { id: number; email: string },
    @Body() dto: ConnectAccountDto,
  ) {
    return this.integrationsService.connectAccount(user.id, dto);
  }

  @Delete('accounts/:id')
  disconnectAccount(
    @CurrentUser() user: { id: number; email: string },
    @Param('id', ParseIntPipe) id: number,
  ) {
    return this.integrationsService.disconnectAccount(user.id, id);
  }

  @Post('accounts/:id/sync')
  syncAccount(
    @CurrentUser() user: { id: number; email: string },
    @Param('id', ParseIntPipe) id: number,
  ) {
    return this.integrationsService.syncAccount(user.id, id);
  }

  @Put('accounts/:id/auto-import')
  toggleAutoImport(
    @CurrentUser() user: { id: number; email: string },
    @Param('id', ParseIntPipe) id: number,
  ) {
    return this.integrationsService.toggleAutoImport(user.id, id);
  }
}
