{"version":3,"sources":["moduleAdmin/index.ts","moduleAdmin/features/account/middlewares.ts","store/index.ts","moduleAdmin/features/account/utils.ts","features/ui/slice.ts","moduleAdmin/features/adminCampagnes/slice.ts","features/home/slice.ts","features/soutien/slice.ts","utils.ts","moduleAdmin/features/adminCampagnes/api.ts","moduleAdmin/features/adminCampagnes/actions.ts","theme.ts","features/espacePublique/slice.ts","moduleAdmin/features/inscription/slice.ts","moduleAdmin/features/adminCampagnes/schemas.ts","dates.tsx","moduleAdmin/features/candidats/slice.ts","features/vote/api.ts","features/vote/actions.ts","backend/apiconfig.ts","backend/Api.ts","moduleAdmin/features/inscription/api.ts","moduleAdmin/features/inscription/actions.ts","features/themes/slice.ts","moduleAdmin/features/email/slice.ts","features/espacePublique/api.ts","features/espacePublique/actions.ts","moduleAdmin/features/email/api.ts","moduleAdmin/features/email/actions.ts","components/ErrorBoundary.tsx","components/SuspenseMessage.tsx","GlobalStyles.tsx","reportWebVitals.ts","index.tsx","models/enums.ts","moduleAdmin/features/account/api.ts","moduleAdmin/features/account/slice.ts","features/vote/slice.ts","features/home/api.ts","features/home/actions.ts","features/traduction/api.ts","features/traduction/slice.ts","locales/en/index.ts","locales/fr/index.ts","i18n.ts","features/soutien/api.ts","features/soutien/actions.ts","features/themes/api.ts","features/themes/schemas.ts","features/themes/actions.ts","moduleAdmin/features/candidats/api.ts","moduleAdmin/features/candidats/actions.ts"],"names":["rootReducer","combineReducers","campagne","adminCampagnesReducer","account","accountReducer","candidats","candidatsReducer","inscription","inscriptionReducer","email","emailReducer","loginStorageMiddleware","next","action","login","fulfilled","match","sessionStorage","setItem","JSON","stringify","payload","logoff","clear","userInSession","userData","getItem","parse","undefined","getUserInSession","store","configureStore","preloadedState","admin","user","reducer","ui","uiReducer","adminReducer","home","homeReducer","themes","themesReducer","publique","publiqueReducer","soutien","soutienSliceReducer","vote","voteReducer","traduction","traductionReducer","middleware","getDefaultMiddleware","concat","useAppDispatch","useDispatch","initialState","loaders","modals","theme","primary","colors","cyan","secondary","teal","initialLoaderState","loading","error","isAsyncActionOfType","asyncState","type","endsWith","uiSlice","createSlice","name","reducers","openModal","state","open","data","closeModal","clearError","alterTheme","extraReducers","builder","addMatcher","Boolean","Campagne","PreferencesCampagne","urlLogo","UrlLogo","Theme","PrimaryColor","SecondaryColor","owner","toString","slice","message","actions","selectUiLoader","selectUiModal","selectTheme","selectUrlLogo","selectModalData","adminCampagnesSlice","Campagnes","Scrutins","fetchAllCampagnes","VentilationQuestions","Clients","scrutinModifie","Id","campagneModifie","normalized","normalize","campagnesSchema","_","merge","entities","addCase","fetchAllClients","deleteCampagne","filter","id","pick","deleteBulletins","updateCampagne","fetchScrutinById","closeScrutin","switchToCourriel","switchToEnDirect","updateEspacePublique","diffuserResultats","activateScrutin","reprendreScrutin","publishScrutin","forcerStatutScrutin","result","fetchCampagneById","fetchCampagneByScrutinId","addCampagne","addScrutin","setTheme","setOrdreScrutins","demarrerPrisePresences","arreterPrisePresences","deleteScrutin","omit","updateScrutin","dupliquerCampagne","updateQuestionsScrutin","addCandidatReponse","fetchVentilationScrutin","meta","arg","fetchApiInfo","ApiEnvironment","ASPNETCORE_ENVIRONMENT","selectCampagnes","map","selectClients","selectCampagne","selectScrutin","selectCampagneScrutins","campagneId","scrutins","Object","values","c","CampagneId","sort","a","b","Ordre","selectApiEnvironment","selectVentilation","scrutinId","homeSlice","token","scrutinsDansToken","setToken","extractDataFromToken","updateResultat","index","findIndex","scrutin","push","updateDroitDeVote","Bulletin","Inscription","DroitDeVote","modificationCampagne","priseDesPresences","EtatPresenceRefId","EtatPresence","INCONNU","reponsePrisePresence","PRESENT","fetchCampagne","initierVote","find","s","EtatRefId","EtatScrutin","ACTIF","selectToken","selectTypeCampagne","EstDirect","selectScrutinsDansToken","selectScrutins","selectInscription","soutienSlice","addInscription","checkDates","debut","fin","premature","Date","expired","active","checkDejaVote","scrutinUniqueID","bulletin","BulletinScrutins","some","ScrutinUniqueId","JwtDecode","apiRoute","api","get","Api","bearerAuth","then","response","parameters","post","qs","nbConnections","genererBulletins","patch","put","referenceId","refId","delete","fetchAllSegments","createAsyncThunk","AdminApi","scrutinSchema","borderColor","memoize","responsiveFontSizes","createMuiTheme","palette","main","common","black","warning","light","dark","tonalOffset","background","default","breakpoints","xl","lg","md","sm","xs","overrides","MuiExpansionPanel","root","position","MuiTableCell","paddingLeft","spacing","paddingRight","borderBottom","MuiDivider","backgroundColor","height","MuiListItem","divider","MuiDialog","paper","width","maxWidth","marginLeft","marginRight","MuiTooltip","tooltip","MuiExpansionPanelDetails","publiqueSlice","selectAvecCandidats","Questions","q","Reponses","r","Candidat","selectCandidats","titre","Titre","postes","Texte","p","length","inscriptionSlice","Inscriptions","allInscriptions","fetchAllInscriptions","importInscriptions","donnerDroitVoteATous","retirerDroitVoteATous","donnerDroitVote","retirerDroitVote","synchroniserDroitVoteAvecPresences","unshift","admettreInscription","editInscription","includes","updateCourriel","radierInscription","rejetterInscription","deleteInscription","selectInscriptions","x","EtatInscriptionRefId","EtatInscription","CONFIRMEE","ANNULEE","selectInscriptionsEnAttente","EN_ATTENTE","selectInscriptionById","schema","Entity","idAttribute","Moment","globalFormat","globalElement","DateHeure","date","format","LocalisationSetter","useSelector","selectTraduction","useEffect","moment","locale","codei18n","numeral","candidatsSlice","Candidats","allCandidats","fetchAllCandidats","editCandidat","CampagneIds","sendVotes","scrutinUniqueId","votes","choix","keys","k","questionId","Number","parseInt","reponsesId","voteApi","baseApiConfig","withCredentials","timeout","baseURL","process","headers","Pragma","Accept","paramsSerializer","indices","apiConfig","config","getUri","request","url","head","this","axios","create","interceptors","use","status","Promise","reject","Error","title","statusText","detail","Authorization","file","formData","FormData","append","genererBulletinsPourInscriptions","genererBulletinPourUneInscription","inscriptionId","origin","reponse","rest","courriel","inscriptionSchema","themesSclice","Themes","fetchAllThemes","fetchThemeById","selectThemes","EmailSlice","Templates","allTemplates","fetchAllTemplates","selectTemplates","campagneUniqueId","PubliqueApi","sendEmail","destination","courrielAlternatif","emailTemplateSchema","GlobalErrorFallback","resetErrorBoundary","style","display","justifyContent","alignItems","Alert","flex","paddingTop","paddingBottom","severity","Button","color","size","onClick","ErrorBoundary","children","FallbackComponent","useStyles","makeStyles","loadingPaper","margin","marginTop","padding","flexDirection","LoadingMessage","classes","Paper","className","Typography","variant","SuspenseMessage","fallback","withStyles","createStyles","outline","white","withTheme","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","Admin","lazy","Home","Soutien","Login","history","createBrowserHistory","ReactDOM","render","ThemeProvider","CssBaseline","GlobalStyles","utils","DateFnsUtils","path","component","document","querySelector","createElement","ScrutinErrorCodes","password","sliceName","AccountApi","accountSlice","selectUser","initialBulletin","dirty","voteSlice","modifierChoixReponse","reponsesIds","terminerVote","bs","enleverMessageAvantVote","MessageAvantVote","ScrutinActif","selectBulletin","selectDejaVote","UniqueId","selectAnyVote","selectChoix","selectChoixPourQuestion","loginWithCode","codeAccess","HomeApi","success","failed","catch","defaultLocale","traductions","traductionSlice","loadTraduction","Locale","Code_i18n","reduce","accumulator","item","step","Entite","Nom","OwnerId","Propriete","loadTraductionsAsync","dispatch","TraductionApi","console","errors","validation","resources","en","langueEn","fr","langueFr","i18n","detector","initReactI18next","init","lng","fallbackLng","keySeparator","interpolation","escapeValue","on","aide","recuperer","themeSchema","ThemeApi","candidat","candidatSchema"],"mappings":"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","file":"static/js/main.ca32caff.chunk.js","sourcesContent":["import { combineReducers } from 'redux';\nimport adminCampagnesReducer from 'moduleAdmin/features/adminCampagnes/slice';\nimport accountReducer from 'moduleAdmin/features/account/slice';\nimport candidatsReducer from 'moduleAdmin/features/candidats/slice';\nimport inscriptionReducer from 'moduleAdmin/features/inscription/slice';\nimport emailReducer from 'moduleAdmin/features/email/slice';\n\nconst rootReducer = combineReducers({\n campagne: adminCampagnesReducer,\n account: accountReducer,\n candidats: candidatsReducer,\n inscription: inscriptionReducer,\n email: emailReducer,\n});\n\nexport default rootReducer;\n","/* eslint-disable import/prefer-default-export */\nimport { Middleware, AnyAction } from 'redux';\nimport { logoff, login } from './slice';\n\nexport const loginStorageMiddleware: Middleware = () => (next) => (\n action: AnyAction\n) => {\n if (login.fulfilled.match(action)) {\n sessionStorage.setItem('user', JSON.stringify(action.payload));\n } else if (logoff.match(action)) {\n sessionStorage.clear();\n }\n return next(action);\n};\n","import { Action, configureStore, ThunkAction } from '@reduxjs/toolkit';\nimport homeReducer from 'features/home/slice';\nimport soutienSliceReducer from 'features/soutien/slice';\nimport themesReducer from 'features/themes/slice';\nimport traductionReducer from 'features/traduction/slice';\nimport uiReducer from 'features/ui/slice';\nimport voteReducer from 'features/vote/slice';\nimport publiqueReducer from 'features/espacePublique/slice';\nimport adminReducer from 'moduleAdmin';\nimport { loginStorageMiddleware } from 'moduleAdmin/features/account/middlewares';\nimport { getUserInSession } from 'moduleAdmin/features/account/utils';\nimport { useDispatch } from 'react-redux';\n\nconst userInSession = getUserInSession();\n\nexport const store = configureStore({\n preloadedState: {\n admin: {\n account: { user: userInSession },\n },\n },\n reducer: {\n ui: uiReducer,\n admin: adminReducer,\n home: homeReducer,\n themes: themesReducer,\n publique: publiqueReducer,\n soutien: soutienSliceReducer,\n vote: voteReducer,\n traduction: traductionReducer,\n },\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware().concat(loginStorageMiddleware),\n});\n\nexport type AppState = ReturnType;\nexport type AppThunk = ThunkAction<\n ReturnType,\n AppState,\n unknown,\n Action\n>;\n\nexport type AppDispatch = typeof store.dispatch;\nexport const useAppDispatch = () => useDispatch();\n","/* eslint-disable import/prefer-default-export */\nexport const getUserInSession = () => {\n const userData = sessionStorage.getItem('user');\n return userData ? JSON.parse(userData) : undefined;\n};\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { AnyAction, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { colors } from '@material-ui/core';\nimport { ModalName, UiSlice, UiSliceLoader } from './types';\n\nconst initialState: UiSlice = {\n loaders: {},\n modals: {},\n theme: { primary: colors.cyan[800], secondary: colors.teal[400] },\n};\n\nconst initialLoaderState: UiSliceLoader = {\n loading: false,\n error: undefined,\n};\n\ntype AsyncState = 'pending' | 'fulfilled' | 'rejected';\n\nconst isAsyncActionOfType = (asyncState: AsyncState) => (\n action: AnyAction\n): action is AnyAction => action.type.endsWith(asyncState);\n\nconst isActionWithTheme = () => (action: AnyAction): action is AnyAction =>\n Boolean(action?.payload?.Campagne?.PreferencesCampagne);\n\nexport const uiSlice = createSlice({\n name: 'ui',\n initialState,\n reducers: {\n openModal: (\n state,\n action: PayloadAction<{ name: ModalName; data?: unknown }>\n ) => {\n state.modals[action.payload.name] = {\n open: true,\n data: action.payload.data,\n };\n },\n closeModal: (state, action: PayloadAction) => {\n state.modals[action.payload] = { open: false };\n },\n clearError: (state, action: PayloadAction) => {\n state.loaders[action.payload] = {\n ...state.loaders[action.payload],\n error: undefined,\n };\n },\n alterTheme: (\n state,\n action: PayloadAction<{ primary: string; secondary: string }>\n ) => {\n state.theme = { ...action.payload };\n return state;\n },\n },\n extraReducers: (builder) => {\n // builder.addCase(fetchScrutins.fulfilled, (state, action) => {\n // if (action.payload.Scrutins[0]?.CampagnePreferencesCampagne) {\n // state.urlLogo =\n // action.payload.Scrutins[0]?.CampagnePreferencesCampagne.UrlLogo;\n // const {\n // PrimaryColor,\n // SecondaryColor,\n // } = action.payload.Scrutins[0]?.CampagnePreferencesCampagne.Theme;\n // state.theme = { primary: PrimaryColor, secondary: SecondaryColor };\n // }\n\n // return state;\n // });\n\n builder.addMatcher(isActionWithTheme(), (state, action) => {\n state.urlLogo = action.payload.Campagne.PreferencesCampagne.UrlLogo;\n const {\n PrimaryColor,\n SecondaryColor,\n } = action.payload.Campagne.PreferencesCampagne.Theme;\n state.theme = { primary: PrimaryColor, secondary: SecondaryColor };\n\n return state;\n });\n\n builder.addMatcher(\n isAsyncActionOfType('pending'),\n (state, action: AnyAction) => {\n const owner = action.type.toString().slice(0, -8);\n state.loaders[owner] = { loading: true, error: undefined };\n }\n );\n builder.addMatcher(\n isAsyncActionOfType('fulfilled'),\n (state, action: AnyAction) => {\n const owner = action.type.toString().slice(0, -10);\n state.loaders[owner] = { loading: false };\n }\n );\n builder.addMatcher(\n isAsyncActionOfType('rejected'),\n (state, action: AnyAction) => {\n const owner = action.type.toString().slice(0, -9);\n state.loaders[owner] = {\n loading: false,\n error:\n action.error.message ||\n // action.payload ||\n 'Une erreur est survenue lors de votre requête',\n };\n }\n );\n },\n});\n\nexport const {\n openModal,\n closeModal,\n clearError,\n alterTheme,\n} = uiSlice.actions;\n\nexport const selectUiLoader = (owner: string) => (state: AppState) => {\n if (owner in state.ui.loaders) {\n return state.ui.loaders[owner];\n }\n return initialLoaderState;\n};\n\nexport const selectUiModal = (name: ModalName) => (state: AppState) => {\n if (name in state.ui.modals) {\n return state.ui.modals[name].open;\n }\n return false;\n};\n\nexport const selectUiModals = (state: AppState) => state.ui.modals;\nexport const selectTheme = (state: AppState) => state.ui.theme;\nexport const selectUrlLogo = (state: AppState) => state.ui.urlLogo;\nexport const selectModalData = (name: ModalName) => (state: AppState) =>\n state.ui.modals[name]?.data;\n\nexport default uiSlice.reducer;\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport {createSlice, PayloadAction} from '@reduxjs/toolkit';\nimport _ from 'lodash';\nimport {CampagneListItem, ClientListItem, ScrutinAdminReponse} from 'models/adminModel';\nimport {ResultatsDirectScrutin} from 'models/voteModel';\nimport {normalize} from 'normalizr';\nimport {AppState} from 'store';\nimport {\n arreterPrisePresences,\n demarrerPrisePresences,\n} from '../inscription/actions';\nimport {\n activateScrutin,\n addCampagne,\n addCandidatReponse,\n addScrutin,\n closeScrutin,\n deleteBulletins,\n deleteCampagne, deleteScrutin,\n diffuserResultats, dupliquerCampagne,\n fetchAllCampagnes,\n fetchApiInfo,\n fetchCampagneById,\n fetchCampagneByScrutinId,\n fetchScrutinById,\n fetchVentilationScrutin,\n fetchAllClients,\n forcerStatutScrutin,\n publishScrutin,\n reprendreScrutin,\n setOrdreScrutins,\n setTheme,\n switchToCourriel,\n switchToEnDirect,\n updateCampagne,\n updateEspacePublique,\n updateQuestionsScrutin,\n updateScrutin,\n} from './actions';\nimport {AdminCampagnesSliceEntities, campagnesSchema} from './schemas';\n\nexport interface AdminCampagnesSlice\n extends Readonly {\n fetchAllCampagnes: number[];\n VentilationQuestions: Record>;\n ApiEnvironment?: string;\n Clients: ClientListItem[];\n}\n\nconst initialState: AdminCampagnesSlice = {\n Campagnes: {},\n Scrutins: {},\n fetchAllCampagnes: [],\n VentilationQuestions: {},\n Clients:[],\n};\n\nexport const adminCampagnesSlice = createSlice({\n name: 'admin/campagne',\n initialState,\n reducers: {\n scrutinModifie: (state, action: PayloadAction) => {\n state.Scrutins[action.payload.Id] = {\n ...state.Scrutins[action.payload.Id],\n ...action.payload,\n };\n return state;\n },\n campagneModifie: (state, action: PayloadAction) => {\n const normalized = normalize(action.payload, campagnesSchema);\n _.merge(state, normalized.entities);\n return state;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchAllClients.fulfilled, (state, action) => {\n state.Clients = action.payload;\n return state;\n });\n \n builder.addCase(deleteCampagne.fulfilled, (state, action) => {\n state.fetchAllCampagnes = state.fetchAllCampagnes.filter(\n (id) => id !== action.payload\n );\n state.Campagnes = _.pick(state.Campagnes, state.fetchAllCampagnes);\n return state;\n });\n builder.addCase(deleteBulletins.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(updateCampagne.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(fetchScrutinById.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(closeScrutin.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.VentilationQuestions = {};\n });\n builder.addCase(switchToCourriel.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(switchToEnDirect.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(updateEspacePublique.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(diffuserResultats.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(activateScrutin.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.VentilationQuestions = {};\n });\n builder.addCase(reprendreScrutin.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.VentilationQuestions = {};\n });\n builder.addCase(publishScrutin.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(forcerStatutScrutin.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(fetchAllCampagnes.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.fetchAllCampagnes = action.payload.result;\n });\n builder.addCase(fetchCampagneById.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(fetchCampagneByScrutinId.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(addCampagne.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(addScrutin.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(setTheme.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(setOrdreScrutins.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(demarrerPrisePresences.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(arreterPrisePresences.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n });\n builder.addCase(deleteScrutin.fulfilled, (state, action) => {\n state.Scrutins = _.omit(state.Scrutins, action.payload);\n });\n \n builder.addCase(updateScrutin.fulfilled, (state, action) => {\n state.Scrutins = {\n ...state.Scrutins,\n [action.payload.Id]: action.payload,\n };\n return state;\n });\n builder.addCase(dupliquerCampagne.fulfilled, (state, action) => {\n state.Campagnes = {\n ...state.Campagnes,\n [action.payload.Id]: action.payload,\n };\n });\n builder.addCase(updateQuestionsScrutin.fulfilled, (state, action) => {\n state.Scrutins = {\n ...state.Scrutins,\n [action.payload.Id]: action.payload,\n };\n return state;\n });\n builder.addCase(addCandidatReponse.fulfilled, (state, action) => {\n state.Scrutins = {\n ...state.Scrutins,\n [action.payload.Id]: action.payload,\n };\n return state;\n });\n\n builder.addCase(fetchVentilationScrutin.fulfilled, (state, action) => {\n state.VentilationQuestions[action.meta.arg.id] = action.payload;\n return state;\n });\n builder.addCase(fetchApiInfo.fulfilled, (state, action) => {\n state.ApiEnvironment = action.payload.ASPNETCORE_ENVIRONMENT;\n return state;\n });\n },\n});\n\nexport const {scrutinModifie, campagneModifie} = adminCampagnesSlice.actions;\n\nexport const selectCampagnes = (state: AppState) => {\n const ids = state.admin.campagne.fetchAllCampagnes;\n return ids.map((id) => state.admin.campagne.Campagnes[id]);\n};\n\nexport const selectClients = (state: AppState) => state.admin.campagne.Clients;\n\nexport const selectCampagne = (id: number) => (state: AppState) =>\n state.admin.campagne.Campagnes[id];\n\nexport const selectScrutin = (id: number) => (state: AppState) =>\n state.admin.campagne.Scrutins[id];\n\nexport const selectCampagneScrutins = (campagneId: number) => (\n state: AppState\n) => {\n const scrutins = Object.values(state.admin.campagne.Scrutins).filter(\n (c) => c.CampagneId === campagneId\n );\n scrutins.sort((a, b) => a.Ordre - b.Ordre);\n return scrutins;\n};\n\n// TODO: Move?\nexport const selectApiEnvironment = (state: AppState) =>\n state.admin.campagne.ApiEnvironment;\n\nexport const selectVentilation = (scrutinId: number) => (state: AppState) =>\n state.admin.campagne.VentilationQuestions[scrutinId];\n\nexport default adminCampagnesSlice.reducer;\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { initierVote } from 'features/vote/slice';\nimport _ from 'lodash';\nimport { EtatPresence, EtatScrutin } from 'models/enums';\nimport { Bulletin, Campagne, ResultatsDirectScrutin } from 'models/voteModel';\nimport { AppState } from 'store';\nimport { extractDataFromToken } from 'utils';\nimport { fetchCampagne } from './actions';\n\nconst sliceName = 'home';\n\nexport type TypeCampagne = 'EnDirect' | 'Courriel';\n\nexport interface HomeSlice {\n token: string | null;\n Campagne?: Campagne;\n Bulletin?: Bulletin;\n scrutinsDansToken: string[];\n}\n\nconst initialState: HomeSlice = {\n token: null,\n scrutinsDansToken: [],\n};\n\nexport const homeSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n setToken: (state, action: PayloadAction) => {\n let scrutinsDansToken: string[] = [];\n\n if (action.payload) {\n const content = extractDataFromToken(action.payload);\n scrutinsDansToken = content.scrutins || [];\n }\n\n state.scrutinsDansToken = scrutinsDansToken;\n state.token = action.payload;\n },\n updateResultat: (state, action: PayloadAction) => {\n if (state.Campagne) {\n const index = state.Campagne.Scrutins.findIndex(\n (scrutin) => scrutin.Id === action.payload.Id\n );\n if (index > -1) {\n state.Campagne.Scrutins[index] = action.payload;\n } else {\n state.Campagne.Scrutins.push(action.payload);\n }\n }\n\n return state;\n },\n updateDroitDeVote: (state, action: PayloadAction) => {\n if (state.Bulletin?.Inscription) {\n state.Bulletin.Inscription.DroitDeVote = action.payload;\n }\n return state;\n },\n modificationCampagne: (\n state,\n action: PayloadAction<{ Campagne: Campagne }>\n ) => {\n _.merge(state, action.payload);\n return state;\n },\n priseDesPresences: (state) => {\n if (state.Bulletin && state.Bulletin.Inscription) {\n state.Bulletin.Inscription.EtatPresenceRefId = EtatPresence.INCONNU;\n }\n return state;\n },\n reponsePrisePresence: (state) => {\n if (state.Bulletin && state.Bulletin.Inscription) {\n // Si la réponse au challenge de la prise des présence n'est pas bonne, il sera\n // absent. On ne l'indique pas coté client pour des raison évidentes :)\n state.Bulletin.Inscription.EtatPresenceRefId = EtatPresence.PRESENT;\n }\n return state;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchCampagne.fulfilled, (state, action) => ({\n ...state,\n Campagne: action.payload.Campagne,\n Bulletin: action.payload.Bulletin,\n }));\n\n builder.addCase(initierVote, (state, action) => {\n const scrutin = state.Campagne?.Scrutins.find(\n (s) => s.Id === action.payload.scrutin.Id\n );\n if (scrutin) {\n scrutin.EtatRefId = EtatScrutin.ACTIF;\n }\n return state;\n });\n },\n});\n\nexport const {\n setToken,\n updateResultat,\n updateDroitDeVote,\n modificationCampagne,\n priseDesPresences,\n reponsePrisePresence,\n} = homeSlice.actions;\n\nexport const homeSliceName = homeSlice.name;\n\nexport const selectToken = (state: AppState) => state.home.token;\n\nexport const selectTypeCampagne: (state: AppState) => TypeCampagne | null = (\n state\n) => {\n if (!state.home.Campagne) return null;\n return state.home.Campagne?.EstDirect ? 'EnDirect' : 'Courriel';\n};\n\nexport const selectScrutinsDansToken = (state: AppState) =>\n state.home.scrutinsDansToken;\n\nexport const selectCampagne = (state: AppState) => state.home.Campagne;\n\nexport const selectScrutins = (state: AppState) =>\n state.home.Campagne?.Scrutins || [];\n\nexport const selectInscription = (state: AppState) =>\n state.home.Bulletin?.Inscription;\n\nexport default homeSlice.reducer;\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { CampagnePourInscription, Inscription } from 'models/voteModel';\nimport { AppState } from 'store';\nimport { addInscription, fetchCampagne } from './actions';\n\nconst sliceName = 'support';\n\n// export type SoutienState = 'Accueil' | 'En attente approbation';\n\nexport interface SoutienSlice {\n campagne?: CampagnePourInscription;\n inscription?: Inscription;\n}\n\nconst initialState: SoutienSlice = {\n // inscriptionState: 'Inscription',\n};\n\nexport const soutienSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchCampagne.fulfilled, (state, action) => ({\n ...state,\n campagne: action.payload.Campagne,\n }));\n builder.addCase(addInscription.fulfilled, (state, action) => ({\n ...state,\n inscription: action.payload,\n }));\n },\n});\n\n// export const {} = soutienSlice.actions;\nexport const soutienSliceName = soutienSlice.name;\n\nexport const selectCampagne = (state: AppState) => state.soutien.campagne;\n\nexport default soutienSlice.reducer;\n","/* eslint-disable import/prefer-default-export */\nimport JwtDecode from 'jwt-decode';\nimport { Bulletin } from './models/voteModel';\n\nexport const checkDates = (\n debut: string,\n fin: string\n): { premature: boolean; expired: boolean; active: boolean } => {\n const premature = new Date() < new Date(debut);\n const expired = new Date() > new Date(fin);\n const active = !premature && !expired;\n return { premature, expired, active };\n};\n\nexport const checkDejaVote = (\n scrutinUniqueID: string,\n bulletin?: Bulletin\n): boolean =>\n bulletin?.BulletinScrutins.some(\n (b) => b.ScrutinUniqueId === scrutinUniqueID\n ) || false;\n\nexport interface RenderProperty {\n (properties: TChildrenProperties): React.ReactElement;\n}\n\nexport const extractDataFromToken = (token: string) => {\n const content = JwtDecode(token) as {\n 'campagne-id'?: string;\n scrutins?: string[];\n 'unique-id': string;\n };\n return content;\n};\n","import api, {Api} from 'backend/Api';\nimport {\n CampagneListItem, ClientListItem,\n ScrutinAdmin,\n ScrutinAdminReponse,\n ScrutinListItem,\n} from 'models/adminModel';\nimport qs from 'qs';\nimport {\n UpdateCampagneFormFields,\n UpdateEspacePubliqueParameters,\n UpdateQuestionsScrutinFormFields,\n UpdateScrutinFormFields,\n} from './actions';\n\nconst apiRoute = `adminCampagnes`;\n\nconst fetchAllCampagnes = (token: string) =>\n api\n .get(apiRoute, Api.bearerAuth(token))\n .then((response) => response.data);\n\nconst fetchAllClients = (token: string) =>\n api\n .get(`${apiRoute}/GetAllClients`, Api.bearerAuth(token))\n .then((response) => response.data);\n\nconst fetchCampagneById = (id: number, token: string) =>\n api\n .get(`${apiRoute}/${id}`, Api.bearerAuth(token))\n .then((response) => response.data);\n\nconst fetchCampagneByScrutinId = (id: number, token: string) =>\n api\n .get(`${apiRoute}/ByScrutin/${id}`, Api.bearerAuth(token))\n .then((response) => response.data);\n\nconst fetchScrutinById = (id: number, token: string) =>\n api\n .get(`${apiRoute}/Scrutin/${id}`, Api.bearerAuth(token))\n .then((response) => response.data);\n\nconst addCampagne = (\n parameters: { token: string } & UpdateCampagneFormFields\n) => {\n const {token, ...data} = parameters;\n return api\n .post(apiRoute, qs.stringify(data), Api.bearerAuth(token))\n .then((response) => response.data);\n};\n\nconst deleteCampagne = (parameters: { id: number; token: string }) => {\n const {token, id} = parameters;\n return api\n .delete(`${apiRoute}/${id}`, Api.bearerAuth(token))\n .then((response) => response.data);\n};\n\nconst deleteScrutin = (parameters: { id: number; token: string }) => {\n const {token, id} = parameters;\n return api\n .delete(`${apiRoute}/DeleteScrutin/${id}`, Api.bearerAuth(token))\n .then((response) => response.data);\n};\n\nconst deleteBulletins = (parameters: { id: number; token: string }) => {\n const {token, id} = parameters;\n return api\n .delete(\n `${apiRoute}/DeleteBulletins/${id}`,\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst addScrutin = (parameters: {\n titre: string;\n idUnique: string;\n campagneId: number;\n typeScrutin: string;\n question: string;\n token: string;\n}) => {\n const {token, ...data} = parameters;\n return api\n .post(\n `${apiRoute}/scrutin`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst updateCampagne = (\n parameters: {\n id: number;\n token: string;\n } & UpdateCampagneFormFields\n) => {\n const {token, ...data} = parameters;\n return api\n .put(\n `${apiRoute}/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst updateEspacePublique = (\n parameters: {\n id: number;\n token: string;\n } & UpdateEspacePubliqueParameters\n) => {\n const {token, ...data} = parameters;\n return api\n .put(\n `${apiRoute}/EspacePublique/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\n// TODO: Bouger dans une autre feature?\n\nconst activateScrutin = (id: number, nbConnections: number, token: string) => {\n const data = {id, nbConnections, token};\n return api\n .post(\n `admin/ActiverScrutin`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst reprendreScrutin = (id: number, token: string) => {\n const data = {id, token};\n return api\n .post(\n `admin/ReprendreScrutin`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst closeScrutin = (id: number, token: string) => {\n const data = {id, token};\n return api\n .post(\n `admin/FermerScrutin`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst publishScrutin = (id: number, token: string) => {\n const data = {id, token};\n return api\n .post(\n `admin/PublierScrutin`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst forcerStatutScrutin = (\n id: number,\n referenceId: number,\n token: string\n) => {\n const data = {id, refId: referenceId, token};\n return api\n .post(\n `admin/ForcerStatutScrutin`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst diffuserResultats = (id: number, token: string) => {\n const data = {id, token};\n return api\n .post(\n `admin/DiffuserResultats`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst genererBulletins = (parameters: {\n campagneId: string;\n quantite: number;\n segments: string[];\n token: string;\n tokenSeulement?: boolean;\n}) => {\n const {token, ...data} = parameters;\n return api\n .post(\n `admin/GenererBulletins`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst fetchAllSegments = (campagneId: number, token: string) =>\n api\n .get(`${apiRoute}/Segments/${campagneId}`, Api.bearerAuth(token))\n .then((response) => response.data);\n\nconst setTheme = (parameters: {\n id: number;\n themeId: number;\n urlLogo: string | null;\n token: string;\n}) => {\n const {token, ...data} = parameters;\n return api\n .patch(\n `${apiRoute}/SetCampagneTheme/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst switchToCourriel = (parameters: { id: number; token: string }) => {\n const {token, ...data} = parameters;\n return api\n .patch(\n `${apiRoute}/SwitchToCourriel/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst switchToEnDirect = (parameters: { id: number; token: string }) => {\n const {token, ...data} = parameters;\n return api\n .patch(\n `${apiRoute}/SwitchToEnDirect/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst updateScrutin = (\n parameters: {\n id: number;\n token: string;\n } & UpdateScrutinFormFields\n) => {\n const {token, ...data} = parameters;\n return api\n .put(\n `${apiRoute}/Scrutin/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst updateQuestionsScrutin = (\n parameters: {\n id: number;\n token: string;\n } & UpdateQuestionsScrutinFormFields\n) => {\n const {token, ...data} = parameters;\n return api\n .put(\n `${apiRoute}/QuestionsScrutin/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst addCandidatReponse = (parameters: {\n id: number;\n token: string;\n nom: string;\n prenom: string;\n}) => {\n const {token, ...data} = parameters;\n return api\n .put(\n `${apiRoute}/AddCandidatReponse/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst setOrdreScrutins = (parameters: {\n id: number;\n scrutinsIds: number[];\n token: string;\n}) => {\n const {token, ...data} = parameters;\n return api\n .patch(\n `${apiRoute}/SetOrdreScrutins/${parameters.id}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n};\n\nconst fetchVentilationScrutin = (id: number, token: string) =>\n api\n .get>(\n `${apiRoute}/fetchVentilationScrutin/${id}`,\n Api.bearerAuth(token)\n )\n .then((response) => response.data);\n\nconst fetchApiInfo = () =>\n api\n .get<{ ASPNETCORE_ENVIRONMENT: string }>(`admin/ApiInfo`)\n .then((response) => response.data);\n\nconst dupliquerCampagne = async (parameters: {\n token: string;\n campagneId: number,\n titre: string,\n scrutins: number[]\n}) => {\n const {token, campagneId, ...data} = parameters;\n const response = await api.post(\n `${apiRoute}/dupliquer/${campagneId}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n );\n return response.data;\n\n}\n\nexport default {\n fetchAllCampagnes,\n fetchCampagneById,\n addCampagne,\n addScrutin,\n fetchCampagneByScrutinId,\n activateScrutin,\n reprendreScrutin,\n closeScrutin,\n diffuserResultats,\n genererBulletins,\n setTheme,\n setOrdreScrutins,\n updateScrutin,\n updateCampagne,\n updateQuestionsScrutin,\n addCandidatReponse,\n publishScrutin,\n forcerStatutScrutin,\n deleteCampagne,\n deleteBulletins,\n fetchScrutinById,\n switchToCourriel,\n switchToEnDirect,\n fetchAllSegments,\n fetchVentilationScrutin,\n fetchApiInfo,\n updateEspacePublique,\n dupliquerCampagne,\n deleteScrutin,\n fetchAllClients,\n};\n","import {createAsyncThunk} from '@reduxjs/toolkit';\nimport {ScrutinAdminQuestion} from 'models/adminModel';\nimport {TypeScrutin} from 'models/voteModel';\nimport {normalize} from 'normalizr';\nimport AdminApi from './api';\nimport {campagnesSchema, scrutinSchema} from './schemas';\n\nexport const fetchAllCampagnes = createAsyncThunk(\n `admin/campagne/fetchAllCampagnes`,\n async (token: string) => {\n const response = await AdminApi.fetchAllCampagnes(token);\n return normalize(response, [campagnesSchema]);\n }\n);\n\nexport const fetchAllClients = createAsyncThunk(\n `admin/campagne/fetchAllClients`,\n async (token: string) => AdminApi.fetchAllClients(token)\n);\n\nexport const fetchCampagneById = createAsyncThunk(\n `admin/campagne/fetchCampagneById`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.fetchCampagneById(\n parameters.id,\n parameters.token\n );\n return normalize(response, campagnesSchema);\n }\n);\n\nexport interface UpdateCampagneFormFields {\n titre: string;\n dateDebut: Date;\n dateFin: Date;\n ouvertureDuVote: Date;\n fermetureDuVote: Date;\n uniqueId: string;\n libelleAbstention?: string;\n titrePageAccueil?: string;\n clientId?: number;\n}\n\n\nexport const addCampagne = createAsyncThunk(\n `admin/campagne/addCampagne`,\n async (parameters: { token: string } & UpdateCampagneFormFields) => {\n const response = await AdminApi.addCampagne(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const updateCampagne = createAsyncThunk(\n `admin/campagne/updateCampagne`,\n async (\n parameters: {\n id: number;\n token: string;\n } & UpdateCampagneFormFields\n ) => {\n const response = await AdminApi.updateCampagne(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport interface UpdateEspacePubliqueParameters {\n permettreSectionPublique: boolean;\n accueilPublique?: string;\n}\n\nexport const updateEspacePublique = createAsyncThunk(\n `admin/campagne/updateEspacePublique`,\n async (\n parameters: {\n id: number;\n token: string;\n } & UpdateEspacePubliqueParameters\n ) => {\n const response = await AdminApi.updateEspacePublique(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const deleteCampagne = createAsyncThunk(\n `admin/campagne/deleteCampagne`,\n async (parameters: { id: number; token: string }) => {\n await AdminApi.deleteCampagne(parameters);\n return parameters.id;\n }\n);\n\nexport const deleteScrutin = createAsyncThunk(\n `admin/campagne/deleteScrutin`,\n async (parameters: { id: number; token: string }) => {\n await AdminApi.deleteScrutin(parameters);\n return parameters.id;\n }\n);\nexport const deleteBulletins = createAsyncThunk(\n `admin/campagne/deleteBulletins`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.deleteBulletins(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const addScrutin = createAsyncThunk(\n `admin/campagne/addScrutin`,\n async (parameters: {\n titre: string;\n idUnique: string;\n campagneId: number;\n question: string;\n typeScrutin: TypeScrutin;\n token: string;\n }) => {\n const response = await AdminApi.addScrutin(parameters);\n return normalize(response, scrutinSchema);\n }\n);\n\nexport const fetchScrutinById = createAsyncThunk(\n `admin/campagne/fetchScrutinById`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.fetchScrutinById(\n parameters.id,\n parameters.token\n );\n return normalize(response, scrutinSchema);\n }\n);\n\nexport const fetchCampagneByScrutinId = createAsyncThunk(\n `admin/campagne/fetchCampagneByScrutinId`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.fetchCampagneByScrutinId(\n parameters.id,\n parameters.token\n );\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const activateScrutin = createAsyncThunk(\n `admin/campagne/ActiverScrutin`,\n async (parameters: { id: number; token: string; nbConnections: number }) => {\n const response = await AdminApi.activateScrutin(\n parameters.id,\n parameters.nbConnections,\n parameters.token\n );\n return normalize(response, scrutinSchema);\n }\n);\n\nexport const reprendreScrutin = createAsyncThunk(\n `admin/campagne/ReprendreScrutin`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.reprendreScrutin(\n parameters.id,\n parameters.token\n );\n return normalize(response, scrutinSchema);\n }\n);\n\nexport const closeScrutin = createAsyncThunk(\n `admin/campagne/CloseScrutin`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.closeScrutin(\n parameters.id,\n parameters.token\n );\n return normalize(response, scrutinSchema);\n }\n);\n\nexport const publishScrutin = createAsyncThunk(\n `admin/campagne/PublishScrutin`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.publishScrutin(\n parameters.id,\n parameters.token\n );\n return normalize(response, scrutinSchema);\n }\n);\n\nexport const forcerStatutScrutin = createAsyncThunk(\n `admin/campagne/ForcerStatutScrutin`,\n async (parameters: { id: number; refId: number; token: string }) => {\n const response = await AdminApi.forcerStatutScrutin(\n parameters.id,\n parameters.refId,\n parameters.token\n );\n return normalize(response, scrutinSchema);\n }\n);\n\nexport const diffuserResultats = createAsyncThunk(\n `admin/campagne/diffuserResultats`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.diffuserResultats(\n parameters.id,\n parameters.token\n );\n return normalize(response, scrutinSchema);\n }\n);\n\nexport const genererBulletins = createAsyncThunk(\n `admin/campagne/diffuserResultats`,\n async (parameters: {\n campagneId: string;\n quantite: number;\n segments: string[];\n token: string;\n tokenSeulement?: boolean;\n }) => AdminApi.genererBulletins(parameters)\n);\n\nexport const fetchAllSegments = createAsyncThunk(\n `admin/campagne/fetchAllSegments`,\n async (parameters: { campagneId: number; token: string }) =>\n AdminApi.fetchAllSegments(parameters.campagneId, parameters.token)\n);\n\nexport const setTheme = createAsyncThunk(\n `admin/campagne/setTheme`,\n async (parameters: {\n id: number;\n themeId: number;\n urlLogo: string | null;\n token: string;\n }) => {\n const response = await AdminApi.setTheme(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const switchToCourriel = createAsyncThunk(\n `admin/campagne/switchToCourriel`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.switchToCourriel(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const switchToEnDirect = createAsyncThunk(\n `admin/campagne/switchToEnDirect`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.switchToEnDirect(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport interface UpdateScrutinFormFields {\n titre: string;\n avecCandidats: boolean;\n uniqueId: string;\n segmente: boolean;\n description?: string;\n explication?: string;\n abstentionPermise: boolean;\n messageAvantVote?: string;\n}\n\nexport const dupliquerCampagne = createAsyncThunk(\n `admin/campagne/dupliquerCampagne`,\n async (parameters: { token: string; campagneId: number, titre: string, scrutins: number[] }) =>\n AdminApi.dupliquerCampagne(parameters)\n);\n\nexport const updateScrutin = createAsyncThunk(\n `admin/campagne/updateScrutin`,\n async (\n parameters: {\n id: number;\n token: string;\n } & UpdateScrutinFormFields\n ) => {\n const response = await AdminApi.updateScrutin(parameters);\n return response;\n }\n);\n\nexport interface UpdateQuestionsScrutinFormFields {\n questions: ScrutinAdminQuestion[];\n}\n\nexport const updateQuestionsScrutin = createAsyncThunk(\n `admin/campagne/updateQuestionsScrutin`,\n async (\n parameters: {\n id: number;\n token: string;\n } & UpdateQuestionsScrutinFormFields\n ) => {\n const response = await AdminApi.updateQuestionsScrutin(parameters);\n return response;\n }\n);\n\nexport const addCandidatReponse = createAsyncThunk(\n `admin/campagne/addCandidatReponse`,\n async (parameters: {\n id: number;\n token: string;\n nom: string;\n prenom: string;\n }) => {\n const response = await AdminApi.addCandidatReponse(parameters);\n return response;\n }\n);\n\nexport const setOrdreScrutins = createAsyncThunk(\n `admin/campagne/setOrdreScrutins`,\n async (parameters: { id: number; scrutinsIds: number[]; token: string }) => {\n const response = await AdminApi.setOrdreScrutins(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const fetchVentilationScrutin = createAsyncThunk(\n `admin/campagne/fetchVentilationScrutin`,\n async (parameters: { id: number; token: string }) => {\n const response = await AdminApi.fetchVentilationScrutin(\n parameters.id,\n parameters.token\n );\n return response;\n }\n);\n\nexport const fetchApiInfo = createAsyncThunk(`admin/fetchApiInfo`, async () => {\n const response = await AdminApi.fetchApiInfo();\n return response;\n});\n","import { createMuiTheme, responsiveFontSizes } from '@material-ui/core';\nimport _ from 'lodash';\n// colors\n// const primary = '#e51836'; // colors.cyan[800]; // '#00838f';\n// const secondary = '#232323'; // colors.teal[400]; // '#26a69a';\nconst black = '#343a40';\nconst darkBlack = 'rgb(36, 40, 44)';\nconst background = '#f5f5f5';\nconst warningLight = 'rgba(253, 200, 69, .3)';\nconst warningMain = 'rgba(253, 200, 69, .5)';\nconst warningDark = 'rgba(253, 200, 69, .7)';\n\n// border\nconst borderWidth = 2;\nconst borderColor = 'rgba(0, 0, 0, 0.13)';\n\n// breakpoints\nconst xl = 1920;\nconst lg = 1280;\nconst md = 960;\nconst sm = 600;\nconst xs = 0;\n\n// spacing\nconst spacing = 8;\n\nconst theme = _.memoize((primary: string, secondary: string) =>\n responsiveFontSizes(\n createMuiTheme({\n palette: {\n primary: { main: primary },\n secondary: { main: secondary },\n common: {\n black,\n // darkBlack,\n },\n warning: {\n light: warningLight,\n main: warningMain,\n dark: warningDark,\n },\n // Used to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: 0.2,\n background: {\n default: background,\n },\n // spacing,\n },\n breakpoints: {\n // Define custom breakpoint values.\n // These will apply to Material-UI components that use responsive\n // breakpoints, such as `Grid` and `Hidden`. You can also use the\n // theme breakpoint functions `up`, `down`, and `between` to create\n // media queries for these breakpoints\n values: {\n xl,\n lg,\n md,\n sm,\n xs,\n },\n },\n overrides: {\n MuiExpansionPanel: {\n root: {\n position: 'static',\n },\n },\n MuiTableCell: {\n root: {\n paddingLeft: spacing * 2,\n paddingRight: spacing * 2,\n borderBottom: `${borderWidth}px solid ${borderColor}`,\n [`@media (max-width: ${sm}px)`]: {\n paddingLeft: spacing,\n paddingRight: spacing,\n },\n },\n },\n MuiDivider: {\n root: {\n backgroundColor: borderColor,\n height: borderWidth,\n },\n },\n\n MuiListItem: {\n divider: {\n borderBottom: `${borderWidth}px solid ${borderColor}`,\n },\n },\n MuiDialog: {\n paper: {\n width: '100%',\n maxWidth: 430,\n marginLeft: spacing,\n marginRight: spacing,\n },\n },\n MuiTooltip: {\n tooltip: {\n backgroundColor: darkBlack,\n },\n },\n MuiExpansionPanelDetails: {\n root: {\n [`@media (max-width: ${sm}px)`]: {\n paddingLeft: spacing,\n paddingRight: spacing,\n },\n },\n },\n },\n })\n )\n);\n\nexport default theme;\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { Campagne } from 'models/voteModel';\nimport { AppState } from 'store';\nimport { fetchCampagne } from './actions';\nimport { ScrutinSliceItem } from './model';\n\nconst sliceName = 'publique';\n\nexport interface PubliqueSlice {\n Campagne?: Campagne;\n}\n\nconst initialState: PubliqueSlice = {};\n\nexport const publiqueSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchCampagne.fulfilled, (state, action) => ({\n ...state,\n Campagne: action.payload.Campagne,\n }));\n },\n});\n\n// export const {} = publiqueSlice.actions;\n\nexport const publiqueSliceName = publiqueSlice.name;\n\nexport const selectCampagne = (state: AppState) => state.publique.Campagne;\nexport const selectAvecCandidats = (state: AppState) =>\n Boolean(\n state.publique.Campagne?.Scrutins.some((s) =>\n s.Questions.some((q) => q.Reponses.some((r) => Boolean(r.Candidat)))\n )\n );\n\nexport const selectCandidats: (state: AppState) => ScrutinSliceItem[] = (\n state\n) =>\n state.publique.Campagne?.Scrutins.map((s) => ({\n scrutinId: s.Id,\n titre: s.Titre,\n postes: s.Questions.filter((q) =>\n q.Reponses.some((r) => Boolean(r.Candidat))\n ).map((q) => ({\n id: q.Id,\n titre: q.Texte,\n candidats: q.Reponses.filter((r) => Boolean(r.Candidat)).map(\n (r) => r.Candidat\n ),\n })),\n })).filter((s) => s.postes.some((p) => p.candidats.length > 0)) || [];\n\nexport default publiqueSlice.reducer;\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice } from '@reduxjs/toolkit';\nimport _ from 'lodash';\nimport { EtatInscription } from 'models/enums';\nimport { Inscription } from 'models/voteModel';\nimport { AppState } from 'store';\nimport {\n addInscription,\n admettreInscription,\n deleteInscription,\n donnerDroitVote,\n donnerDroitVoteATous,\n editInscription,\n fetchAllInscriptions,\n importInscriptions,\n radierInscription,\n rejetterInscription,\n retirerDroitVote,\n retirerDroitVoteATous,\n synchroniserDroitVoteAvecPresences,\n updateCourriel,\n} from './actions';\n\nexport interface InscriptionSlice {\n Inscriptions: {\n [id: number]: Inscription;\n };\n allInscriptions: number[];\n}\n\nconst initialState: InscriptionSlice = {\n Inscriptions: {},\n allInscriptions: [],\n};\n\nexport const inscriptionSlice = createSlice({\n name: 'admin/inscription',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchAllInscriptions.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.allInscriptions = action.payload.result;\n return state;\n });\n builder.addCase(importInscriptions.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.allInscriptions = action.payload.result;\n return state;\n });\n builder.addCase(donnerDroitVoteATous.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.allInscriptions = action.payload.result;\n return state;\n });\n builder.addCase(retirerDroitVoteATous.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.allInscriptions = action.payload.result;\n return state;\n });\n builder.addCase(donnerDroitVote.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n return state;\n });\n builder.addCase(retirerDroitVote.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n return state;\n });\n builder.addCase(\n synchroniserDroitVoteAvecPresences.fulfilled,\n (state, action) => {\n _.merge(state, action.payload.entities);\n return state;\n }\n );\n builder.addCase(addInscription.fulfilled, (state, action) => {\n state.Inscriptions[action.payload.Id] = action.payload;\n state.allInscriptions.unshift(action.payload.Id);\n return state;\n });\n builder.addCase(admettreInscription.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n return state;\n });\n builder.addCase(editInscription.fulfilled, (state, action) => {\n state.Inscriptions[action.payload.Id] = action.payload;\n if (!state.allInscriptions.includes(action.payload.Id)) {\n state.allInscriptions.unshift(action.payload.Id);\n }\n return state;\n });\n builder.addCase(updateCourriel.fulfilled, (state, action) => {\n state.Inscriptions[action.payload.Id] = action.payload;\n if (!state.allInscriptions.includes(action.payload.Id)) {\n state.allInscriptions.unshift(action.payload.Id);\n }\n return state;\n });\n builder.addCase(radierInscription.fulfilled, (state, action) => {\n state.Inscriptions[action.payload.Id] = action.payload;\n if (!state.allInscriptions.includes(action.payload.Id)) {\n state.allInscriptions.unshift(action.payload.Id);\n }\n return state;\n });\n builder.addCase(rejetterInscription.fulfilled, (state, action) => {\n delete state.Inscriptions[action.payload];\n state.allInscriptions = state.allInscriptions.filter(\n (id) => id !== action.payload\n );\n return state;\n });\n builder.addCase(deleteInscription.fulfilled, (state, action) => {\n delete state.Inscriptions[action.payload];\n state.allInscriptions = state.allInscriptions.filter(\n (id) => id !== action.payload\n );\n return state;\n });\n },\n});\n\nexport const { actions } = inscriptionSlice;\n\nexport const selectInscriptions = (campagneId: number) => (state: AppState) => {\n // TODO: Generalize\n const ids = state.admin.inscription.allInscriptions;\n return ids\n .map((id) => state.admin.inscription.Inscriptions[id])\n .filter(\n (x) =>\n x?.CampagneId === campagneId &&\n (x?.EtatInscriptionRefId === EtatInscription.CONFIRMEE ||\n x?.EtatInscriptionRefId === EtatInscription.ANNULEE)\n );\n};\n\nexport const selectInscriptionsEnAttente = (campagneId: number) => (\n state: AppState\n) => {\n // TODO: Generalize\n const ids = state.admin.inscription.allInscriptions;\n return ids\n .map((id) => state.admin.inscription.Inscriptions[id])\n .filter(\n (x) =>\n x?.CampagneId === campagneId &&\n x?.EtatInscriptionRefId === EtatInscription.EN_ATTENTE\n );\n};\n\nexport const selectInscriptionById = (id: number) => (state: AppState) =>\n state.admin.inscription.Inscriptions[id];\n\nexport default inscriptionSlice.reducer;\n","import { CampagneListItem, ScrutinAdmin } from 'models/adminModel';\nimport { schema } from 'normalizr';\n\n// Définitions pour Normalizr\n\n// const campagneProcessStrategy: schema.StrategyFunction = (\n// value,\n// parent,\n// key\n// ) => {\n// switch (key) {\n// case 'Scrutins':\n// return { ...value, Scrutins: [parent.id] };\n// default:\n// return { ...value };\n// }\n// };\n\n// const campagneMergeStrategy: schema.MergeFunction = (entityA, entityB) => {\n// return {\n// ...entityA,\n// ...entityB,\n// Scrutins: [...(entityA.Scrutins || []), ...(entityB.Scrutins || [])],\n// };\n// };\n\nexport const scrutinSchema = new schema.Entity(\n 'Scrutins',\n {},\n {\n idAttribute: 'Id',\n }\n);\n\nexport const campagnesSchema = new schema.Entity(\n 'Campagnes',\n { Scrutins: [scrutinSchema] },\n\n {\n idAttribute: 'Id',\n // processStrategy: campagneProcessStrategy,\n // mergeStrategy: campagneMergeStrategy,\n }\n);\n\nexport type AdminCampagnesSliceEntities = {\n Campagnes: {\n [campagneId: number]: CampagneListItem;\n };\n Scrutins: {\n [scrutinId: number]: ScrutinAdmin;\n };\n};\n","/* eslint-disable import/prefer-default-export */\nimport { useEffect } from 'react';\nimport 'moment/locale/fr';\nimport Moment from 'react-moment';\nimport moment from 'moment';\nimport { useSelector } from 'react-redux';\nimport { selectTraduction } from 'features/traduction/slice';\nimport numeral from 'numeral'\n\n\n// // Sets the moment instance to use.\n// Moment.globalMoment = moment;\n\n// Set the locale for every react-moment instance to French.\n// Moment.globalLocale = 'fr';\n\n// Set the output format for every react-moment instance.\nMoment.globalFormat = 'D MMM YYYY';\n\n// TODO: Set quand toutes les dates vont être en UTC\n// // Set the output timezone for local for every instance.\n// Moment.globalLocal = true;\n\n// Use a tag for every react-moment instance.\nMoment.globalElement = 'span';\n\ninterface DatesProperties {\n date: Date | string;\n}\n\nconst DateHeure: React.FC = ({ date }) => (\n \n {date}\n \n);\n\nconst LocalisationSetter = () => {\n const traduction = useSelector(selectTraduction)\n\n useEffect(() => {\n moment.locale(traduction.codei18n);\n numeral.locale(traduction.codei18n);\n\n }, [traduction.codei18n])\n\n return null;\n}\n\nexport { DateHeure, LocalisationSetter };\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport _ from 'lodash';\nimport { Candidat } from 'models/voteModel';\nimport { editCandidat, fetchAllCandidats } from './actions';\n\nexport interface CandidatSlice {\n Candidats: {\n [id: number]: Candidat;\n };\n allCandidats: number[];\n}\n\nconst initialState: CandidatSlice = {\n Candidats: {},\n allCandidats: [],\n};\n\nexport const candidatsSlice = createSlice({\n name: 'admin/candidats',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchAllCandidats.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.allCandidats = action.payload.result;\n return state;\n });\n builder.addCase(editCandidat.fulfilled, (state, action) => {\n state.Candidats[action.payload.Id] = action.payload;\n if (!state.allCandidats.includes(action.payload.Id)) {\n state.allCandidats.unshift(action.payload.Id);\n }\n return state;\n });\n },\n});\n\nexport const { actions } = candidatsSlice;\n\nexport const selectCandidats = (campagneId: number) => (state: AppState) => {\n // TODO: Generalize\n const ids = state.admin.candidats.allCandidats;\n return ids\n .map((id) => state.admin.candidats.Candidats[id])\n .filter((x) => x?.CampagneIds.includes(campagneId));\n};\n\nexport const selectInscriptionById = (id: number) => (state: AppState) =>\n state.admin.inscription.Inscriptions[id];\n\nexport default candidatsSlice.reducer;\n","import api from 'backend/Api';\nimport qs from 'qs';\nimport { Bulletin } from 'models/voteModel';\nimport { ChoixReponse } from './slice';\n\nconst apiRoute = `Vote`;\n\nconst sendVotes = async (\n token: string,\n scrutinUniqueId: string,\n votes: ChoixReponse[]\n) => {\n const data = {\n token,\n scrutinUniqueId,\n votes,\n };\n\n const response = await api.post(apiRoute, qs.stringify(data));\n return response.data;\n};\n\nexport default {\n sendVotes,\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport voteApi from './api';\nimport { ChoixReponse } from './slice';\n\nexport const sendVotes = createAsyncThunk(\n `vote/sendVotes`,\n async (parameters: {\n token: string;\n scrutinUniqueId: string;\n votes: ChoixReponse;\n }) => {\n const choix = Object.keys(parameters.votes).map((k) => {\n const questionId = Number.parseInt(k, 10);\n return {\n questionId,\n reponsesId: parameters.votes[questionId].filter((id) => id > 0), // élimine les abstentions\n };\n });\n\n const response = await voteApi.sendVotes(\n parameters.token,\n parameters.scrutinUniqueId,\n choix\n );\n return response;\n }\n);\n","import { AxiosRequestConfig } from 'axios';\nimport { PathLike } from 'fs';\nimport qs from 'qs';\n\nconst baseApiConfig: AxiosRequestConfig = {\n withCredentials: false,\n timeout: 120000,\n baseURL: process.env.REACT_APP_VOTEZ_API_URL,\n headers: {\n common: {\n 'Cache-Control': 'no-cache, no-store, must-revalidate',\n Pragma: 'no-cache',\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n },\n paramsSerializer: (parameters: PathLike) =>\n qs.stringify(parameters, { indices: false }),\n};\n\nconst apiConfig: AxiosRequestConfig = { ...baseApiConfig };\nexport default apiConfig;\n","import axios, {\n AxiosError,\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n} from 'axios';\nimport apiConfig from './apiconfig';\n\nexport class Api {\n private api: AxiosInstance;\n\n public static bearerAuth = (token: string): AxiosRequestConfig => ({\n headers: { Authorization: `Bearer ${token}` },\n });\n\n public constructor(config: AxiosRequestConfig = apiConfig) {\n this.api = axios.create(config);\n\n // this middleware is been called right before the http request is made.\n this.api.interceptors.request.use((request: AxiosRequestConfig) => ({\n ...request,\n }));\n\n // this middleware is been called right before the response is get it by the\n // method that triggers the request\n this.api.interceptors.response.use(\n (response: AxiosResponse) => response,\n (error: AxiosError) => {\n switch (error.response?.status) {\n case 400:\n case 401:\n return Promise.reject(\n new Error(error.response?.data.title || error.response?.data || error.response?.statusText)\n );\n default:\n return Promise.reject(\n new Error(\n error.response?.data.detail ||\n error.response?.data.title ||\n error.response?.data ||\n error.response ||\n error.message\n )\n );\n }\n }\n );\n }\n\n public getUri = (config?: AxiosRequestConfig): string =>\n this.api.getUri(config);\n\n public request = >(\n config: AxiosRequestConfig\n ): Promise => this.api.request(config);\n\n public get = >(\n url: string,\n config?: AxiosRequestConfig\n ): Promise => this.api.get(url, config);\n\n public delete = >(\n url: string,\n config?: AxiosRequestConfig\n ): Promise => this.api.delete(url, config);\n\n public head = >(\n url: string,\n config?: AxiosRequestConfig\n ): Promise => this.api.head(url, config);\n\n public post = >(\n url: string,\n data?: string | FormData,\n config?: AxiosRequestConfig\n ): Promise => this.api.post(url, data, config);\n\n public put = >(\n url: string,\n data?: string,\n config?: AxiosRequestConfig\n ): Promise => this.api.put(url, data, config);\n\n public patch = >(\n url: string,\n data?: string,\n config?: AxiosRequestConfig\n ): Promise => this.api.patch(url, data, config);\n}\n\nexport default new Api();\n","import api, {Api} from 'backend/Api';\nimport {CampagneListItem} from 'models/adminModel';\nimport {Inscription} from 'models/voteModel';\nimport qs from 'qs';\n\nconst apiRoute = `inscription`;\n\nconst fetchAllInscriptions = async (parameters: {\n token: string;\n campagneId: number;\n}) => {\n const response = await api.get(\n `${apiRoute}/GetAll/${parameters.campagneId}`,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst donnerDroitVote = async (parameters: { token: string; id: number }) => {\n const response = await api.post(\n `${apiRoute}/DonnerDroitVote/${parameters.id}`,\n undefined,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst retirerDroitVote = async (parameters: { token: string; id: number }) => {\n const response = await api.post(\n `${apiRoute}/RetirerDroitVote/${parameters.id}`,\n undefined,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst donnerDroitVoteATous = async (parameters: {\n token: string;\n campagneId: number;\n}) => {\n const response = await api.post(\n `${apiRoute}/DonnerDroitVoteATous/${parameters.campagneId}`,\n undefined,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst retirerDroitVoteATous = async (parameters: {\n token: string;\n campagneId: number;\n}) => {\n const response = await api.post(\n `${apiRoute}/RetirerDroitVoteATous/${parameters.campagneId}`,\n undefined,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst synchroniserDroitVoteAvecPresences = async (parameters: {\n token: string;\n campagneId: number;\n}) => {\n const response = await api.post(\n `${apiRoute}/SynchroniserDroitVoteAvecPresences/${parameters.campagneId}`,\n undefined,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst importInscriptions = async (parameters: {\n token: string;\n file: File;\n campagneId: number;\n}) => {\n const {token, file, campagneId} = parameters;\n\n // const config = {\n // headers: {\n // ...Api.bearerAuth(token).headers,\n // 'Content-Type': 'multipart/form-data',\n // },\n // };\n\n const formData = new FormData();\n formData.append('files', file, file.name);\n\n const response = await api.post(\n `${apiRoute}/ImportFile/${campagneId}`,\n formData,\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nconst genererBulletinsPourInscriptions = async (parameters: {\n token: string;\n campagneId: number;\n ids: number[];\n}) => {\n const {token, campagneId, ...data} = parameters;\n const response = await api.post(\n `${apiRoute}/GenererBulletins/${campagneId}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nconst genererBulletinPourUneInscription = async (parameters: {\n token: string;\n inscriptionId: number;\n}) => {\n const response = await api.get(\n `${apiRoute}/GenererUnBulletin/${parameters.inscriptionId}`,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst demarrerPrisePresences = async (parameters: {\n token: string;\n campagneId: number;\n reponseChallenge: number;\n}) => {\n const {token, campagneId, ...data} = parameters;\n const response = await api.post(\n `${apiRoute}/demarrerPrisePresences/${campagneId}`,\n qs.stringify(data),\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nconst arreterPrisePresences = async (parameters: {\n token: string;\n campagneId: number;\n}) => {\n const {token, campagneId} = parameters;\n const response = await api.post(\n `${apiRoute}/arreterPrisePresences/${campagneId}`,\n undefined,\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nconst admettreInscription = async (parameters: {\n token: string;\n id: number;\n origin: string;\n}) => {\n const {token, id, origin} = parameters;\n const response = await api.post(\n `${apiRoute}/admettre/${id}`,\n qs.stringify({origin}),\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nconst rejetterInscription = async (parameters: {\n token: string;\n id: number;\n reponse?: string;\n}) => {\n const {token, id, reponse} = parameters;\n const response = await api.post(\n `${apiRoute}/rejetter/${id}`,\n qs.stringify({reponse}),\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nexport interface AddInscriptionParameters {\n token: string;\n courriel: string;\n courrielAlternatif?: string;\n nom: string;\n prenom: string;\n message?: string;\n campagneId: number;\n poids: number;\n segments: string[];\n}\n\nconst addInscription = async (parameters: AddInscriptionParameters) => {\n const {token, campagneId, ...rest} = parameters;\n const data = qs.stringify(rest);\n const response = await api.post(\n `${apiRoute}/${campagneId}`,\n data,\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nexport interface EditInscriptionParameters {\n CourrielAlternatif?: string;\n Nom: string;\n Prenom: string;\n Message?: string;\n Poids: number;\n segments: string[];\n}\n\nconst editInscription = async (parameters: {\n token: string;\n inscription: EditInscriptionParameters;\n}) => {\n const response = await api.put(\n `${apiRoute}`,\n qs.stringify(parameters.inscription),\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst updateCourriel = async (parameters: {\n token: string;\n inscriptionId: number;\n courriel: string;\n}) => {\n const {token, inscriptionId, courriel} = parameters;\n const response = await api.patch(\n `${apiRoute}/updateCourriel/${inscriptionId}`,\n qs.stringify({courriel}),\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\n\n\nconst radierInscription = async (parameters: {\n token: string;\n inscriptionId: number;\n}) => {\n const {token, inscriptionId} = parameters;\n const response = await api.post(\n `${apiRoute}/radier/${inscriptionId}`,\n undefined,\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nconst deleteInscription = async (parameters: {\n token: string;\n inscriptionId: number;\n}) => {\n const {token, inscriptionId} = parameters;\n await api.delete(`${apiRoute}/${inscriptionId}`, Api.bearerAuth(token));\n return inscriptionId;\n};\n\nexport default {\n fetchAllInscriptions,\n donnerDroitVote,\n retirerDroitVote,\n donnerDroitVoteATous,\n retirerDroitVoteATous,\n importInscriptions,\n genererBulletinsPourInscriptions,\n genererBulletinPourUneInscription,\n demarrerPrisePresences,\n arreterPrisePresences,\n synchroniserDroitVoteAvecPresences,\n admettreInscription,\n rejetterInscription,\n addInscription,\n editInscription,\n updateCourriel,\n radierInscription,\n deleteInscription,\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { Inscription } from 'models/voteModel';\nimport { normalize, schema } from 'normalizr';\nimport { campagnesSchema } from '../adminCampagnes/schemas';\nimport api, {\n AddInscriptionParameters,\n EditInscriptionParameters,\n} from './api';\n\n// TODO: Generalize\nconst inscriptionSchema = new schema.Entity(\n 'Inscriptions',\n {},\n {\n idAttribute: 'Id',\n }\n);\n\nexport const fetchAllInscriptions = createAsyncThunk(\n `admin/inscription/fetchAllInscriptions`,\n async (parameters: { token: string; campagneId: number }) => {\n const response = await api.fetchAllInscriptions(parameters);\n return normalize(response, [inscriptionSchema]);\n }\n);\n\nexport const donnerDroitVote = createAsyncThunk(\n `admin/inscription/donnerDroitVote`,\n async (parameters: { token: string; id: number }) => {\n const response = await api.donnerDroitVote(parameters);\n return normalize(response, inscriptionSchema);\n }\n);\n\nexport const retirerDroitVote = createAsyncThunk(\n `admin/inscription/retirerDroitVote`,\n async (parameters: { token: string; id: number }) => {\n const response = await api.retirerDroitVote(parameters);\n return normalize(response, inscriptionSchema);\n }\n);\n\nexport const donnerDroitVoteATous = createAsyncThunk(\n `admin/inscription/donnerDroitVoteATous`,\n async (parameters: { token: string; campagneId: number }) => {\n const response = await api.donnerDroitVoteATous(parameters);\n return normalize(response, [inscriptionSchema]);\n }\n);\n\nexport const retirerDroitVoteATous = createAsyncThunk(\n `admin/inscription/retirerDroitVoteATous`,\n async (parameters: { token: string; campagneId: number }) => {\n const response = await api.retirerDroitVoteATous(parameters);\n return normalize(response, [inscriptionSchema]);\n }\n);\n\nexport const synchroniserDroitVoteAvecPresences = createAsyncThunk(\n `admin/inscription/synchroniserDroitVoteAvecPresences`,\n async (parameters: { token: string; campagneId: number }) => {\n const response = await api.synchroniserDroitVoteAvecPresences(parameters);\n return normalize(response, [inscriptionSchema]);\n }\n);\n\nexport const importInscriptions = createAsyncThunk(\n `admin/inscription/importInscriptions`,\n async (parameters: { token: string; file: File; campagneId: number }) => {\n const response = await api.importInscriptions(parameters);\n return normalize(response, [inscriptionSchema]);\n }\n);\n\nexport const genererBulletinsPourInscriptions = createAsyncThunk(\n `admin/inscription/genererBulletins`,\n async (parameters: { campagneId: number; token: string; ids: number[] }) =>\n api.genererBulletinsPourInscriptions(parameters)\n);\n\nexport const genererBulletinPourUneInscription = createAsyncThunk(\n `admin/inscription/genererUnBulletin`,\n async (parameters: { inscriptionId: number; token: string }) =>\n api.genererBulletinPourUneInscription(parameters)\n);\n\nexport const demarrerPrisePresences = createAsyncThunk(\n `admin/inscription/demarrerPrisePresences`,\n async (parameters: {\n campagneId: number;\n reponseChallenge: number;\n token: string;\n }) => {\n const response = await api.demarrerPrisePresences(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const arreterPrisePresences = createAsyncThunk(\n `admin/inscription/arreterPrisePresences`,\n async (parameters: { campagneId: number; token: string }) => {\n const response = await api.arreterPrisePresences(parameters);\n return normalize(response, campagnesSchema);\n }\n);\n\nexport const admettreInscription = createAsyncThunk(\n `admin/inscription/admettre`,\n async (parameters: { token: string; id: number; origin: string }) => {\n const response = await api.admettreInscription(parameters);\n return normalize(response, inscriptionSchema);\n }\n);\n\nexport const rejetterInscription = createAsyncThunk(\n `admin/inscription/rejetter`,\n async (parameters: { token: string; id: number; reponse?: string }) => {\n await api.rejetterInscription(parameters);\n return parameters.id;\n }\n);\n\nexport const addInscription = createAsyncThunk(\n `soutien/Inscription`,\n async (parameters: AddInscriptionParameters) => {\n const response = await api.addInscription(parameters);\n return response;\n }\n);\n\nexport const editInscription = createAsyncThunk(\n `admin/inscriptions/editInscription`,\n async (parameters: {\n token: string;\n inscription: EditInscriptionParameters;\n }) => api.editInscription(parameters)\n);\n\nexport const updateCourriel = createAsyncThunk(\n `admin/inscriptions/updateCourriel`,\n async (parameters: {\n token: string;\n inscriptionId: number;\n courriel: string;\n }) => api.updateCourriel(parameters)\n);\n\n\nexport const radierInscription = createAsyncThunk(\n `admin/inscriptions/radier`,\n async (parameters: { token: string; inscriptionId: number }) =>\n api.radierInscription(parameters)\n);\n\nexport const deleteInscription = createAsyncThunk(\n `admin/inscriptions/delete`,\n async (parameters: { token: string; inscriptionId: number }) =>\n api.deleteInscription(parameters)\n);\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport _ from 'lodash';\nimport { fetchThemeById, fetchAllThemes } from './actions';\nimport { ThemeSliceEntities } from './schemas';\n\nexport interface ThemesSlice extends Readonly {\n fetchAllThemes: number[];\n}\n\nconst initialState: ThemesSlice = {\n Themes: [],\n fetchAllThemes: [],\n};\n\nexport const themesSclice = createSlice({\n name: 'themes',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchAllThemes.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.fetchAllThemes = action.payload.result;\n return state;\n });\n builder.addCase(fetchThemeById.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n return state;\n });\n },\n});\n\nexport const selectThemes = (state: AppState) => {\n const ids = state.themes.fetchAllThemes;\n return ids.map((id) => state.themes.Themes[id]);\n};\n\nexport const selectTheme = (id: number) => (state: AppState) =>\n state.themes.Themes[id];\n\nexport default themesSclice.reducer;\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport _ from 'lodash';\nimport { EmailTemplate } from 'models/adminModel';\nimport { fetchAllTemplates } from './actions';\n\nexport interface EmailSlice {\n Templates: {\n [id: number]: EmailTemplate;\n };\n allTemplates: number[];\n}\n\nconst initialState: EmailSlice = {\n Templates: {},\n allTemplates: [],\n};\n\nexport const EmailSlice = createSlice({\n name: 'admin/Email',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchAllTemplates.fulfilled, (state, action) => {\n _.merge(state, action.payload.entities);\n state.allTemplates = action.payload.result;\n return state;\n });\n },\n});\n\nexport const {actions} = EmailSlice;\n\nexport const selectTemplates = () => (state: AppState) => state.admin.email.Templates;\n\nexport const selectTemplateById = (id: number) => (state: AppState) =>\n state.admin.email.Templates[id];\n\nexport default EmailSlice.reducer;\n","import api from 'backend/Api';\nimport { Campagne } from 'models/voteModel';\n\nconst apiRoute = `publique`;\n\nconst fetchCampagne = async (campagneUniqueId: string) => {\n const response = await api.get<{ Campagne: Campagne }>(\n `${apiRoute}/${campagneUniqueId}`\n );\n return response.data;\n};\n\nexport default {\n fetchCampagne,\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport PubliqueApi from './api';\n\nexport const fetchCampagne = createAsyncThunk(\n `publique/fetchCampagne`,\n async (parameters: { campagneUniqueId: string }) => {\n const response = await PubliqueApi.fetchCampagne(\n parameters.campagneUniqueId\n );\n return response;\n }\n);\n","import api, { Api } from 'backend/Api';\nimport { EmailTemplate } from 'models/adminModel';\nimport qs from 'qs';\n\nconst apiRoute = `email`;\n\nconst fetchAllTemplates = async (parameters: {\n token: string;\n campagneId: number;\n}) => {\n const response = await api.get(\n `${apiRoute}/Templates/${parameters.campagneId}`,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nconst sendEmail = async (parameters: {\n token: string;\n inscriptionId: number;\n sujet: string;\n message: string;\n destination: 'Principale' | 'Alternative';\n lienVote: string;\n}) => {\n const { token, destination, ...data } = parameters;\n const courrielAlternatif = destination === 'Alternative';\n const response = await api.post(\n `${apiRoute}/Send`,\n qs.stringify({ ...data, courrielAlternatif }),\n Api.bearerAuth(token)\n );\n return response.data;\n};\n\nexport default {\n fetchAllTemplates,\n sendEmail,\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { EmailTemplate } from 'models/adminModel';\nimport { normalize, schema } from 'normalizr';\nimport api from './api';\n\n// TODO: Generalize\nconst emailTemplateSchema = new schema.Entity(\n 'Templates',\n {},\n {\n idAttribute: 'Id',\n }\n);\n\nexport const fetchAllTemplates = createAsyncThunk(\n `admin/email/fetchAllTemplates`,\n async (parameters: { token: string; campagneId: number }) => {\n const response = await api.fetchAllTemplates(parameters);\n return normalize(response, [emailTemplateSchema]);\n }\n);\n\nexport const sendEmail = createAsyncThunk(\n `admin/email/sendEmail`,\n async (parameters: {\n token: string;\n inscriptionId: number;\n destination: 'Principale' | 'Alternative';\n sujet: string;\n message: string;\n lienVote: string;\n }) => {\n await api.sendEmail(parameters);\n }\n);\n","import { Button } from '@material-ui/core'\nimport { Alert } from '@material-ui/lab'\nimport { FunctionComponent } from 'react'\nimport { ErrorBoundary as ReactErrorBoundary, FallbackProps } from 'react-error-boundary'\n\n\nconst GlobalErrorFallback: FunctionComponent = ({ resetErrorBoundary }) => (\n
\n\n \n Ré-essayer\n \n }\n >\n Désolé, une erreur est survenu.\n \n
\n)\n\n\nconst ErrorBoundary: FunctionComponent = ({ children }) => (\n \n {children}\n \n)\n\nexport default ErrorBoundary;","import { makeStyles, Paper, Typography } from '@material-ui/core'\nimport { FunctionComponent, Suspense } from 'react'\n\n\nconst useStyles = makeStyles((theme) => ({\n loadingPaper: {\n margin: 'auto',\n marginTop: theme.spacing(4),\n padding: theme.spacing(2),\n width: '80vw',\n height: '40vh',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n\n }\n}));\n\nconst LoadingMessage = () => {\n const classes = useStyles();\n\n return (\n \n Votez.com\n Un instant svp...\n \n )\n}\n\nconst SuspenseMessage: FunctionComponent = ({ children }) => (\n }>\n {children}\n \n)\n\nexport default SuspenseMessage\n","import { withStyles, Theme, createStyles } from '@material-ui/core';\nimport 'ag-grid-community/dist/styles/ag-grid.css';\nimport 'ag-grid-community/dist/styles/ag-theme-alpine.css';\n\nconst styles = (theme: Theme) =>\n createStyles({\n '@global': {\n /**\n * Disable the focus outline, which is default on some browsers like\n * chrome when focusing elements\n */\n '*:focus': {\n outline: 0,\n },\n '.text-white': {\n color: theme.palette.common.white,\n },\n },\n });\n\nfunction globalStyles() {\n return null;\n}\n\nexport default withStyles(styles, { withTheme: true })(globalStyles);\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import DateFnsUtils from '@date-io/moment';\nimport {colors, CssBaseline, ThemeProvider} from '@material-ui/core';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport ErrorBoundary from 'components/ErrorBoundary';\nimport SuspenseMessage from 'components/SuspenseMessage';\nimport {LocalisationSetter} from 'dates';\nimport GlobalStyles from 'GlobalStyles';\nimport {createBrowserHistory} from 'history';\nimport {SnackbarProvider} from 'notistack';\nimport {lazy} from 'react';\nimport ReactDOM from 'react-dom';\nimport HttpsRedirect from 'react-https-redirect';\nimport {Provider} from 'react-redux';\nimport {Route, Router, Switch} from 'react-router-dom';\nimport theme from 'theme';\nimport './config.json';\nimport './i18n';\nimport './index.scss';\nimport reportWebVitals from './reportWebVitals';\nimport {store} from './store';\n\nconst Admin = lazy(() => import('./moduleAdmin/AdminModule'));\nconst Home = lazy(() => import('features/home/pages/Home'));\nconst Soutien = lazy(() => import('features/soutien/pages/Index'));\nconst Login = lazy(() => import('features/home/pages/Login'));\n\n\n// eslint-disable-next-line import/prefer-default-export\nexport const history = createBrowserHistory();\n\n// default colors\nconst primary = colors.cyan[800];\nconst secondary = colors.teal[400];\n\n\n\nReactDOM.render(\n // \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n ,\n // ,\n document.querySelector('#root') || document.createElement('div') // for testing purposes\n\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n// eslint-disable-next-line no-console\nreportWebVitals();","/* Semble avoir un bug avec typescript */\n/* eslint-disable no-shadow */\nexport enum ScrutinErrorCodes {\n TOKEN_INVALIDE = 1,\n SCRUTIN_EARLY = 2,\n SCRUTIN_LATE = 3,\n}\n\nexport enum EtatScrutin {\n PREPARATION = 1,\n ACTIF = 2,\n TERMINE = 3,\n ENATTENTEDEVOTE = 4,\n ADPOTEE = 5,\n REJETTEE = 6,\n NONTRAITE = 7,\n}\n\nexport enum EtatPresence {\n INCONNU = 1,\n PRESENT = 2,\n ABSENT = 3,\n}\n\nexport enum EtatInscription {\n CONFIRMEE = 1,\n EN_ATTENTE = 2,\n ANNULEE = 3,\n}\n","import Api from 'backend/Api';\nimport { User } from 'models/systemModel';\nimport qs from 'qs';\n\nconst login = (courriel: string, password: string) => Api.post(\n 'security/login',\n qs.stringify({ courriel, password })\n ).then((response) => response.data);\n\nexport default { login };\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport { AppState } from 'store';\nimport { User } from 'models/systemModel';\nimport AccountApi from './api';\n\nconst sliceName = 'admin/account';\nexport interface AccountSlice {\n user?: User;\n}\n\nconst initialState: AccountSlice = {};\n\ninterface loginParameters {\n courriel: string;\n password: string;\n}\nexport const login = createAsyncThunk(\n `${sliceName}/login`,\n async (parameters: loginParameters) => AccountApi.login(parameters.courriel, parameters.password)\n);\n\nexport const accountSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n logoff: (state) => {\n state.user = undefined;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(login.fulfilled, (state, action) => {\n state.user = action.payload;\n });\n },\n});\n\nexport const { logoff } = accountSlice.actions;\nexport const accountSliceName = accountSlice.name;\n\nexport const selectUser = (state: AppState) => state.admin.account.user;\n\nexport default accountSlice.reducer;\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { fetchCampagne } from 'features/home/actions';\nimport { Bulletin, Scrutin } from 'models/voteModel';\nimport { AppState } from 'store';\nimport { sendVotes } from './actions';\n\nconst sliceName = 'vote';\n\nexport type ChoixReponse = { [questionId: number]: number[] };\n\nexport interface VoteSlice {\n choix: ChoixReponse;\n dirty: boolean;\n scrutin?: Scrutin;\n bulletin: Bulletin;\n}\n\nconst initialBulletin: Bulletin = { BulletinScrutins: [] };\n\nconst initialState: VoteSlice = {\n choix: {},\n dirty: false,\n bulletin: initialBulletin,\n};\n\nexport const voteSlice = createSlice({\n name: sliceName,\n initialState,\n reducers: {\n initierVote: (\n state,\n action: PayloadAction<{\n scrutin: Scrutin;\n bulletin?: Bulletin;\n }>\n ) => ({\n ...state,\n dirty: false,\n choix: {},\n scrutin: action.payload.scrutin,\n bulletin: action.payload.bulletin || initialBulletin,\n }),\n modifierChoixReponse: (\n state,\n action: PayloadAction<{\n questionId: number;\n reponsesIds: number[];\n }>\n ) => {\n state.dirty = true;\n state.choix[action.payload.questionId] = action.payload.reponsesIds;\n return state;\n },\n terminerVote: (state) => ({\n ...state,\n dirty: false,\n choix: [],\n scrutin: undefined,\n }),\n reprendreScrutin: (\n state,\n action: PayloadAction<{ scrutinUniqueId: string }>\n ) => {\n state.bulletin.BulletinScrutins = state.bulletin.BulletinScrutins.filter(\n (bs) => bs.ScrutinUniqueId !== action.payload.scrutinUniqueId\n );\n return state;\n },\n enleverMessageAvantVote: (state) => {\n if (state.scrutin) {\n state.scrutin.MessageAvantVote = undefined;\n }\n return state;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchCampagne.fulfilled, (state, action) => {\n if (action.payload.ScrutinActif) {\n state.scrutin = action.payload.ScrutinActif;\n }\n state.bulletin = action.payload.Bulletin || initialBulletin;\n state.choix = {};\n state.dirty = false;\n return state;\n });\n builder.addCase(sendVotes.fulfilled, (state, action) => {\n state.dirty = false;\n state.bulletin = action.payload;\n return state;\n });\n },\n});\n\nexport const {\n modifierChoixReponse,\n initierVote,\n terminerVote,\n reprendreScrutin,\n enleverMessageAvantVote,\n} = voteSlice.actions;\nexport const voteSliceName = voteSlice.name;\n\nexport const selectScrutin = (state: AppState) => state.vote.scrutin;\n\nexport const selectBulletin = (state: AppState) => state.vote.bulletin;\n\nexport const selectDejaVote = (state: AppState) =>\n state.vote.bulletin.BulletinScrutins.map((bs) => bs.ScrutinUniqueId).includes(\n state.vote.scrutin?.UniqueId || ''\n );\n\nexport const selectAnyVote = (state: AppState) =>\n state.vote.bulletin.BulletinScrutins.length > 0;\n\nexport const selectChoix = (state: AppState) => state.vote.choix;\n\nexport const selectChoixPourQuestion = (questionId: number) => (\n state: AppState\n) => state.vote.choix[questionId];\n\nexport default voteSlice.reducer;\n","import api from 'backend/Api';\nimport { Bulletin, Campagne, Scrutin } from 'models/voteModel';\nimport qs from 'qs';\n\nconst loginWithCode = async (codeAccess: string) => {\n const data = qs.stringify({ codeAccess });\n const response = await api.post<{ token: string, campagne:string }>(\n `scrutin/loginWithCode`,\n data\n );\n return response.data;\n};\n\nexport interface FetchCampagneResult {\n Campagne: Campagne;\n Bulletin?: Bulletin;\n ScrutinActif?: Scrutin;\n}\n\nconst fetchCampagne = async (token: string) => {\n const response = await api.get(\n `Campagne/?token=${token}`\n );\n return response.data;\n};\n\nexport default {\n loginWithCode,\n fetchCampagne,\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport HomeApi from './api';\n\nexport const loginWithCode = createAsyncThunk(\n `home/loginWithCode`,\n async (parameters: { codeAccess: string }) => {\n const response = await HomeApi.loginWithCode(parameters.codeAccess);\n return response;\n }\n);\n\nexport const fetchCampagne = createAsyncThunk(\n `home/fetchCampagne`,\n async (parameters: { token: string }) => {\n const response = await HomeApi.fetchCampagne(parameters.token);\n return response;\n }\n);\n","import { AxiosError } from 'axios';\nimport Api from 'backend/Api';\nimport { TraductionValeur } from 'models/voteModel';\n\nconst getTraduction = (\n locale: string,\n token: string,\n success: (response: TraductionValeur[]) => void,\n failed: (error: AxiosError) => void\n): void => {\n Api.get(`traduction/${locale}/?token=${token}`)\n .then(({ data }) => success(data))\n .catch((error: AxiosError) => failed(error));\n};\n\nexport default { getTraduction };\n","// On réassigne state mais c'est prévu par redux-toolkit\n/* eslint no-param-reassign: [\"error\", { \"props\": true, \"ignorePropertyModificationsFor\": [\"state\"] }] */\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { AppThunk, AppState } from 'store';\nimport { defaultLocale } from 'i18n';\nimport { TraductionValeur } from 'models/voteModel';\nimport TraductionApi from './api';\n\n// Traduction[Entity][OwnerId][Propriete]\n\nexport interface TraductionEntityIndexer {\n [entity: string]: TraductionOwnerIndexer;\n}\n\nexport interface TraductionOwnerIndexer {\n [ownerId: number]: TraductionProprieteIndexer;\n}\n\nexport interface TraductionProprieteIndexer {\n [propriete: string]: string;\n}\n\nexport interface TraductionSlice {\n codei18n: string;\n traductions: TraductionEntityIndexer; // Les traduction sont transformé en\n // un dictionnaire pour simplifier\n // les recherches\n}\n\nconst initialState: TraductionSlice = {\n codei18n: defaultLocale,\n traductions: {},\n};\n\nexport const traductionSlice = createSlice({\n name: 'traduction',\n initialState,\n reducers: {\n loadTraduction: (state, action: PayloadAction) => {\n state.codei18n = defaultLocale;\n state.traductions = {};\n\n if (action.payload.length > 0) {\n state.codei18n = action.payload[0].Locale.Code_i18n;\n\n // Convertie les traductions en un dictionnaire\n // [Entity][OwnerId][Propriete]\n state.traductions = action.payload.reduce(\n (accumulator, item) => {\n const step = { ...accumulator };\n step[item.Entite.Nom] = step[item.Entite.Nom] || {};\n step[item.Entite.Nom][item.OwnerId] =\n step[item.Entite.Nom][item.OwnerId] || {};\n step[item.Entite.Nom][item.OwnerId][item.Propriete.Nom] =\n item.Texte;\n return step;\n },\n {}\n );\n }\n },\n },\n});\n\nexport const { loadTraduction } = traductionSlice.actions;\n\nexport const selectTraduction = (state: AppState) => ({\n codei18n: state.traduction.codei18n,\n traductions: state.traduction.traductions,\n});\n\nexport const loadTraductionsAsync = (\n locale: string,\n token: string\n): AppThunk => (dispatch) => {\n TraductionApi.getTraduction(\n locale,\n token,\n (traductions: TraductionValeur[]) => {\n dispatch(loadTraduction(traductions));\n },\n // eslint-disable-next-line no-console\n () => console.error(`Unable to load translation for locale ${locale}`)\n );\n};\n\nexport default traductionSlice.reducer;\n","import admin from './admin.json';\nimport campagne from './campagne.json';\nimport common from './common.json';\nimport errors from './errors.json';\nimport validation from './validation.json';\n\nexport default {\n common,\n campagne,\n errors,\n admin,\n validation,\n};\n","import admin from './admin.json';\nimport campagne from './campagne.json';\nimport common from './common.json';\nimport errors from './errors.json';\nimport validation from './validation.json';\n\nexport default {\n common,\n campagne,\n errors,\n admin,\n validation,\n};\n","/* eslint-disable unicorn/prevent-abbreviations */\nimport 'numeral/locales/fr';\n\nimport i18n from 'i18next';\nimport detector from 'i18next-browser-languagedetector';\nimport moment from 'moment';\nimport numeral from 'numeral';\nimport { initReactI18next } from 'react-i18next';\nimport 'moment/locale/fr';\n\nimport langueEn from './locales/en';\nimport langueFr from './locales/fr';\n\nexport const defaultLocale = 'fr';\nmoment.locale(defaultLocale);\nnumeral.locale(defaultLocale);\n\nconst resources = {\n en: langueEn,\n fr: langueFr,\n};\n\ni18n\n .use(detector)\n .use(initReactI18next) // passes i18n down to react-i18next\n\n .init({\n resources,\n lng: defaultLocale,\n fallbackLng: defaultLocale,\n\n keySeparator: false,\n\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n });\n\ni18n.on('languageChanged', (lng) => {\n moment.locale(lng);\n numeral.locale(lng);\n});\n\nexport default i18n;\n","import api from 'backend/Api';\nimport { CampagnePourInscription, Inscription } from 'models/voteModel';\nimport qs from 'qs';\n\nconst apiRoute = `soutien`;\n\nconst fetchCampagne = async (campagneUniqueId: string) => {\n const response = await api.get<{ Campagne: CampagnePourInscription }>(\n `${apiRoute}/${campagneUniqueId}`\n );\n return response.data;\n};\n\nexport interface AddInscriptionParameters {\n courriel: string;\n nom: string;\n prenom: string;\n message?: string;\n campagneId: number;\n poids: number;\n origin: string;\n}\n\nconst addInscription = async (parameters: AddInscriptionParameters) => {\n const { campagneId, ...rest } = parameters;\n const data = qs.stringify(rest);\n const response = await api.post(\n `${apiRoute}/Inscription/${campagneId}`,\n data\n );\n return response.data;\n};\n\nexport interface AideParameters {\n courriel: string;\n nom: string;\n prenom: string;\n message?: string;\n campagneId: number;\n}\n\nconst aide = async (parameters: AideParameters) => {\n const { campagneId, ...rest } = parameters;\n const data = qs.stringify(rest);\n await api.post(`${apiRoute}/Aide/${campagneId}`, data);\n};\n\nconst recuperer = async (parameters: {\n campagneId: number;\n courriel: string;\n origin: string;\n}) => {\n const { campagneId, ...rest } = parameters;\n const data = qs.stringify(rest);\n await api.post(`${apiRoute}/recuperer/${campagneId}`, data);\n};\n\nexport default {\n fetchCampagne,\n addInscription,\n recuperer,\n aide,\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport api, { AddInscriptionParameters, AideParameters } from './api';\n\nexport const fetchCampagne = createAsyncThunk(\n `soutien/fetchCampagne`,\n async (parameters: { campagneUniqueId: string }) => {\n const response = await api.fetchCampagne(parameters.campagneUniqueId);\n return response;\n }\n);\n\nexport const addInscription = createAsyncThunk(\n `soutien/Inscription`,\n async (parameters: AddInscriptionParameters) => {\n const response = await api.addInscription(parameters);\n return response;\n }\n);\n\nexport const aide = createAsyncThunk(\n `soutien/Aide`,\n async (parameters: AideParameters) => {\n const response = await api.aide(parameters);\n return response;\n }\n);\n\nexport const recuperer = createAsyncThunk(\n `soutien/recuperer`,\n async (parameters: {\n campagneId: number;\n courriel: string;\n origin: string;\n }) => {\n const response = await api.recuperer(parameters);\n return response;\n }\n);\n","import api, { Api } from 'backend/Api';\nimport { ThemeCampagne } from 'models/adminModel';\n\nconst apiRoute = `theme`;\n\nconst fetchAllTheme = (token: string) => api\n .get(apiRoute, Api.bearerAuth(token))\n .then((response) => response.data);\n\nconst fetchThemeById = (id: number, token: string) => api\n .get(`${apiRoute}/${id}`, Api.bearerAuth(token))\n .then((response) => response.data);\n\nexport default {\n fetchAllTheme,\n fetchThemeById,\n};\n","import { ThemeCampagne } from 'models/adminModel';\nimport { schema } from 'normalizr';\n\n// Définitions pour Normalizr\n\nexport const themeSchema = new schema.Entity(\n 'Themes',\n {},\n {\n idAttribute: 'Id',\n }\n);\n\nexport type ThemeSliceEntities = {\n Themes: {\n [themeId: number]: ThemeCampagne;\n };\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { normalize } from 'normalizr';\nimport ThemeApi from './api';\nimport { themeSchema } from './schemas';\n\nexport const fetchAllThemes = createAsyncThunk(\n `themes/fetchAllThemes`,\n async (token: string) => {\n const response = await ThemeApi.fetchAllTheme(token);\n return normalize(response, [themeSchema]);\n }\n);\n\nexport const fetchThemeById = createAsyncThunk(\n `themes/fetchThemeById`,\n async (parameters: { id: number; token: string }) => {\n const response = await ThemeApi.fetchThemeById(parameters.id, parameters.token);\n return normalize(response, themeSchema);\n }\n);\n","import api, { Api } from 'backend/Api';\nimport { Candidat } from 'models/voteModel';\nimport qs from 'qs';\n\nconst apiRoute = `candidat`;\n\nconst fetchAllCandidats = async (parameters: {\n token: string;\n campagneId: number;\n}) => {\n const response = await api.get(\n `${apiRoute}/GetAll/${parameters.campagneId}`,\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nexport interface EditCandidatParameters {\n Id?: number;\n Nom: string;\n Prenom: string;\n SousTitre?: string;\n PhotoUrl?: string;\n Facebook?: string;\n Twitter?: string;\n LinkedIn?: string;\n Web?: string;\n YouTube?: string;\n TexteLong?: string;\n}\n\nconst editCandidat = async (parameters: {\n token: string;\n campagneId: number;\n candidat: EditCandidatParameters;\n}) => {\n const response = await api.put(\n `${apiRoute}/${parameters.campagneId}`,\n qs.stringify(parameters.candidat),\n Api.bearerAuth(parameters.token)\n );\n return response.data;\n};\n\nexport default {\n fetchAllCandidats,\n editCandidat,\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { Candidat } from 'models/voteModel';\nimport { normalize, schema } from 'normalizr';\nimport api, { EditCandidatParameters } from './api';\n\n// TODO: Generalize\nconst candidatSchema = new schema.Entity(\n 'Candidats',\n {},\n {\n idAttribute: 'Id',\n }\n);\n\nexport const fetchAllCandidats = createAsyncThunk(\n `admin/candidats/fetchAllCandidats`,\n async (parameters: { token: string; campagneId: number }) => {\n const response = await api.fetchAllCandidats(parameters);\n return normalize(response, [candidatSchema]);\n }\n);\n\nexport const editCandidat = createAsyncThunk(\n `admin/candidats/editCandidat`,\n async (parameters: {\n token: string;\n campagneId: number;\n candidat: EditCandidatParameters;\n }) => api.editCandidat(parameters)\n);\n"],"sourceRoot":""}