import { Component, OnInit } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { RouterModule, Router } from '@angular/router';
import { QuestionarioService } from '../../../services/questionario.service';
import { Questionario } from '../../../models/questionario.model';

@Component({
  selector: 'app-listar-questionario',
  standalone: true,
  imports: [FormsModule, CommonModule, RouterModule],
  templateUrl: './listar-questionario.component.html',
  styleUrls: ['./listar-questionario.component.css']
})
export class ListarQuestionarioComponent implements OnInit {
  questionarios: Questionario[] = [];

  constructor(
    private questionarioService: QuestionarioService,
    private router: Router
  ) {}

  ngOnInit(): void {
    this.carregarQuestionarios();
  }

  carregarQuestionarios(): void {
    this.questionarioService.listarQuestionarios().subscribe({
      next: (dados: Questionario[]) => {
        this.questionarios = dados;
      },
      error: (erro) => {
        console.error('Erro ao carregar questionários', erro);
      }
    });
  }

  publicar(item: Questionario): void {
    const questionarioAtualizado: Questionario = {
      ...item,
      descricao: 'Publicado'
    };

    this.questionarioService.atualizarQuestionario(questionarioAtualizado).subscribe({
      next: () => {
        item.descricao = 'Publicado';
        alert('Questionário publicado com sucesso!');
      },
      error: (erro) => {
        console.error('Erro ao publicar questionário', erro);
        alert('Erro ao publicar questionário.');
      }
    });
  }

  removerQuestionario(id: number): void {
    if (confirm('Tem certeza que deseja excluir este questionário?')) {
      this.questionarioService.removerQuestionario(id).subscribe({
        next: () => {
          this.questionarios = this.questionarios.filter(q => q.id !== id);
          alert('Questionário excluído com sucesso!');
        },
        error: (erro) => {
          console.error('Erro ao excluir questionário', erro);
          alert('Erro ao excluir questionário.');
        }
      });
    }
  }

  editarQuestionario(id: number): void {
    this.router.navigate(['/editar-questionario', id]);
  }
}