import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router, RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
import { MateriaisService } from '../../../services/materiais.service';
import { Material } from '../../../models/material.model';

@Component({
  selector: 'app-editar-material',
  standalone: true,
  imports: [
    CommonModule,
    FormsModule,
    RouterModule
  ],
  templateUrl: '../editar-material/editar-material.component.html',
  styleUrls: ['../editar-material/editar-material.component.css']
})
export class EditarMaterialComponent implements OnInit {
  material: Material = { titulo: '', conteudo: '', links: [] };
  arquivoSelecionado: File | null = null;
  linkTemp: string = '';
  idMaterial!: number;
  editando: boolean = true;
  modalMaterial = false;
  message: string = '';

  constructor(
    private route: ActivatedRoute,
    private router: Router,
    private materiaisService: MateriaisService
  ) {}

  ngOnInit(): void {
    this.idMaterial = +this.route.snapshot.params['id'];
    this.materiaisService.buscarPorId(this.idMaterial).subscribe({
      next: (data) => {
        this.material = data;
      },
      error: (err) => {
        console.error('Erro ao buscar material:', err);
        alert('Erro ao carregar material.');
      }
    });
  }

  onFileSelected(event: Event): void {
    const input = event.target as HTMLInputElement;
    if (input.files && input.files.length > 0) {
      this.arquivoSelecionado = input.files[0];
    }
  }

  salvarMaterial(): void {
    if (this.linkTemp.trim()) {
      this.material.links.push(this.linkTemp.trim());
    }

    this.materiaisService.editarMaterial(this.idMaterial, this.material, this.arquivoSelecionado!).subscribe({
      next: () => {
        alert('Material atualizado com sucesso!');
        this.router.navigate(['/material']);
      },
      error: (err) => {
        console.error('Erro ao atualizar material:', err);
        alert('Erro ao atualizar material.');
      }
    });
  }

   fecharModalEredirecionar(): void {
    this.modalMaterial = false;
    this.message ='';
    this.router.navigate(['/material']);
  }
}