// Exemplo de como usar o PdfUploaderComponent no ContractComponent

// 1. Adicionar ao imports do ContractComponent
import { PdfUploaderComponent, PdfDocument, PendingDocument } from "../../shared/components/pdf-uploader/pdf-uploader.component";

@Component({
  selector: 'app-contract',
  standalone: true,
  imports: [CommonModule, TabSystemComponent, PdfUploaderComponent], // ✅ Adicionar aqui
  providers: [DatePipe],
  templateUrl: './contract.component.html',
  styleUrl: './contract.component.scss'
})
export class ContractComponent extends BaseDomainComponent<Contract> {

  // 2. Propriedades para o PDF uploader
  contractDocuments: PdfDocument[] = [];
  pendingContractDocuments: PendingDocument[] = [
    {
      name: 'Laudo de Vistoria',
      description: 'Documento obrigatório para finalizar o cadastro',
      required: true,
      status: 'pending'
    },
    {
      name: 'Comprovante de Pagamento IPVA',
      description: 'Comprovante atualizado de IPVA',
      required: true,
      status: 'pending'
    },
    {
      name: 'Documento Adicional',
      description: 'Documentos complementares do contrato',
      required: false,
      status: 'pending'
    }
  ];

  // 3. Métodos para manipular documentos
  onDocumentsChange(documents: PdfDocument[]) {
    this.contractDocuments = documents;
    console.log('Documentos atualizados:', documents);
  }

  onFilesChange(files: File[]) {
    console.log('Arquivos selecionados:', files);
    // Aqui você pode fazer upload dos arquivos para o servidor
    this.uploadDocuments(files);
  }

  onDocumentError(error: string) {
    console.error('Erro no upload:', error);
    // Exibir erro para o usuário usando SnackNotifyService ou similar
  }

  onDocumentUploaded(document: PdfDocument) {
    console.log('Documento enviado:', document);
    // Atualizar status do documento pendente se necessário
    this.updatePendingDocumentStatus(document);
  }

  private async uploadDocuments(files: File[]) {
    // Implementar lógica de upload para o servidor
    for (const file of files) {
      try {
        // Exemplo de upload
        // const response = await this.contractService.uploadDocument(file);
        // console.log('Upload concluído:', response);
      } catch (error) {
        console.error('Erro no upload:', error);
      }
    }
  }

  private updatePendingDocumentStatus(document: PdfDocument) {
    // Atualizar status dos documentos pendentes baseado no documento enviado
    this.pendingContractDocuments.forEach(pending => {
      if (document.name.toLowerCase().includes(pending.name.toLowerCase())) {
        pending.status = 'uploaded';
      }
    });
  }

  // 4. Adicionar aba de documentos na configuração do formulário
  getFormConfig(): TabFormConfig {
    return {
      title: 'Dados do Contrato',
      titleFallback: 'Novo Contrato',
      entityType: 'contract',
      fields: [],
      submitLabel: 'Salvar Contrato',
      showCancelButton: true,
      subTabs: [
        // ... outras abas existentes ...
        {
          id: 'documentos',
          label: 'Documentos',
          icon: 'fa-file-pdf',
          enabled: true,
          order: 3,
          templateType: 'custom', // ✅ Usar template customizado
          customTemplate: 'pdf-uploader', // ✅ Identificador do template
          requiredFields: [],
          fields: []
        }
      ]
    };
  }
}
