import React, { useState, useEffect, } from 'react' // import * as Yup from 'yup' import { Formik, Form, Field, } from 'formik' import { toast } from 'react-toastify' import { makeStyles } from '@material-ui/core/styles' import { green } from '@material-ui/core/colors' import { TimePicker, DatePicker } from 'formik-material-ui-pickers' import DateFnsUtils from '@date-io/date-fns' import ptBrLocale from "date-fns/locale/pt-BR" import { MuiPickersUtilsProvider, } from '@material-ui/pickers' import { Dialog, DialogContent, DialogTitle, Button, DialogActions, CircularProgress, TextField, Switch, FormControlLabel, } from '@material-ui/core' import api from '../../services/api' import { i18n } from '../../translate/i18n' import toastError from '../../errors/toastError' const useStyles = makeStyles((theme) => ({ root: { display: 'flex', flexWrap: 'wrap', }, multFieldLine: { display: 'flex', '& > *:not(:last-child)': { marginRight: theme.spacing(1), }, }, btnWrapper: { position: 'relative', }, buttonProgress: { color: green[500], position: 'absolute', top: '50%', left: '50%', marginTop: -12, marginLeft: -12, }, })) // const SessionSchema = Yup.object().shape({ // name: Yup.string() // .min(2, 'Too Short!') // .max(100, 'Too Long!') // .required('Required'), // }) const ConfigModal = ({ open, onClose, change }) => { const classes = useStyles() const initialState = { startTimeBus: new Date(), endTimeBus: new Date(), messageBus: '', businessTimeEnable: false, ticketTimeExpiration: new Date(), ticketExpirationMsg: '', ticketExpirationEnable: false, holidayDate: new Date(), holidayDateEnable: false, holidayDateMessage: '', checkboxSundayValue: false, checkboxSaturdayValue: false, weekendMessage: '', enableWeekendMessage: false } const [config, setConfig] = useState(initialState) useEffect(() => { const fetchSession = async () => { try { const { data } = await api.get('/settings') const outBusinessHours = data.config.find((c) => c.key === "outBusinessHours") const ticketExpiration = data.config.find((c) => c.key === "ticketExpiration") const saturday = data.config.find((c) => c.key === "saturday") const sunday = data.config.find((c) => c.key === "sunday") const weekend = data.config.find((c) => c.key === "weekend") const holiday = data.config.find((c) => c.key === "holiday") setConfig({ startTimeBus: outBusinessHours.startTime, endTimeBus: outBusinessHours.endTime, messageBus: outBusinessHours.message, businessTimeEnable: outBusinessHours.value === 'enabled' ? true : false, ticketTimeExpiration: ticketExpiration.startTime, ticketExpirationMsg: ticketExpiration.message, ticketExpirationEnable: ticketExpiration.value === 'enabled' ? true : false, checkboxSaturdayValue: saturday.value === 'enabled' ? true : false, checkboxSundayValue: sunday.value === 'enabled' ? true : false, weekendMessage: weekend.message, enableWeekendMessage: weekend.value === 'enabled' ? true : false, holidayDate: holiday.startTime, holidayDateMessage: holiday.message, holidayDateEnable: holiday.value === 'enabled' ? true : false, }) } catch (err) { toastError(err) } } fetchSession() }, [change]) const handleSaveConfig = async (values) => { values = { outBusinessHours: { startTime: values.startTimeBus, endTime: values.endTimeBus, message: values.messageBus, value: values.businessTimeEnable ? 'enabled' : 'disabled' }, ticketExpiration: { startTime: values.ticketTimeExpiration, message: values.ticketExpirationMsg, value: values.ticketExpirationEnable ? 'enabled' : 'disabled' }, weekend: { message: values.weekendMessage, value: values.enableWeekendMessage ? 'enabled' : 'disabled' }, saturday:{ value: values.checkboxSaturdayValue ? 'enabled' : 'disabled' }, sunday: { value: values.checkboxSundayValue ? 'enabled' : 'disabled' }, holiday: { startTime: values.holidayDate, message: values.holidayDateMessage, value: values.holidayDateEnable ? 'enabled' : 'disabled' } } try { await api.put(`/settings/ticket`, values) toast.success('Atualização realizada com sucesso!') handleClose() } catch (err) { toastError(err) } } const handleClose = () => { onClose() // setConfig(initialState) } return (