52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
import { useState, useEffect } from "react";
|
|
import { post } from "../../../../../modules/fetchManager";
|
|
|
|
function DoctorSelector({hospital,service,user,setDoctor}) {
|
|
|
|
const [doctors, setDoctors] = useState([]);
|
|
const [loading, setLoading] = useState(true);
|
|
const [error, setError] = useState(null);
|
|
|
|
useEffect(() => {
|
|
if(service && hospital) {
|
|
post('doctors/search',{service_id: service.id, hospital_id: hospital},user.token)
|
|
.then((data) => {
|
|
setError(null);
|
|
setLoading(false);
|
|
if(data.status === 404) {
|
|
setError("Aucun médecin trouvé");
|
|
return;
|
|
}
|
|
|
|
if(data.status >= 400) {
|
|
setError("Erreur serveur, veuillez réessayer plus tard");
|
|
return;
|
|
}
|
|
|
|
setDoctors(data.JSON);
|
|
return;
|
|
})
|
|
}
|
|
},[service,hospital]);
|
|
|
|
const onChange = (e) => {
|
|
setDoctor(e.target.value);
|
|
}
|
|
|
|
if(loading) return <p>Chargement...</p>;
|
|
if(error) return <p>{error}</p>;
|
|
return(
|
|
<div className="text-xl flex row justify-between items-center">
|
|
<label htmlFor="doctor_id">Choisir un médecin :</label>
|
|
<select name="doctor_id" id="doctor_id" className="w-48" onChange={onChange}>
|
|
<option value="">Choisir un médecin</option>
|
|
{doctors.map((doctor) => {
|
|
return <option value={doctor.id} key={doctor.id}>{doctor.first_name} {doctor.last_name}</option>
|
|
})}
|
|
</select>
|
|
</div>
|
|
);
|
|
|
|
}
|
|
|
|
export default DoctorSelector; |