import { useState, useEffect } from 'react'; import { api } from '../../lib/api'; import { Editor } from '@tinymce/tinymce-react'; import { toast } from 'react-toastify'; import { Dialog } from '@headlessui/react'; import { DocumentIcon, PencilIcon, TrashIcon, PlusIcon } from '@heroicons/react/24/outline'; import { DOCUMENT_VARIABLES } from '../../utils/documentVariables'; export function GerenciarTemplates() { const [templates, setTemplates] = useState([]); const [editingTemplate, setEditingTemplate] = useState(null); const [isModalOpen, setIsModalOpen] = useState(false); const [isEditorModalOpen, setEditorModalOpen] = useState(false); const [formData, setFormData] = useState({ nome: '', tipo: 'OUTROS', descricao: '', conteudo: '', variaveis: [] }); const loadTemplates = async () => { try { const response = await api.get('/documentos-modelos'); setTemplates(response.data); } catch (error) { toast.error('Erro ao carregar templates'); } }; useEffect(() => { loadTemplates(); }, []); const handleSaveTemplate = async (data) => { try { if (editingTemplate) { await api.put(`/documentos-modelos/${editingTemplate.id}`, data); toast.success('Template atualizado com sucesso'); } else { await api.post('/documentos-modelos', data); toast.success('Template criado com sucesso'); } loadTemplates(); setIsModalOpen(false); } catch (error) { toast.error('Erro ao salvar template'); } }; const handleSubmit = async (e) => { e.preventDefault(); try { // Verifica se está editando ou criando novo if (editingTemplate) { await api.put(`/documentos-modelos/${editingTemplate.id}`, { ...formData, id: editingTemplate.id // Garantir que o ID seja enviado }); toast.success('Template atualizado com sucesso'); } else { await api.post('/documentos-modelos', formData); toast.success('Template criado com sucesso'); } setEditorModalOpen(false); setEditingTemplate(null); await loadTemplates(); // Recarregar a lista após salvar } catch (error) { console.error('Erro ao salvar template:', error); toast.error('Erro ao salvar template'); } }; const handleDelete = async (templateId: string) => { if (!window.confirm('Tem certeza que deseja excluir este template?')) { return; } try { await api.delete(`/documentos-modelos/${templateId}`); toast.success('Template excluído com sucesso'); loadTemplates(); } catch (error) { console.error('Erro ao excluir template:', error); toast.error('Erro ao excluir template'); } }; const insertVariable = (variable: string) => { const editor = window.tinymce.activeEditor; if (editor) { editor.insertContent(variable); } }; const handleEdit = (template) => { setEditingTemplate(template); // Guardar o template completo setFormData({ ...template, id: template.id // Garantir que o ID seja mantido }); setEditorModalOpen(true); }; return (
{template.descricao}