import { memo, useEffect, useState } from "react"
import { useSelector, shallowEqual } from "react-redux"
import type {} from "redux-thunk/extend-redux"
import { toast } from "react-toastify"
import _ from "lodash"
import classnames from "classnames"
import styles from "./styles.module.scss"
import { fetchPostulantAdd } from "../../store/postulantAdd"
import { AppDispatch, AppState } from "../../store"
import FormButton from "../Form/FormButton/FormButton"
import { validEmail } from "../../utils/standardization"
import { toastError } from "../../store/utils"
import {
sendBooleanRadioboxDispatch,
sendTextareaDispatch,
sendRadioboxDispatch,
sendTextDispatch,
} from "../input.utils"
import {
fetchMiscFestivalDateListIfNeed,
selectMiscFestivalDateList,
} from "../../store/miscFestivalDateList"
import {
fetchMiscMeetingDateListIfNeed,
selectMiscMeetingDateList,
} from "../../store/miscMeetingDateList"
import LoginForm from "../LoginForm"
interface Props {
dispatch: AppDispatch
}
const animations = [
[styles.imgTransitionDoHide, styles.imgTransitionShow],
[styles.imgTransitionHidden, styles.imgTransitionShow],
[styles.imgTransitionReset, styles.imgTransitionShow],
[styles.imgTransitionAbouToShow, styles.imgTransitionShow],
[styles.imgTransitionShow, styles.imgTransitionDoHide],
[styles.imgTransitionShow, styles.imgTransitionHidden],
[styles.imgTransitionShow, styles.imgTransitionReset],
[styles.imgTransitionShow, styles.imgTransitionAbouToShow],
]
const RegisterForm = ({ dispatch }: Props): JSX.Element => {
const [firstname, setFirstname] = useState("")
const [lastname, setLastname] = useState("")
const [email, setEmail] = useState("")
const [mobile, setMobile] = useState("")
const [comment, setComment] = useState("")
const [alreadyCame, setAlreadyCame] = useState(true)
const [alreadySignup, setAlreadySignup] = useState(false)
const [firstMeeting, setFirstMeeting] = useState("")
const [commentFirstMeeting, setCommentFirstMeeting] = useState("")
const [howToContact, setHowToContact] = useState("Email")
const [sending, setSending] = useState(false)
const [changingBackground, setChangingBackground] = useState(0)
const festivalDateList = useSelector(selectMiscFestivalDateList)
const meetingDateList = useSelector(selectMiscMeetingDateList)
const enableRegistering = false
const hasMeetingDates = meetingDateList.length > 0
useEffect(() => {
const timer = setInterval(() => {
setChangingBackground((changingBackground + 1) % animations.length)
}, 60000 / animations.length)
return () => clearInterval(timer)
}, [changingBackground, setChangingBackground])
const transitionClass = (i: number) => animations[changingBackground][i - 1]
const onSubmit = () => {
if (!validEmail(email)) {
toastError("Cet email est invalid ><")
return
}
if (!firstname || !lastname || !email || !mobile || sending) {
toast.warning("Il faut remplir les quelques infos sur toi ><", {
position: "top-center",
autoClose: 6000,
hideProgressBar: true,
closeOnClick: true,
pauseOnHover: true,
draggable: true,
progress: undefined,
})
return
}
dispatch(
fetchPostulantAdd({
potential: true,
firstname,
lastname,
email,
mobile,
howToContact,
alreadyCame,
firstMeeting,
commentFirstMeeting: firstMeeting ? "" : commentFirstMeeting,
comment,
})
)
// dispatch(
// fetchVolunteerPartialAdd({
// firstname,
// lastname,
// email,
// mobile,
// howToContact,
// })
// )
setSending(true)
}
const { error: postulantError, entities: postulant } = useSelector(
(state: AppState) => state.postulantAdd,
shallowEqual
)
const { error: volunteerError, entities: volunteer } = useSelector(
(state: AppState) => state.volunteerPartialAdd,
shallowEqual
)
let sendSuccess
let sendError
let sendingElement
if (!postulantError && !_.isEmpty(postulant)) {
if (sending) {
setSending(false)
}
sendSuccess = (
Formulaire envoyé !
Tu as reçu un email de confirmation, peut-être dans tes spams.
)
} else if (postulantError && _.isEmpty(postulant)) {
if (sending) {
setSending(false)
}
sendError = {postulantError}
} else if (volunteerError && _.isEmpty(volunteer)) {
if (sending) {
setSending(false)
}
sendError = {volunteerError}
} else if (sending) {
sendingElement = (
Envoi en cours...
En cas de problème, écrire à benevoles@parisestludique.fr
)
}
const festivalFullDate = _.find(festivalDateList, { id: 1 })?.date
const intro = (
Un festival en plein air dédié aux jeux de société modernes sous toutes leurs formes.{festivalFullDate && ` Les ${festivalFullDate} !`}
En 2022, ce sont 18 000 visiteurs qui sont venus sous 300 chapiteaux et 2 000 tables.
Les 2 jours que durent le festival sont entièrement dédiés à ce que le public{" "} JOUE, que ce soit sur les stands d'éditeurs, d'associations, d'animateurs bénévoles, du coin des petits joueurs, de l'espace tournois, ou de l'espace prototypes.
L'organisation du festival est entièrement gérée par nous, les bénévoles. À aucun moment ça ne ressemble à du travail : nous faisons tout pour passer un aussi bon moment que les visiteurs :)
D'ailleurs, un soir par mois nous nous réunissons pour un apéro ludique où discuter de l'organisation ! On joue autant que les visiteurs, mais sur toute l'année ^^
Pendant le festival de 2022, nous étions 196 bénévoles organisés en équipes qui chouchoutent les visiteurs en les accueillant, en s'assurant que tout se passe bien, ou encore en expliquant des règles de jeux.
Une équipe est même dédiée au bien être des bénévoles en leur servant à boire et à manger dans un espace à part où faire des pauses régulières. Et puis nous hébergeons ceux d'entre nous qui habitent loin de Paris. Le confort avant tout !
La majorité d'entre nous sommes bénévoles les samedi et dimanche, mais certains bénévoles ne sont pas disponibles les deux jours. On leur demande alors d'aider à la mise en place mercredi, jeudi ou vendredi, ou au rangement le lundi, à la place d'un des jours du weekend. Bref, chacun participe comme il peut mais deux jours minimum !
Le samedi soir quand les visiteurs sont partis, nous prolongeons la fête en dînant avec les exposants présents sur le festival. Le dimanche rebelote juste entre bénévoles.
Viens simplement t'identifier sur fo.parisestludique.fr{" "} ou en dessous ^^
Il a lieu peu après la Foire du Trône et au même emplacement, sur la{" "} "pelouse" de Reuilly . En voici le plan de 2019, quand il s'étendait sur 2 hectares pour accueillir 16 000 visiteurs. La plupart des rectangles colorés que tu vois dessus sont d'énormes barnums, ou agglomérats de tonnelles.
Les espaces jeux bleu, violet, gris, ou marron sont installés et animés par des éditeurs professionnels. Des pros gèrent les zones de restauration rouges. Tout le reste est tenu par des associations ou des bénévoles du festival.
Après l'édition de 2019, on a fait cette petite vidéo qui donne une bonne impression de l'ambiance :{" "} https://www.youtube.com/watch?v=eVuQaERb7EU
Et des visiteurs passionnés ( Road N Troll ) ont fait cette présentation plus en détail des différentes zones en 2018. J'ai coupé les présentations de jeux mais tout le reste est encore d'actualité :{" "} https://www.youtube.com/watch?v=jSCHWqjHJIQ
On organise des rencontres entre de nouvelles personnes comme toi, et des bénévoles suffisamment expérimentés pour te parler en détail du festival et répondre à toutes tes questions liées au bénévolat ou au festival.
Ces rencontres ont lieu à 19h dans un bar/resto calme à Châtelet, le{" "} Rhinocéros .
{!hasMeetingDates && firstMeeting === "" && ( <> Top ! On te propose très vite des dates, ou à défaut, une visio :) > )} {firstMeeting === "visio" && ( <> Top ! On te recontacte très vite avec des dates pour une visio avec 2 bénévoles et 2-3 autres personnes intéréssées comme toi :) > )} {hasMeetingDates && firstMeeting !== "" && ( <> Top ! On fait en sorte qu'il y ait assez de bénévoles expérimentés pour les nombreux curieux comme toi, donc pour ne pas gâcher leur temps on compte sur ta présence :) > )}
Si tu as un contre-temps, écris-nous à benevoles@parisestludique.fr
À très bientôt !
Légalement il faut que le festival soit organisé par une structure, et c'est l'association Paris est Ludique ! qui s'en charge. Pour avoir un droit de regard dessus, devenir bénévole à cette édition implique automatiquement d'en devenir membre jusqu'à septembre prochain. Ça n'engage à rien et c'est gratuit !
Aïe ça va poser problème, je suis désolé. Il faut qu'on puisse te contacter par l'un des moyens de communication proposés.
Tu en connais un suffisamment répandu et meilleur que ceux proposés ? Parle-nous en à benevoles@parisestludique.fr !!