import React, { useState } from 'react'; import { Link } from 'react-router-dom'; function DoctorForm({ onSave, onCancel, formData, setFormData }) { const FormatTelefones = (valor) => { const digits = String(valor).replace(/\D/g, '').slice(0, 11); return digits .replace(/(\d)/, '($1') .replace(/(\d{2})(\d)/, '$1) $2') .replace(/(\d)(\d{4})/, '$1 $2') .replace(/(\d{4})(\d{4})/, '$1-$2'); }; const FormatCPF = (valor) => { const digits = String(valor).replace(/\D/g, '').slice(0, 11); return digits .replace(/(\d{3})(\d)/, '$1.$2') .replace(/(\d{3})(\d)/, '$1.$2') .replace(/(\d{3})(\d{1,2})$/, '$1-$2'); }; // Estado para armazenar a URL da foto do avatar const [avatarUrl, setAvatarUrl] = useState(null); // Estado para controlar seções abertas/fechadas const [collapsedSections, setCollapsedSections] = useState({ dadosPessoais: true, infoMedicas: false, infoConvenio: false, endereco: false, contato: false, }); const handleToggleCollapse = (section) => { setCollapsedSections(prevState => ({ ...prevState, [section]: !prevState[section] })); }; const handleChange = (e) => { const { name, value, type, checked, files } = e.target; if (type === 'checkbox') { setFormData({ ...formData, [name]: checked }); } else if (type === 'file') { setFormData({ ...formData, [name]: files[0] }); if (name === 'foto' && files[0]) { const reader = new FileReader(); reader.onloadend = () => { setAvatarUrl(reader.result); }; reader.readAsDataURL(files[0]); } else if (name === 'foto' && !files[0]) { setAvatarUrl(null); } } else if (name.includes('cpf')) { let cpfFormatado = FormatCPF(value); setFormData(prev => ({ ...prev, [name]: cpfFormatado })); } else if (name.includes('telefone')) { let telefoneFormatado = FormatTelefones(value); setFormData(prev => ({ ...prev, [name]: telefoneFormatado })); } else { setFormData({ ...formData, [name]: value }); } }; // Modal const [showModal, setShowModal] = useState(false); const [modalMsg, setModalMsg] = useState(''); // Buscar endereço via CEP const handleCepBlur = async () => { const cep = formData.cep.replace(/\D/g, ''); if (cep.length === 8) { try { const response = await fetch(`https://viacep.com.br/ws/${cep}/json/`); const data = await response.json(); if (!data.erro) { setFormData((prev) => ({ ...prev, street: data.logradouro || '', neighborhood: data.bairro || '', city: data.localidade || '', state: data.uf || '' })); } else { setModalMsg('CEP não encontrado!'); setShowModal(true); } } catch (error) { setModalMsg('Erro ao buscar o CEP.'); setShowModal(true); } } }; // Salvar médico const handleSubmit = () => { if (!formData.full_name || !formData.cpf || !formData.birth_date) { setModalMsg("Por favor, preencha:\n- Nome\n- CPF\n- Data de Nascimento"); setShowModal(true); return; // impede que continue } onSave({ ...formData }); setModalMsg("Médico salvo com sucesso!"); setShowModal(true); }; return ( <> {/* Modal */} {showModal && (
{modalMsg}