import React, { memo, useCallback, useMemo, useEffect } from 'react'; import * as Yup from 'yup'; import { useFormik, Form, FormikProvider } from 'formik'; import { Modal } from 'react-bootstrap' import toast, { Toaster } from 'react-hot-toast'; import DateFnsUtils from '@date-io/date-fns'; import { DesktopDatePicker, LocalizationProvider } from '@mui/lab'; import { Button, Stack, TextField, MenuItem, FormControl, InputLabel, Select, Backdrop, CircularProgress } from '@mui/material'; import { Service } from '../../Utils/HTTP'; import useAuth from '../../Auth/useAuth'; import { useQuery, useMutation, useQueryClient } from 'react-query' const NewPlazaSchema = Yup.object().shape({ id: Yup.number(), nombrepuesto: Yup.string().required('El nombre es requerido') .min(5, "El nombre del puesto debe ser mayor a 5 caracteres") .max(100), puestosuperior: Yup.number("El puesto superior debe ser un número").required("El puesto es requerido"), aredepto: Yup.number().required('Escoge alguna área'), fecha: Yup.date("Ingresa una fecha válida"), notas: Yup.string("Ingresa una nota válida").min(5).max(150), }) function Edit(props) { const now = useMemo(() => new Date(), []) const auth = useAuth(); const token = auth.getToken(); const queryClient = useQueryClient() let { visible, toggle, puesto } = props const [departamento, setDepartamento] = React.useState(''); const [open, setOpen] = React.useState(false); const changeDepartamento = useCallback((event) => { setDepartamento(event.target.value); }, []); const [date, setDate] = React.useState(now); const getCategories = async () => { let rest = new Service("/categoria/getAll") return await rest.getQuery(token) } const updatePuesto = async (fields) => { let rest = new Service('/plaza/edit'); return rest.putQuery(fields, token) } const puestoMutation = useMutation(updatePuesto) const close = () => toggle("EDIT"); const { data } = useQuery('categories', getCategories); const formik = useFormik({ initialValues: { id: 1, nombrepuesto: "", puestosuperior: 1, aredepto: 1, fecha: now, notas: "" }, onSubmit: (fields, { resetForm }) => { setOpen(true); fields['fecha'] = new Date(fields.fecha).toISOString(); puestoMutation.mutate(fields, { onSuccess: () => { close(); setOpen(false) toast.success("Puesto Actualizado!!") queryClient.invalidateQueries('puestos') }, onError:() => { close(); setOpen(false) toast.error("Lo sentimos ocurrió error inténtalo más tarde") } }) resetForm(); }, validationSchema: NewPlazaSchema, }); const { errors, touched, handleSubmit, getFieldProps, setValues } = formik; useEffect(() => { console.log("PUESTO :: ", puesto) if (puesto) { setValues({ id: puesto.id, nombrepuesto: puesto.nombrepuesto, puestosuperior: puesto.puestosuperior, aredepto: puesto.areadeptoplz_id, fecha: new Date(puesto.create_day), notas: puesto.notas }) } }, [puesto, now, setValues]) return (

Editar puesto

Departamento } />
theme.zIndex.drawer + 1 }} open={open} onClick={() => console.log('backdrop')} >
) } export default memo(Edit);