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 (
)
}
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 (
)
}