import { Controller, Get, Param, UseGuards } from '@nestjs/common';
import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger';
import { Roles } from 'src/common/decorators/roles.decorator';
import { RoleType } from 'src/entities/users.entity';
import { AuthGuard } from 'src/common/guards/auth.guard';
import { RolesGuard } from 'src/common/guards/roles.guard';
import { DossiersService } from './dossiers.service';
import { DossierUnifieDto } from './dto/dossier-unifie.dto';

@ApiTags('Dossiers')
@Controller('dossiers')
@UseGuards(AuthGuard, RolesGuard)
export class DossiersController {
  constructor(private readonly dossiersService: DossiersService) {}

  @Get(':numeroDossier')
  @Roles(RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE)
  @ApiOperation({ summary: 'Dossier complet par numéro (AM ou famille) – Ticket #119' })
  @ApiParam({ name: 'numeroDossier', description: 'Numéro de dossier (ex: 2026-000001)' })
  @ApiResponse({ status: 200, description: 'Dossier famille ou AM', type: DossierUnifieDto })
  @ApiResponse({ status: 404, description: 'Aucun dossier pour ce numéro' })
  @ApiResponse({ status: 403, description: 'Accès refusé' })
  getDossier(@Param('numeroDossier') numeroDossier: string): Promise<DossierUnifieDto> {
    return this.dossiersService.getDossierByNumero(numeroDossier);
  }
}
