ReactOpticaArteVisual / src /components /ModalAgregarCliente.jsx
JairoDanielMT's picture
prescripcion con validaciones
b332881
import React, { useState } from "react";
import { registrarPost } from "../lib/conexionApi";
import ErrorMessage from "./ErrorMessage";
const ModalAgregarCliente = ({
openModal,
setOpenModal,
// campos para validar
txtnombresYApellidos,
setTxtNombresYApellidos,
txtEdad,
setTxtEdad,
txtTelefono,
setTxtTelefono,
direccion,
setDireccion,
setError,
setClienteBusqueda
}) => {
const [errorDatosClienteVacios, setErrorDatosClienteVacios] = useState(false)
const [errorDatosNoValidos, setErrorDatosNoValidos] = useState(false)
const handleBtnAgregarCliente = async (e) => {
e.preventDefault();
setErrorDatosClienteVacios(false)
setErrorDatosNoValidos(false)
if (txtnombresYApellidos === "" || txtEdad === "" || txtTelefono === "" || direccion === "") {
setErrorDatosClienteVacios(true)
return
} else if (isNaN(parseInt(txtEdad)) || isNaN(parseInt(txtTelefono))) {
setErrorDatosNoValidos(true)
return
}
const cliente = {
"nombres_y_apellidos": txtnombresYApellidos,
"edad": txtEdad,
"telefono": txtTelefono,
"direccion": direccion
}
console.log("sí se puede");
await registrarPost("clientes", cliente)
setOpenModal(false);
setTxtNombresYApellidos("");
setTxtEdad("");
setTxtTelefono("");
setDireccion("");
setClienteBusqueda("")
}
return (
<div className="fixed inset-0 bg-black bg-opacity-25 backdrop-blur-sm flex justify-center items-center">
<div className="bg-white p-5 w-1/3 shadow-md rounded-lg">
<form>
<h3 className="text-center text-3xl text-bold mb-8">
Agregar nuevo cliente
</h3>
<div className="">
<label htmlFor="txtnombresYApellidos" className="block">
Nombres y apellidos
</label>
<input
type="text"
id="txtnombresYApellidos"
className="block w-full border p-2 rounded-md"
placeholder="Ej. Juan Perez"
onChange={(e) => setTxtNombresYApellidos(e.target.value)}
value={txtnombresYApellidos}
/>
</div>
<div className="flex flex-row gap-3 my-3">
<div className="w-1/2">
<label htmlFor="edad" className="block">
Edad
</label>
<input
type="number"
id="edad"
className="block w-full border p-2 rounded-md"
placeholder="Ej. 40"
onChange={(e) => setTxtEdad(e.target.value)}
value={txtEdad}
/>
</div>
<div className="w-1/2">
<label htmlFor="telefono" className="">
Telefono
</label>
<input
type="text"
id="telefono"
className="block w-full border p-2 rounded-md"
placeholder="Ej. 999888777"
onChange={(e) => setTxtTelefono(e.target.value)}
value={txtTelefono}
/>
</div>
</div>
<div>
<label htmlFor="direccion" className="">
Direccion
</label>
<input
type="text"
id="direccion"
className="block w-full border p-2 rounded-md"
placeholder="Ej. Calle 123"
onChange={(e) => setDireccion(e.target.value)}
value={direccion}
/>
</div>
<div>
<div>
<button
type="submit"
className="cursor-pointer py-2 w-full bg-slate-700 hover:bg-slate-800 text-white font-semibold text-center rounded-md mt-5"
onClick={e => handleBtnAgregarCliente(e)}
>
Agregar cliente
</button>
</div>
<div>
{ errorDatosClienteVacios && <ErrorMessage mensaje={"Todos los campos son obligatorios"} />}
{ errorDatosNoValidos && <ErrorMessage mensaje={"Ingresar datos válidos"} />}
<button
className="cursor-pointer py-2 w-full bg-slate-300 hover:bg-slate-400 text-gray-700 font-semibold text-center rounded-md mt-2"
onClick={(e) => {
e.preventDefault();
setOpenModal(false);
setTxtNombresYApellidos("");
setTxtEdad("");
setTxtTelefono("");
setDireccion("");
setClienteBusqueda("");
}}
>
Cancelar
</button>
</div>
</div>
</form>
</div>
</div>
);
};
export default ModalAgregarCliente;