import React, {useState, useContext} from 'react'
import {BackgroundDiv} from '../Components/TabPanels/StyledComponents.js'
import {Link} from 'react-router-dom'
import Paper from '@material-ui/core/Paper';
import styled from 'styled-components'
import FormInput from "../Components/FormInput.js"
import ValidateUserInput from '../Components/FormValidationFunction.js'
import {CompletarCadastroButton} from '../Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js'
import Default from '../Components/PasswordRecoveryComponents/Default.js'
import Success from '../Components/PasswordRecoveryComponents/Success.js'
import {Store} from '../Store.js'
import Error from '../Components/PasswordRecoveryComponents/Error.js'
import CustomizedBreadcrumbs from '../Components/TabPanels/Breadcrumbs.js'

export default function PasswordRecoveryPage (props) {
    const {state, dispatch} = useContext(Store)

    const [formEmail, setEmail] = useState(
        {
            dict : {
                key : false,
                value : ""
            }
        }
    )

    const handleChange = (e) => {
        const userInput = e.target.value
        const flag = ValidateUserInput('email', userInput)

        setEmail({...formEmail, dict : {
            key : flag,
            value : userInput
        }})
        console.log(formEmail)
    }

    const [aux, setCase] = useState('default')
    const handleChangeSwitch = (value) => setCase(value);

    const onSubmit = (e, email) => {
        e.stopPropagation()
        const query = email

        setEmail({...formEmail, dict : {
            key : false,
            value : ''
        }})
        handleChangeSwitch('error')
    }


    const components = {
        default : <Default handleChange={handleChange} onSubmit={onSubmit} value={formEmail.dict.value} error={formEmail.dict.key}/>,
        success : <Success email={state.currentUser.email} changeSwitch={handleChangeSwitch}/>,
        error : <Error email={state.currentUser.email} handleChange={handleChange} onSubmit={onSubmit} value={formEmail.dict.value} error={formEmail.dict.key}/>
    }

    const switchFunction = (value) => {
        switch(value) {
            case 'success':
                return components.success;
                break;
            case 'error':
                return components.error;
                break;
            default:
                return components.default
                break;

            }
    }

    return (
        <>
            <BackgroundDiv>
                <div style={{minWidth:"1170px"}}>
                    <CustomizedBreadcrumbs
                        values={["Recuperar senha"]}
                    />
                </div>

                <div style={{justifyContent:"center", textAlign:"center", maxWidth:"600px", margin:"auto"}}>
                <Paper elevation={3}>
                    <CardDiv>
                            {switchFunction(aux)}
                    </CardDiv>
                </Paper>
                </div>
            </BackgroundDiv>
        </>
    )
}

const CardDiv = styled.div`
    background-color : #fff;
    box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);
    padding : 30px 60px;
    margin : 50px 0;
`