import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { Container, makeStyles, Select, InputLabel, MenuItem, FormControl, Grid, Box, Button, TextField } from '@material-ui/core'; import axios from 'axios'; import Swal from 'sweetalert2'; import withReactContent from 'sweetalert2-react-content'; const Rut = require('../../Rut'); const MySwal = withReactContent(Swal); const useStyles = makeStyles((theme) => ({ paper: { marginTop: theme.spacing(8), display: 'flex', flexDirection: 'column', alignItems: 'center' }, gridButton: { textAlign: 'center' }, button: { [theme.breakpoints.down('xs')]: { width: '100%' } } })); export default function AgendarComponent() { const navigate = useNavigate(); const apiUrl = "http://localhost:5000/api"; const apiUrlEspecialidad = "/especialidad"; const apiUrlEspecialista = "/especialista"; const [especialidadOpen, setEspecialidadOpen] = useState(false); const [especialistaOpen, setEspecialistaOpen] = useState(false); const [rut, setRut] = useState(""); const [especialidades, setEspecialidades] = useState([]); const [especialidad, setEspecialidad] = useState(""); const [especialistas, setEspecialistas] = useState([]); const [especialista, setEspecialista] = useState(""); const [especialistaDisabled, setEspecialistaDisabled] = useState(true); const [formDisabled, setFormDisabled] = useState(true); const handleEspecialidadClose = () => { setEspecialidadOpen(false); }; const handleEspecialidadOpen = () => { setEspecialidadOpen(true); }; const handleEspecialidadChange = (event) => { setEspecialidad(event.target.value); }; const handleEspecialistaClose = () => { setEspecialistaOpen(false); }; const handleEspecialistaOpen = () => { setEspecialistaOpen(true); }; const handleEspecialistaChange = (event) => { setEspecialista(event.target.value); }; const handleRutChange = (event) => { let value = event.target.value.replace(/\./g, '').replace('-', ''); if (value.match(/[^0-9k]/ig)) { value = value.replace(value, ''); } if (value.match(/^(\d{2})(\d{3}){2}(\w{1})$/)) { value = value.replace(/^(\d{2})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4'); } else if (value.match(/^(\d)(\d{3}){2}(\w{0,1})$/)) { value = value.replace(/^(\d)(\d{3})(\d{3})(\w{0,1})$/, '$1.$2.$3-$4'); } else if (value.match(/^(\d)(\d{3})(\d{0,2})$/)) { value = value.replace(/^(\d)(\d{3})(\d{0,2})$/, '$1.$2.$3'); } else if (value.match(/^(\d)(\d{0,2})$/)) { value = value.replace(/^(\d)(\d{0,2})$/, '$1.$2'); } setRut(value); } async function getEspecialidades() { try { const response = await axios.get(apiUrl + apiUrlEspecialidad); if (response.status === 200) { setEspecialidades(response.data.especialidades); } } catch (error) { console.error(error); } } async function getEspecialistas(especialidad) { try { const response = await axios.get(apiUrl + apiUrlEspecialista + apiUrlEspecialidad + "/" + especialidad); if (response.status === 200) { setEspecialistas(response.data.especialistas); } } catch (error) { console.error(error); } } function guardar() { if (!Rut.validar(rut)) { MySwal.fire({ title:

Error!

, text: "El RUT ingresado no es valido!", icon: 'error' }); } else { navigate('/agendar/horario', { state: { rut: rut, especialista: especialista } } ); } } useEffect(() => { if (especialidad === "") { setEspecialistaDisabled(true); setEspecialista(""); } else { getEspecialistas(especialidad); setEspecialistaDisabled(false); } }, [especialidad]); useEffect(() => { if (especialista === "") { setFormDisabled(true); } else { setFormDisabled(false); } }, [especialista]); useEffect(() => { getEspecialidades(); }, []); const classes = useStyles(); return (
Especialidad Especialista
); }