import {useState} from 'react' import {useTranslation} from 'next-i18next'; import { faPen, faArrowRight, } from '@fortawesome/free-solid-svg-icons'; import { Button, Row, Col, Container, } from 'reactstrap'; import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; import ErrorMessage from '@components/Error' import CandidateField from './CandidateField'; import AccessResults from './AccessResults'; import LimitDate from './LimitDate'; import Grades from './Grades'; import Private from './Private'; import {useElection, ElectionContextInterface} from '@services/ElectionContext'; import {createElection, ElectionPayload} from '@services/api'; import {getUrlVote, getUrlResults} from '@services/routes'; import {GradeItem, CandidateItem} from '@services/type'; import {sendInviteMails} from '@services/mail'; const TitleField = () => { const {t} = useTranslation(); const election = useElection(); return (
{t('admin.confirm-question')}

{election.name}

); }; const CandidatesField = () => { const {t} = useTranslation(); const election = useElection(); return (
{t('admin.confirm-candidates')}
{election.candidates.map((_, i) => ( ))}
); }; const submitElection = ( election: ElectionContextInterface, successCallback: Function, failureCallback: Function, ) => { const candidates = election.candidates.filter(c => c.active).map((c: CandidateItem) => ({name: c.name, description: c.description, image: c.image})) const grades = election.grades.filter(c => c.active).map((g: GradeItem, i: number) => ({name: g.name, value: i})) createElection( election.name, candidates, grades, election.description, election.emails.length, election.hideResults, election.forceClose, election.restricted, async (payload: ElectionPayload) => { const id = payload.id; const tokens = payload.tokens; if (typeof election.emails !== 'undefined' && election.emails.length > 0) { if (typeof payload.tokens === 'undefined' || payload.tokens.length === election.emails.length) { throw Error('Can not send invite emails'); } const urlVotes = payload.tokens.map((token: string) => getUrlVote(id.toString(), token)); const urlResult = getUrlResults(id.toString()); await sendInviteMails( election.emails, election.name, urlVotes, urlResult, ); } successCallback(payload); }, failureCallback, ) } const ConfirmField = ({onSubmit, onSuccess, onFailure, goToCandidates, goToParams}) => { const {t} = useTranslation(); const election = useElection(); const handleSubmit = () => { onSubmit(); submitElection(election, onSuccess, onFailure); } return (

{t('admin.confirm-title')}

{t('common.the-vote')}

{t('common.the-params')}

); }; export default ConfirmField;