import * as React from 'react'; import { Button, Dialog, DialogActions, DialogContent, FormControlLabel, Checkbox, Stack, TextField, CircularProgress, Divider, Typography } from '@mui/material' import { AddCircle } from '@mui/icons-material/'; import { MailTable } from './Steps/MailTable'; import { Col, Row } from 'react-bootstrap' import toast, { Toaster } from 'react-hot-toast'; import * as Yup from 'yup'; import { useQueryClient } from 'react-query' import { Service } from '../../Utils/HTTP.js' import { useSelector } from 'react-redux' import { useFormik, Form, FormikProvider } from 'formik'; import { AdapterDateFns as DateFnsUtils } from '@mui/x-date-pickers/AdapterDateFns'; import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; function Candidatos(props) { const CandidatoSchema = Yup.object().shape({ nombres: Yup.string() .min(2, 'Demasiado corto!') .max(50, 'Demasiado largo!'), apellidos: Yup.string() .min(2, 'Demasiado corto!').max(50, 'Demasiado Largo!'), mail: Yup.string() .email("Correo no valido") }); let { candidatos, add , remove } = props const formik = useFormik({ initialValues: { nombres: "", apellidos: "", mail: "", }, onSubmit: () => { console.log('submited') }, validationSchema: CandidatoSchema, }); var { errors, touched, handleSubmit, getFieldProps, values, resetForm, isValid } = formik; const addToList = () => { if (!values.nombres || !values.apellidos || !values.mail) { return toast.error("Completa la informacion del candidato") } if (!isValid) { return toast.error("Completa la informacion del candidato") } let user = { 'nombres': values.nombres, 'apellidos': values.apellidos, 'mail': values.mail, } add(user) resetForm(); } return ( Ingresa la informacion del candidato
); } export function ModalEdit(props) { //TODO: //se debe crear un objeto de estado que almacena los nuevos cambios de la password //enviar por props las utilizades de edicion y eliminar const auth = useSelector((state) => state.token) let [data, setData] = React.useState(null) let { password, open, handleOpen } = props let { pwd, plz } = password React.useEffect(() => { let rest = new Service(`/contrasenia/${btoa(pwd)}/${plz}`) rest.getQuery(auth.token) .then(resp => setData(resp.data)) .catch(error => console.log(error)) }, [auth.token, pwd, plz]) return ( handleOpen(false)} aria-labelledby="alert-dialog-title" aria-describedby="alert-dialog-description" > { data ? : } ) } function Loading() { return ( ) } function ModalForm(props) { let [candidatos,setCandidatos] = React.useState(null); const pwdSchema = Yup.object().shape({ id: Yup.number(), pwd: Yup.string().required("Escoge un nombre valido"), deadpwd: Yup.date().required("Escoge una fecha valida"), state: Yup.number(), dateToActived: Yup.date('Escoge una fecha valida').required("Escoge una fecha valida"), }) const queryClient = useQueryClient(); let { password } = props React.useEffect(() => { let mapCandi = password.candidatospwds.map(pwd => { let { apellidos, nombre, mail } = pwd.candi return { nombres: nombre, apellidos, mail } }) setCandidatos(mapCandi) },[password.candidatospwds]) function removeCandidato (umail) { console.log('remove:', umail) let without = candidatos.filter( user => user.mail !== umail ) setCandidatos(without) } function addCandidato (candidato) { setCandidatos([...candidatos, candidato ]) } const formik = useFormik({ initialValues: { state: 1, pwd: atob(password.pwd), deadpwd: password.deadpwd, dateToActived: password.dateToActived, }, onSubmit: (fields) => { let rest = new Service('/contrasenia/create'); let { deadpwd, dateToActived, pwd } = fields fields['pwd'] = btoa(pwd); fields['deadpwd'] = new Date(deadpwd).toISOString(); fields['dateToActived'] = new Date(dateToActived).toISOString(); fields['candidato_id'] = props.initialValues.candidato_id fields['plaza_id'] = props.initialValues.plaza_id rest.put(fields, props.token) .then(result => { queryClient.invalidateQueries('passwords') setTimeout(() => { props.handleOpen(false) }, 1000) toast.success("Contraseña Actualizada") }) .catch(bad => { console.log('ERROR', bad) toast.error("Ocurrio un error") }) }, validationSchema: pwdSchema, }) const { errors, touched, handleSubmit, getFieldProps, values, setValues } = formik; return (
{ let check = event.target.checked; setValues({ ...values, state: check ? 1 : 0 }) }} /> } label="Activa" /> setValues({ ...values, dateToActived: val })} renderInput={(params) => } /> setValues({ ...values, deadpwd: new Date(val) }) } renderInput={(params) => } />
) }