import React, {ReactNode, useState} from 'react';
import ConfirmationModal from "../../../UI/Modal/ActionsModal/ConfirmationModal";
import {isValidMail} from "../../../../helpers/functions";
import {AccountRequest, AccountRequestType} from "../../../../models/NetSupport/AccountRequest";

type ResolveModalProps = {
    children?: ReactNode
    close: any
    resolveRequest: (username: string, type:string, password:string) => any
    request: AccountRequest
}

const ResolveModal = ({close, resolveRequest, request}: ResolveModalProps) => {

    const [username, setUsername] = useState<string>(request.username)
    const [password, setPassword] = useState<string>('')

    const text = (typeName: typeof request.type.name):string =>{

        switch (typeName) {
            case "remove_account":
                return 'Είστε σίγουρος/η ότι θέλετε να κάνετε resolve το αίτημα; Με την ολοκλήρωση θα απενεργοποιηθεί ο λογαριασμός του χρήστη.'
            case "new_account":
                return 'Είστε σίγουρος/η ότι θέλετε να κάνετε resolve το αίτημα; Με την ολοκλήρωση θα σταλθεί email στον χρήστη που θα τον ενημερώνει για τη δημιουργία του email account.'
            case "new_account_dua":
                return 'Είστε σίγουρος/η ότι θέλετε να κάνετε resolve το αίτημα; Με την ολοκλήρωση θα σταλθεί email στον χρήστη που θα τον ενημερώνει για τη δημιουργία του email account.'
            case "confirmation":
                return 'Είστε σίγουρος/η ότι θέλετε να κάνετε resolve το αίτημα; Με την ολοκλήρωση θα ενεργοποιηθεί ο λογαριασμός του χρήστη.'
            default:
                console.error('ΜΗ ΕΓΚΥΡΟΣ ΤΥΠΟΣ ΑΙΤΗΜΑΤΟΣ', typeName)
                return ''
        }
    }

    return (
        <ConfirmationModal
            onClose={() => close()}
            title={'Ολοκλήρωση Αιτήματος'}
            text={text(request.type.name)}
            modalAction={() => resolveRequest(username, request.type.name, password)}
            className={'edit-username'}
            isDisabled={!isValidMail(username) || (request.type.name !== 'confirmation' && request.type.name !== 'remove_account' && password === "")}
        >

            {
                request.type.name !== 'remove_account' &&
                <div className={'form'}>


                    <label htmlFor="new_username" className={'new'}>
                        <span>Τελικό User Email:</span>
                        <input placeholder={'username@domain.xx'} type="text" value={username} onChange={(e) => setUsername(e.target.value)}
                               id={'new_username'}/>

                    </label>


                    {
                        request.type.name !== 'confirmation' &&
                        <label htmlFor="new_password" className={'new'}>
                            <span>Password User Email:</span>
                            <input type="text" value={password} onChange={(e) => setPassword(e.target.value)}
                                   id={'new_password'}/>
                        </label>
                    }

                </div>
            }



        </ConfirmationModal>
    );
}

export default ResolveModal;
