{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/modules/fiche-repondant/create/FicheRepondantCreate.html","webpack:///./src/modules/fiche-repondant/form/FicheRepondantAvailableCasSpecial.html","webpack:///./src/modules/inscription-lieu-examen/form/InscriptionOffreCoursPanel.html","webpack:///./src/modules/inscription-lieu-examen/form/InscriptionLieuExamenForm.html","webpack:///./src/modules/inscription-lieu-examen/InscriptionLieuExamenPage.html","webpack:///./src/modules/fiche-repondant/GestionFicheRepondantPage.html","webpack:///./src/assets/medias/svg/sprites.svg","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/modules/authentication/login/LoginPage.html","webpack:///./src/modules/global/error/ErrorPage.html","webpack:///./src/modules/fiche-repondant/update/FicheRepondantUpdate.html","webpack:///./src/modules/inscription-lieu-examen/form/FormInscriptionOffreCours.html","webpack:///./src/modules/inscription-lieu-examen/overview/OverviewInscriptionOffreCours.html","webpack:///./src/assets/medias/images/login-background.jpg","webpack:///./src/modules/fiche-repondant/form/FicheRepondantAvailableCasSpecialRow.html","webpack:///./src/modules/fiche-repondant/overview/FicheRepondantCard.html","webpack:///./src/layouts/default/DefaultLayout.html","webpack:///./src/assets/medias/images/ulaval-logo.png","webpack:///./src sync .*","webpack:///./src/modules/global/media/svg/location/LocationSvg.html","webpack:///./src/modules/fiche-repondant/form/FicheRepondantForm.html","webpack:///./src/modules/global/localization/city/City.store.ts","webpack:///./src/modules/global/localization/country/Country.store.ts","webpack:///./src/localization/index.ts","webpack:///./src/modules/inscription-lieu-examen/InscriptionLieuExamen.store.ts","webpack:///./src/modules/global/user-session/UserSession.store.ts","webpack:///./src/store/index.ts","webpack:///./src/router/ROUTES.ts","webpack:///./src/EventBus.ts","webpack:///./src/modules/global/base/Base.service.ts","webpack:///./src/modules/inscription-lieu-examen/InscriptionLieuExamen.service.ts","webpack:///./src/App.ts","webpack:///./src/modules/global/navigation-bar/NavigationBar.ts","webpack:///./src/layouts/default/DefaultLayout.ts","webpack:///./src/modules/authentication/Authentication.service.ts","webpack:///./src/router/helpers.ts","webpack:///./src/modules/authentication/form/AuthenticationForm.ts","webpack:///./src/modules/authentication/login/LoginPage.ts","webpack:///./src/modules/global/error/ErrorPage.ts","webpack:///./src/modules/global/session/SessionSelect.ts","webpack:///./src/modules/inscription-lieu-examen/IDossierEtudiant.model.ts","webpack:///./src/modules/inscription-lieu-examen/InscriptionLieuExamenPage.ts","webpack:///./src/modules/inscription-lieu-examen/overview/OverviewInscriptionOffreCours.ts","webpack:///./src/modules/global/media/svg/location/LocationSvg.ts","webpack:///./src/modules/inscription-lieu-examen/ITypeInscriptionLieuExamen.model.ts","webpack:///./src/modules/inscription-lieu-examen/form/InscriptionLieuExamenForm.ts","webpack:///./src/modules/inscription-lieu-examen/form/InscriptionOffreCoursPanel.ts","webpack:///./src/modules/global/localization/country/Country.service.ts","webpack:///./src/modules/global/localization/city/City.service.ts","webpack:///./src/modules/inscription-lieu-examen/form/FormInscriptionOffreCours.ts","webpack:///./src/modules/fiche-repondant/breadcrumbs/FicheRepondantBreadcrumbs.ts","webpack:///./src/modules/fiche-repondant/GestionFicheRepondantPage.ts","webpack:///./src/modules/fiche-repondant/FicheRepondant.service.ts","webpack:///./src/modules/fiche-repondant/FicheRepondant.model.ts","webpack:///./src/modules/fiche-repondant/overview/FicheRepondantCard.ts","webpack:///./src/modules/fiche-repondant/overview/OverviewFicheRepondant.ts","webpack:///./src/modules/fiche-repondant/form/FicheRepondantAvailableCasSpecialRow.ts","webpack:///./src/modules/fiche-repondant/form/FicheRepondantAvailableCasSpecial.ts","webpack:///./src/modules/global/file/UploadedFileRow.ts","webpack:///./src/modules/fiche-repondant/form/FicheRepondantForm.ts","webpack:///./src/modules/fiche-repondant/FicheRepondantConditionsOverlay.ts","webpack:///./src/modules/fiche-repondant/create/FicheRepondantCreate.ts","webpack:///./src/modules/fiche-repondant/update/FicheRepondantUpdate.ts","webpack:///./src/router/index.ts","webpack:///./src/modules/global/utilities/RouterMixin.ts","webpack:///./src/modules/global/utilities/StringMixin.ts","webpack:///./src/modules/global/utilities/UtilitiesMixin.ts","webpack:///./src/plugins/icons.ts","webpack:///./src/main.ts","webpack:///./src/modules/global/session/SessionSelect.html","webpack:///./src/modules/fiche-repondant/breadcrumbs/FicheRepondantBreadcrumbs.html","webpack:///./src/modules/fiche-repondant/overview/OverviewFicheRepondant.html","webpack:///./src/modules/global/navigation-bar/NavigationBar.html","webpack:///./src/modules/fiche-repondant/FicheRepondantConditionsOverlay.html","webpack:///./src/modules/global/file/UploadedFileRow.html","webpack:///./src/modules/authentication/form/AuthenticationForm.html","webpack:///./src/App.html"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","code","keys","STORE_ACTIONS","STORE_GETTERS","_cities","cities","this","context","commit","reduce","acc","city","nom","namespaced","_countries","countries","LOCALES","MOMENT_LOCALES","DEFAULT_NAMESPACE","CURRENT_LOCALE","localStorage","getItem","FR","FALLBACK_LOCALE","getFromDottedNotation","properties","propertiesArray","split","translations","forEach","filePath","pathParameters","filter","el","translationTree","pathParameter","index","includes","treeParameterPath","join","obj","lang","substring","lastIndexOf","i18next","init","lng","fallbackLng","defaultNS","entries","locale","resources","addResourceBundle","_informations","_dossierEtudiant","_typesInscriptionLieuExamen","_isTypeInscriptionLieuExamenLoadingStateActive","_token","informations","dossierEtudiant","typesInscriptionLieuExamen","newState","token","typeInscriptionLieuExamen","slug","messagesImportantLocalise","localization","LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN","LOCAL_STORAGE_KEY_TOKEN","_isLoggedIn","_firstName","_lastName","_email","_username","setItem","decodedToken","decode","firstName","lastName","email","username","removeItem","userFullName","use","ROUTES","Store","country","inscriptionLieuExamen","userSession","EventBus","status","INTERNAL_SERVER_ERROR","toString","response","mixin_router_navigate","ERROR","params","query","queryString","exception","EVENTS","$axios","then","$store","dispatch","INSCRIPTION_LIEU_EXAMEN_STORE_INFORMATIONS","catch","service_base_defaultErrorHandler","INSCRIPTION_LIEU_EXAMEN_STORE_DOSSIER_ETUDIANT","inscriptionsOffreCours","INSCRIPTION_LIEU_EXAMEN_UPDATE_TYPE_INSCRIPTION_LIEU_EXAMEN_LOADING_STATE","INSCRIPTION_LIEU_EXAMEN_STORE_TYPES_INSCRIPTION_LIEU_EXAMEN","finally","casSpeciaux","post","requestPayload","put","inscriptionsLieuExamen","$emit","AFTER_UPDATE","FORBIDDEN","UNAUTHORIZED","isDialogMessageImportantActive","MDialogState","MDialogWidth","messageImportantGlobal","SESSION_STORE_SYNCHRONISE_WITH_LOCAL_STORAGE","fetchInformations","setAxiosBasicHeaders","updateStudentTokenLocalStorage","title","$i18next","sessionToken","defaults","headers","common","Authorization","service_inscriptionLieuExamenService_fetchInformations","$route","getters","INSCRIPTION_LIEU_EXAMEN_GET_MESSAGE_IMPORTANT","components","MDialog","MErrorResourceUnavailable","NavigationBar","store","SESSION_STORE_LOGIN","ROUTE_LOCALE_DELIMITER","LOCAL_STORAGE_LOGIN_REMEMBERED_ROUTE","generateLocalizedRouteName","parameters","extractLocalizedRouteParameters","routeParameters","generateLocalizedRoutePath","localizeRouteConfigChildrenRecursive","childrens","routes","children","path","component","meta","localizeRouteConfig","config","values","localizeRouteConfigs","originalRoutes","route","formGroup","password","isAuthenticationLoadingStateActive","requestErrors","MTextfieldType","MButtonType","AUTHENTICATION_LOADING_STATE_TIMEOUT","ERROR_KEY_INVALID_CREDENTIALS","ERROR_KEY_STUDENT_NOT_FOUND","authenticationLoadingStateTimeout","service_authenticationService_authenticate","usernameField","passwordField","rememberedRoute","$router","INSCRIPTION_ETUDIANT","NOT_FOUND","validation","getControl","MButton","MForm","MMessage","MTextfield","MTooltip","INSCRIPTION_LIEU_EXAMEN_GET_INFORMATIONS","AuthenticationForm","MPanel","INSCRIPTION_LIEU_EXAMEN_GET_DOSSIER_ETUDIANT","INSCRIPTION_LIEU_EXAMEN_GET_TOKEN","SERVICE_UNAVAILABLE","returnObjects","inscriptionLieuExamenInformations","MErrorAccessDenied","MErrorPageNotFound","MErrorTechnicalDifficulty","selectedSession","setSelectedSessionFromDossierEtudiant","session","codeSession","matchingSession","availableSessions","find","sessionsDossierExamen","immediate","MDropdown","MDropdownItem","StatutInscription","isDossierEtudiantLoadingStateActive","MMessageState","MMessageSkin","MButtonSkin","loadDossierEtudiant","INSCRIPTION_LIEU_EXAMEN_STORE_UPDATE_TOKEN","service_inscriptionLieuExamenService_fetchDossierEtudiant","statutInscription","INSCRIPTION_EN_ATTENTE","INSCRIPTION_ETUDIANT_APERCU","INSCRIPTION_COMPLETEE","INSCRIPTION_TERMINEE","INSCRIPTION_ETUDIANT_FORMULAIRE","location","href","monPortail","baseUrl","FICHE_REPONDANT_OVERVIEW","MAccordion","MAccordionGroup","MIcon","MSpinner","SessionSelect","isInscriptionsLieuExamenTousCampus","isOverviewInscriptionsOffreCoursLoadingStateActive","isTousCampusButtonLoadingStateActive","MModalSize","loadOverviewInscriptionsOffreCours","service_inscriptionLieuExamenService_fetchOverviewInscriptionsOffreCours","service_inscriptionLieuExamenService_saveInscriptionsAsToutCampus","navigateToNextStep","MModal","MSwitch","SLUGS","stateChanged","isRepondantInformationsModalOpen","typeInscriptionLieuExamenInMemory","ITypeInscriptionLieuExamen_SLUGS","VALIDATOR_KEY_VILLE_ALIAS","UPDATE_TYPE_INSCRIPTION_LIEU_EXAMEN","identifier","isFormAvailable","containsControl","addControl","typesInscriptionLieuExamenBySlug","typeInscriptionLieuExamenField","CAMPUS_UL","CENTRE_EXAMEN","REPONDANT","removeControl","validationType","OnGoing","villeRepondantFieldErrorMessage","validationFunction","villeRepondantCityNameValidator","situation","idTypeInscriptionLieuExamen","$nextTick","centreExamenDropdown","idVille","villeRepondantField","villeRepondant","paysRepondantDropdown","paysRepondant","afterInscriptionLieuExamenUpdate","$on","idInscriptionLieuExamen","slugTypeInscriptionLieuExamen","UPDATE_INSCRIPTION_LIEU_EXAMEN","examsLabel","conflitsHoraire","conflitHoraire","codeCours","sectionCours","onInscriptionLieuExamenUpdate","self","localeCompare","trim","sensitivity","cityAliasContainsValue","matchingValidator","validators","validator","dossierExamenValidationAliasMessage","alias","isDesactiver","horodateCampus","horodateHorsCampus","INSCRIPTION_LIEU_EXAMEN_GET_TYPES_INSCRIPTION_LIEU_EXAMEN","INSCRIPTION_LIEU_EXAMEN_GET_TYPES_INSCRIPTION_LIEU_EXAMEN_BY_SLUG","INSCRIPTION_LIEU_EXAMEN_GET_IS_TYPE_INSCRIPTION_LIEU_EXAMEN_LOADING_STATE_ACTIVE","CITY_GET_CITIES","CITY_GET_CITIES_NAMES","COUNTRY_GET_COUNTRIES","required","LocationSvg","MProgress","MRadio","MRadioGroup","REF_INSCRIPTION_LIEU_EXAMEN_FORM","inscriptionOffreCours","examen","InscriptionLieuExamenForm","pays","COUNTRY_STORE_COUNTRIES","villes","CITY_STORE_CITIES","REF_INSCRIPTION_OFFRE_COURS_PANEL","REF_CONFIRMATION_DIALOG","isFormInscriptionsOffreCoursLoadingStateActive","formIdsInError","formIdsStateChanged","isConfirmationDialogActive","isSaveFormInscriptionsOffreCoursLoadingStateActive","isSaveFormInscriptionsOffreCoursSuccessStateActive","isSaveFormInscriptionsOffreCoursErrorStateActive","requestPayloads","MToastPosition","MToastState","loadTypesInscriptionLieuExamen","loadCountries","loadFormInscriptionsLieuExamen","loadCities","onUpdateTypeInscriptionLieuExamen","onUpdateInscriptionLieuExamen","InscriptionLieuExamenForm_EVENTS","payload","removeFormIdInError","$set","findIndex","$delete","validateInscriptionLieuExamenForm","service_inscriptionLieuExamenService_fetchTypesInscriptionsOffreCours","service_countryService_fetchCountries","service_cityService_fetchCities","service_inscriptionLieuExamenService_fetchFormInscriptionsOffreCours","waiting","payloads","inscriptionOffreCoursPanelComponents","Array","isArray","inscriptionOffreCoursPanelComponent","childComponents","inscriptionLieuExamenFormComponents","inscriptionLieuExamenFormComponent","formData","openConfirmationDialog","submit","hasErrorDeep","getFormData","service_inscriptionLieuExamenService_saveFormInscriptionsOffreCours","confirmationDialogComponent","closeModal","citiesById","ville","CITY_GET_CITIES_BY_ID","postProcess","count","InscriptionOffreCoursPanel","MToast","MIconButtonSkin","MLinkMode","matched","breadcrumbs","currentRouteNameParameters","FICHE_REPONDANT_CREATE","FICHE_REPONDANT_UPDATE","label","mixin_router_generateHref","MIconButton","MLink","FicheRepondantBreadcrumbs","service_base_generateQueryFromObject","handleRequestError","casSpeciauxRepondant","idsCasSpecialRepondant","assembleFormDataFromformPayload","set","service_baseService_multipartFormDataHeader","idCasRepondantFiche","delete","AFTER_DELETE","casRepondantFiche","FormData","idPays","prenom","fonction","telephone","courriel","langue","employeurNom","employeurAdresse","employeurPreuveUrl","employeurPreuveFichiers","uploadedFile","server_file","file","append","LOGIN","FICHE_REPONDANT_LANGUE","FICHE_REPONDANT_STATUT","isDeleteLoadingStateActive","isDeleteConfirmationDialogDisplayed","service_ficheRepondantService_delete","ficheRepondant","hideDeleteConfirmationDialog","navigateToUpdatePage","isModifiableParEtudiant","idFicheRepondant","displayDeleteConfirmationDialog","statut","EN_ARRET","NON_CONFORME","EN_TRAITEMENT","VALIDEE","fichesRepondant","nombreCasSpeciauxRepondantDisponible","isLoadingOverlayActive","isDeleteSuccessToastOpen","MToastTimeout","loadFichesRepondant","afterFicheRepondantDeleted","DesktopShort","displayLoadingOverlay","service_ficheRepondantService_fetchList","casRepondantFiches","localStorageToken","FicheRepondantCard","FicheRepondantAvailableCasSpecialRow_EVENTS","isSelected","ITEM_SELECTED","casSpecial","FicheRepondantAvailableCasSpecialRow","UploadedFileRow_EVENTS","REF_DOWNLOAD_LINK","DELETE","url","openFile","download_endpoint","responseType","Accept","res","URL","createObjectURL","Blob","file_format","file_name","fileName","downloadLinkHtmlElement","click","removeAttribute","size","file_size","extension","fileNameParts","default","MIconFile","fichiersPreuve","formErrors","ALLOWED_ATTACHMENT_EXTENSIONS","ERROR_KEY_PREUVE_EMPLOYEUR_REQUIS","populateFormFromFicheRepondant","validate","villeField","countryDropdown","nomField","prenomField","fonctionField","telephoneField","courrielField","langueDropdown","employeurNomField","employeurAdresseField","employeurPreuveUrlField","files","$file","uploadTemp","telephonePrincipal","fichier","MAdd","MFileUpload","UploadedFileRow","isOverlayOpen","SESSION_GET_USER_FULL_NAME","MOverlay","REF_FICHE_REPONDANT_FORM","casSpeciauxDisponible","isLoadingStateActive","isSuccessStateActive","isSubmitDialogOpen","selectedCasSpecialIds","loadCasSpeciauxDisponible","afterFicheRepondantAvailableCasSpecialRowItemSelected","service_ficheRepondantService_fetchAvailableCasSpecial","selectedCasSpecialIndex","indexOf","ficheRepondantFormComponent","getFormPayload","formPayload","displaySubmitDialog","createFicheRepondant","hideSubmitDialog","service_ficheRepondantService_create","FicheRepondantAvailableCasSpecial","FicheRepondantConditionsOverlay","FicheRepondantForm","fetchFicheRepondant","updateFicheRepondant","service_ficheRepondantService_fetchById","service_ficheRepondantService_update","DEFAULT","FICHE_REPONDANT_GESTION","WILDCARD","router","beforeEach","to","from","next","fullPath","SVG_PREFIX","IconPlugin","install","v","svg","$svg","addExternalSprites","utilsPluginOptions","i18PluginOptions","curLang","propagateVueParserErrors","localizationPromise","baseURL","productionTip","$moment","mixin","localizationPlugin","render","h","$mount"],"mappings":"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","file":"js/app.b5de9aa0.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2d22fcf5\":\"a742b7ca\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\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
\n
\n
\n
\n \n \n
\n \n \n
\n
\n
\n

\n {{ inscriptionLieuExamen.titreTypeExamen }}\n

\n
\n
\n
\n","
\n \n \n \n \n \n \n \n \n
","
\n
\n
\n

\n {{ $i18next.t(`modules.fiche-repondant.GestionFicheRepondantPage.header.title.${$route.name}`) }}\n

\n
\n \n
\n \n \n \n \n \n
","module.exports = __webpack_public_path__ + \"img/sprites.54dcafaf.svg\";","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","\n
\n \n \n

\n {{ $i18next.t('modules.authentication.login.LoginPage.informations_container.title') }}\n

\n

\n \n \n \n \n \n

\n {{ $i18next.t('modules.authentication.login.LoginPage.form_container.title') }}\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 \n \n
\n \n \n
","
\n \n

\n {{ $i18next.t('modules.inscription-lieu-examen.overview.OverviewInscriptionOffreCours.title') }}\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
","module.exports = __webpack_public_path__ + \"img/login-background.7492460c.jpg\";","\n \n \n
\n \n \n
\n","\n \n \n
\n \n \n
\n","
\n \n \n \n \n
","module.exports = __webpack_public_path__ + \"img/ulaval-logo.22847c4c.png\";","var map = {\n\t\"./localization/main.lang.en.json\": \"e29d\",\n\t\"./localization/main.lang.fr.json\": \"614b\",\n\t\"./modules/authentication/form/AuthenticationForm.lang.en.json\": \"39c2\",\n\t\"./modules/authentication/form/AuthenticationForm.lang.fr.json\": \"1ca0\",\n\t\"./modules/authentication/login/LoginPage.lang.en.json\": \"6ba7\",\n\t\"./modules/authentication/login/LoginPage.lang.fr.json\": \"92f3\",\n\t\"./modules/fiche-repondant/FicheRepondantConditionsOverlay.lang.fr.json\": \"c1e9\",\n\t\"./modules/fiche-repondant/GestionFicheRepondantPage.lang.fr.json\": \"000f\",\n\t\"./modules/fiche-repondant/create/FicheRepondantCreate.lang.fr.json\": \"aa2f\",\n\t\"./modules/fiche-repondant/form/FicheRepondantAvailableCasSpecial.lang.fr.json\": \"1063\",\n\t\"./modules/fiche-repondant/form/FicheRepondantAvailableCasSpecialRow.lang.fr.json\": \"b495\",\n\t\"./modules/fiche-repondant/form/FicheRepondantForm.lang.fr.json\": \"7820\",\n\t\"./modules/fiche-repondant/overview/FicheRepondantCard.lang.fr.json\": \"a656\",\n\t\"./modules/fiche-repondant/overview/OverviewFicheRepondant.lang.fr.json\": \"9e01\",\n\t\"./modules/fiche-repondant/update/FicheRepondantUpdate.lang.fr.json\": \"65bd\",\n\t\"./modules/global/error/ErrorPage.lang.en.json\": \"383d\",\n\t\"./modules/global/error/ErrorPage.lang.fr.json\": \"c90d\",\n\t\"./modules/global/file/UploadedFileRow.lang.fr.json\": \"35bd\",\n\t\"./modules/global/localization/locale/LocaleSelect.lang.en.json\": \"166e\",\n\t\"./modules/global/localization/locale/LocaleSelect.lang.fr.json\": \"4a6f\",\n\t\"./modules/global/session/SessionSelect.lang.en.json\": \"043f\",\n\t\"./modules/global/session/SessionSelect.lang.fr.json\": \"a1aa\",\n\t\"./modules/inscription-lieu-examen/InscriptionLieuExamenPage.lang.en.json\": \"c725\",\n\t\"./modules/inscription-lieu-examen/InscriptionLieuExamenPage.lang.fr.json\": \"8743\",\n\t\"./modules/inscription-lieu-examen/form/FormInscriptionOffreCours.lang.en.json\": \"0ba8\",\n\t\"./modules/inscription-lieu-examen/form/FormInscriptionOffreCours.lang.fr.json\": \"3440\",\n\t\"./modules/inscription-lieu-examen/form/InscriptionLieuExamenForm.lang.en.json\": \"ecd4\",\n\t\"./modules/inscription-lieu-examen/form/InscriptionLieuExamenForm.lang.fr.json\": \"f77c\",\n\t\"./modules/inscription-lieu-examen/form/InscriptionOffreCoursPanel.lang.fr.json\": \"29b5\",\n\t\"./modules/inscription-lieu-examen/overview/OverviewInscriptionOffreCours.lang.en.json\": \"adb3\",\n\t\"./modules/inscription-lieu-examen/overview/OverviewInscriptionOffreCours.lang.fr.json\": \"4747\",\n\t\"./router/routes.lang.en.json\": \"fccc\",\n\t\"./router/routes.lang.fr.json\": \"9fd7\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"b777\";","\n \n \n \n \n \n","\n
\n
\n
\n {{ $i18next.t('modules.fiche-repondant.form.FicheRepondantForm.label.repondant') }}\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
\n
\n
\n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n {{ $i18next.t('modules.fiche-repondant.form.FicheRepondantForm.label.employeur') }}\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n {{ $i18next.t('modules.fiche-repondant.form.FicheRepondantForm.label.preuve') }}\n
\n
\n \n \n \n
\n
\n
\n
\n \n
\n
\n\n
\n
\n \n \n {{ $i18next.t('modules.fiche-repondant.form.FicheRepondantForm.field.file_upload.trigger') }}\n \n \n
\n
\n \n
\n
\n","import { Action, Module, Mutation, VuexModule } from 'vuex-module-decorators'\n\nimport { ICity } from './ICity.model'\n\nexport enum STORE_ACTIONS {\n CITY_STORE_CITIES = 'city/storeCities'\n}\n\nexport enum STORE_GETTERS {\n CITY_GET_CITIES = 'city/cities',\n CITY_GET_CITIES_BY_ID = 'city/citiesById',\n CITY_GET_CITIES_NAMES = 'city/citiesNames'\n}\n\n@Module({ namespaced: true })\nexport default class CityStore extends VuexModule {\n private _cities: Array = []\n\n @Mutation\n private storeCitiesMutation(cities: Array = []): void {\n this._cities = cities || []\n }\n\n @Action\n public storeCities(cities: Array): void {\n this.context.commit('storeCitiesMutation', cities)\n }\n\n private get cities(): Array {\n return this._cities || []\n }\n\n private get citiesById(): { [key: string]: ICity } {\n return this._cities.reduce((acc: { [key: string]: ICity }, city: ICity) => {\n return {\n ...acc,\n [city.id]: city\n }\n }, {})\n }\n\n private get citiesNames(): Array {\n return this._cities.reduce((acc: Array, city: ICity) => {\n return [\n ...acc,\n city.nom\n ]\n }, [])\n }\n}\n","import { Action, Module, Mutation, VuexModule } from 'vuex-module-decorators'\nimport { ICountry } from './ICountry.model'\n\nexport enum STORE_ACTIONS {\n COUNTRY_STORE_COUNTRIES = 'country/storeCountries'\n}\n\nexport enum STORE_GETTERS {\n COUNTRY_GET_COUNTRIES = 'country/countries'\n}\n\n@Module({ namespaced: true })\nexport default class CountryStore extends VuexModule {\n private _countries: Array = []\n\n @Mutation\n private storeCountriesMutation(countries: Array = []): void {\n this._countries = countries || []\n }\n\n @Action\n public storeCountries(countries: Array): void {\n this.context.commit('storeCountriesMutation', countries)\n }\n\n private get countries(): Array {\n return this._countries || []\n }\n}\n","import merge from 'deepmerge'\nimport i18next from 'i18next';\n\nexport enum LOCALES {\n FR = 'fr'\n}\n\nexport enum MOMENT_LOCALES {\n FR = 'fr-ca'\n}\n\nconst DEFAULT_NAMESPACE: string = 'localization'\nconst CURRENT_LOCALE: LOCALES = localStorage.getItem('locale') as LOCALES || LOCALES.FR\nconst FALLBACK_LOCALE: LOCALES = LOCALES.FR\n\nfunction getFromDottedNotation(object: { [key: string]: any }, properties: string): any {\n const propertiesArray: string[] = properties.split('.')\n\n for (let i: number = 0; i < propertiesArray.length; i++) {\n const property: string = propertiesArray[i]\n\n if ((object != null) && (typeof (object) === 'object') && Object.prototype.hasOwnProperty.call(object, property)) {\n object = object[property]\n } else {\n return undefined\n }\n }\n\n return object\n}\n\nconst getTranslations = (): any => {\n const translations: any = {}\n const context: any = require.context('../', true, /.*?(?=\\.lang\\.).*?\\.json/)\n\n context.keys().forEach((filePath: string) => {\n const pathParameters: string[] = filePath.split('/').filter((el: string) => !(el === '.'))\n const translationTree: { [key: string]: object } = {}\n\n pathParameters.forEach((pathParameter: string, index: number) => {\n if (pathParameter.includes('.lang')) {\n const treeParameterPath: string = pathParameters.slice(0, index).join('.')\n const obj: any = getFromDottedNotation(translationTree, treeParameterPath) || translationTree\n obj[pathParameter.split('.')[0]] = context(filePath)\n\n const lang: string = pathParameter.substring(\n pathParameter.lastIndexOf('lang.') + 5,\n pathParameter.lastIndexOf('.json')\n )\n\n translations[lang] = merge(translations[lang], translationTree)\n } else if (index === 0) {\n const treeParameterPath: string = pathParameters.slice(0, index + 1).join('.')\n translationTree[treeParameterPath] = {}\n } else {\n const treeParameterPath: string = pathParameters.slice(0, index).join('.')\n const obj: any = getFromDottedNotation(translationTree, treeParameterPath)\n obj[pathParameter] = {}\n }\n })\n })\n\n return translations\n}\n\ni18next\n .init({\n lng: localStorage.getItem('locale') || FALLBACK_LOCALE,\n fallbackLng: FALLBACK_LOCALE,\n ns: DEFAULT_NAMESPACE,\n defaultNS: DEFAULT_NAMESPACE\n })\n\nconst translations: any = getTranslations()\n\nObject.entries(translations).forEach(([locale, resources]: any) => {\n i18next.addResourceBundle(locale, DEFAULT_NAMESPACE, resources)\n})\n\nexport default {\n CURRENT_LOCALE,\n FALLBACK_LOCALE,\n LOCALES,\n MOMENT_LOCALES,\n i18next\n}","import localization from '@/localization'\nimport { Action, Module, Mutation, VuexModule } from 'vuex-module-decorators'\n\nimport IDossierEtudiant from './IDossierEtudiant.model'\nimport IInscriptionLieuExamenInformations from './IInscriptionLieuExamenInformations.model'\nimport ITypeInscriptionLieuExamen from './ITypeInscriptionLieuExamen.model'\n\nexport enum STORE_ACTIONS {\n INSCRIPTION_LIEU_EXAMEN_STORE_INFORMATIONS = 'inscriptionLieuExamen/storeInformations',\n INSCRIPTION_LIEU_EXAMEN_STORE_DOSSIER_ETUDIANT = 'inscriptionLieuExamen/storeDossierEtudiant',\n INSCRIPTION_LIEU_EXAMEN_STORE_TYPES_INSCRIPTION_LIEU_EXAMEN = 'inscriptionLieuExamen/storeTypesInscriptionLieuExamen',\n INSCRIPTION_LIEU_EXAMEN_UPDATE_TYPE_INSCRIPTION_LIEU_EXAMEN_LOADING_STATE = 'inscriptionLieuExamen/updateTypeInscriptionLieuExamenLoadingState',\n INSCRIPTION_LIEU_EXAMEN_STORE_UPDATE_TOKEN = 'inscriptionLieuExamen/updateToken'\n}\n\nexport enum STORE_GETTERS {\n INSCRIPTION_LIEU_EXAMEN_GET_INFORMATIONS = 'inscriptionLieuExamen/informations',\n INSCRIPTION_LIEU_EXAMEN_GET_DOSSIER_ETUDIANT = 'inscriptionLieuExamen/dossierEtudiant',\n INSCRIPTION_LIEU_EXAMEN_GET_TYPES_INSCRIPTION_LIEU_EXAMEN = 'inscriptionLieuExamen/typesInscriptionLieuExamen',\n INSCRIPTION_LIEU_EXAMEN_GET_TYPES_INSCRIPTION_LIEU_EXAMEN_BY_SLUG = 'inscriptionLieuExamen/typesInscriptionLieuExamenBySlug',\n INSCRIPTION_LIEU_EXAMEN_GET_IS_TYPE_INSCRIPTION_LIEU_EXAMEN_LOADING_STATE_ACTIVE = 'inscriptionLieuExamen/isTypeInscriptionLieuExamenLoadingStateActive',\n INSCRIPTION_LIEU_EXAMEN_GET_TOKEN = 'inscriptionLieuExamen/token',\n INSCRIPTION_LIEU_EXAMEN_GET_MESSAGE_IMPORTANT = 'inscriptionLieuExamen/messageImportant'\n}\n\n@Module({ namespaced: true })\nexport default class InscriptionLieuExamenStore extends VuexModule {\n private _informations: IInscriptionLieuExamenInformations | null = null\n private _dossierEtudiant: IDossierEtudiant | null = null\n private _typesInscriptionLieuExamen: Array = []\n private _isTypeInscriptionLieuExamenLoadingStateActive: boolean = false\n private _token: string = ''\n\n @Mutation\n private storeInformationsMutation(informations: IInscriptionLieuExamenInformations): void {\n this._informations = informations || null\n }\n\n @Mutation\n private storeDossierEtudiantMutation(dossierEtudiant: IDossierEtudiant): void {\n this._dossierEtudiant = dossierEtudiant || null\n }\n\n @Mutation\n private storeTypesInscriptionLieuExamenMutation(typesInscriptionLieuExamen: Array = []): void {\n this._typesInscriptionLieuExamen = typesInscriptionLieuExamen || []\n }\n\n @Mutation\n private updateTypeInscriptionLieuExamenLoadingStateMutation(newState: boolean = false): void {\n this._isTypeInscriptionLieuExamenLoadingStateActive = newState || false\n }\n\n @Mutation\n private updateTokenMutation(token: string): void {\n this._token = token || ''\n }\n\n @Action\n public storeInformations(informations: IInscriptionLieuExamenInformations): void {\n this.context.commit('storeInformationsMutation', informations)\n }\n\n @Action\n public storeDossierEtudiant(dossierEtudiant: IDossierEtudiant): void {\n this.context.commit('storeDossierEtudiantMutation', dossierEtudiant)\n }\n\n @Action\n public storeTypesInscriptionLieuExamen(typesInscriptionLieuExamen: Array): void {\n this.context.commit('storeTypesInscriptionLieuExamenMutation', typesInscriptionLieuExamen)\n }\n\n @Action\n public updateTypeInscriptionLieuExamenLoadingState(newState: boolean = false): void {\n this.context.commit('updateTypeInscriptionLieuExamenLoadingStateMutation', newState)\n }\n\n @Action\n public updateToken(token: string): void {\n this.context.commit('updateTokenMutation', token)\n }\n\n private get informations(): IInscriptionLieuExamenInformations | null {\n return this._informations\n }\n\n private get dossierEtudiant(): IDossierEtudiant | null {\n return this._dossierEtudiant\n }\n\n private get typesInscriptionLieuExamen(): Array {\n return this._typesInscriptionLieuExamen || []\n }\n\n private get typesInscriptionLieuExamenBySlug(): { [key: string]: ITypeInscriptionLieuExamen } {\n return this._typesInscriptionLieuExamen.reduce((acc: { [key: string]: ITypeInscriptionLieuExamen }, typeInscriptionLieuExamen: ITypeInscriptionLieuExamen) => {\n return {\n ...acc,\n [typeInscriptionLieuExamen.slug]: typeInscriptionLieuExamen\n }\n }, {})\n }\n\n private get isTypeInscriptionLieuExamenLoadingStateActive(): boolean {\n return this._isTypeInscriptionLieuExamenLoadingStateActive || false\n }\n\n private get token(): string {\n return this._token\n }\n\n private get messageImportant(): string | null {\n if (!this._informations) {\n return null\n }\n\n const message: string | null = this._informations.messagesImportantLocalise[localization.CURRENT_LOCALE]\n\n return message ||\n this._informations.messagesImportantLocalise[localization.FALLBACK_LOCALE]\n }\n}\n","import { Action, Module, Mutation, VuexModule } from 'vuex-module-decorators'\n\nimport jwt, { JwtPayload } from 'jsonwebtoken'\n\nexport enum STORE_ACTIONS {\n SESSION_STORE_LOGIN = 'userSession/login',\n SESSION_STORE_LOGOUT = 'userSession/logout',\n SESSION_STORE_SYNCHRONISE_WITH_LOCAL_STORAGE = 'userSession/synchroniseWithLocalStorage'\n}\n\nexport enum STORE_GETTERS {\n SESSION_GET_TOKEN = 'userSession/token',\n SESSION_GET_IS_LOGGED_IN = 'userSession/isLoggedIn',\n SESSION_GET_FIRST_NAME = 'userSession/firstName',\n SESSION_GET_LAST_NAME = 'userSession/lastName',\n SESSION_GET_EMAIL = 'userSession/email',\n SESSION_GET_USERNAME = 'userSession/username',\n SESSION_GET_USER_FULL_NAME = 'userSession/userFullName',\n SESSION_GET_USER_FULL_NAME_WITH_USERNAME = 'userSession/userFullNameWithUsername',\n SESSION_GET_USER_FULL_NAME_WITH_EMAIL = 'userSession/userFullNameWithEmail'\n}\n\nexport const LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN: string = 'authorization-token'\nexport const LOCAL_STORAGE_KEY_TOKEN: string = 'token'\n\n@Module({ namespaced: true })\nexport default class UserSessionStore extends VuexModule {\n public readonly LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN: string = LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN\n\n private _token: string | null = null\n private _isLoggedIn: boolean = false\n private _firstName: string | null = null\n private _lastName: string | null = null\n private _email: string | null = null\n private _username: string | null = null\n\n @Mutation\n private storeTokenMutation(token: string): void {\n localStorage.setItem(this.LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN, token)\n }\n\n @Mutation\n private synchroniseWithLocalStorageMutation(): void {\n this._token = localStorage.getItem(this.LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN)\n this._isLoggedIn = !!this._token\n }\n\n @Mutation\n private decodeTokenInformationsMutation(): void {\n if (this._token) {\n const decodedToken: JwtPayload = jwt.decode(this._token || '') as JwtPayload\n\n if (decodedToken) {\n this._firstName = decodedToken.firstName\n this._lastName = decodedToken.lastName\n this._email = decodedToken.email\n this._username = decodedToken.username\n }\n }\n }\n\n @Mutation\n private clearTokenMutation(): void {\n localStorage.removeItem(this.LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN)\n }\n\n @Mutation\n private clearUserInformationsMutation(): void {\n this._firstName = null\n this._lastName = null\n this._email = null\n this._username = null\n }\n\n @Action\n public login(token: string): void {\n this.context.commit('storeTokenMutation', token)\n this.context.commit('synchroniseWithLocalStorageMutation')\n this.context.commit('decodeTokenInformationsMutation')\n }\n\n @Action\n public logout(): void {\n this.context.commit('clearTokenMutation')\n this.context.commit('synchroniseWithLocalStorageMutation')\n this.context.commit('clearUserInformationsMutation')\n }\n\n @Action\n public synchroniseWithLocalStorage(): void {\n this.context.commit('synchroniseWithLocalStorageMutation')\n this.context.commit('decodeTokenInformationsMutation')\n }\n\n private get token(): string | null {\n return this._token\n }\n\n private get isLoggedIn(): boolean {\n return this._isLoggedIn\n }\n\n private get firstName(): string | null {\n return this._firstName\n }\n\n private get lastName(): string | null {\n return this._lastName\n }\n\n private get email(): string | null {\n return this._email\n }\n\n private get username(): string | null {\n return this._username\n }\n\n private get userFullName(): string {\n return `${this.firstName} ${this.lastName}`\n }\n\n private get userFullNameWithUsername(): string {\n return `${this.userFullName} (${this.username})`\n }\n\n private get userFullNameWithEmail(): string {\n return `${this.userFullName} (${this.email})`\n }\n}\n","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nimport CityStore, { STORE_ACTIONS as CITY_STORE_ACTIONS, STORE_GETTERS as CITY_STORE_GETTERS } from '@/modules/global/localization/city/City.store'\nimport CountryStore, { STORE_ACTIONS as COUNTRY_STORE_ACTIONS, STORE_GETTERS as COUNTRY_STORE_GETTERS } from '@/modules/global/localization/country/Country.store'\nimport InscriptionLieuExamenStore, { STORE_ACTIONS as INSCRIPTION_LIEU_EXAMEN_STORE_ACTIONS, STORE_GETTERS as INSCRIPTION_LIEU_EXAMEN_STORE_GETTERS } from '@/modules/inscription-lieu-examen/InscriptionLieuExamen.store'\nimport UserSessionStore, { STORE_ACTIONS as USER_SESSION_STORE_ACTIONS, STORE_GETTERS as USER_SESSION_STORE_GETTERS } from '@/modules/global/user-session/UserSession.store'\n\nVue.use(Vuex)\n\nexport const STORE_ACTIONS = {\n ...CITY_STORE_ACTIONS,\n ...COUNTRY_STORE_ACTIONS,\n ...INSCRIPTION_LIEU_EXAMEN_STORE_ACTIONS,\n ...USER_SESSION_STORE_ACTIONS\n}\ntype STORE_ACTIONS = INSCRIPTION_LIEU_EXAMEN_STORE_ACTIONS |\n COUNTRY_STORE_ACTIONS |\n CITY_STORE_ACTIONS |\n USER_SESSION_STORE_ACTIONS\n\nexport const STORE_GETTERS = {\n ...CITY_STORE_GETTERS,\n ...COUNTRY_STORE_GETTERS,\n ...INSCRIPTION_LIEU_EXAMEN_STORE_GETTERS,\n ...USER_SESSION_STORE_GETTERS\n}\ntype STORE_GETTERS = INSCRIPTION_LIEU_EXAMEN_STORE_GETTERS |\n COUNTRY_STORE_GETTERS |\n CITY_STORE_GETTERS |\n USER_SESSION_STORE_GETTERS\n\nexport default new Vuex.Store({\n modules: {\n city: CityStore,\n country: CountryStore,\n inscriptionLieuExamen: InscriptionLieuExamenStore,\n userSession: UserSessionStore\n }\n})\n","enum ROUTES {\n DEFAULT = 'default',\n LOGIN = 'login',\n ERROR = 'error',\n WILDCARD = 'wildcard',\n INSCRIPTION_ETUDIANT = 'inscription-etudiant',\n INSCRIPTION_ETUDIANT_APERCU = 'inscription-etudiant-apercu',\n INSCRIPTION_ETUDIANT_FORMULAIRE = 'inscription-etudiant-formulaire',\n FICHE_REPONDANT_GESTION = 'fiche-repondant-list',\n FICHE_REPONDANT_OVERVIEW = 'fiche-repondant-overview',\n FICHE_REPONDANT_CREATE = 'fiche-repondant-create',\n FICHE_REPONDANT_UPDATE = 'fiche-repondant-update'\n}\n\nexport default ROUTES","import Vue from 'vue'\n\nconst EventBus: Vue = new Vue()\n\nexport default EventBus","import Component, { mixins } from \"vue-class-component\"\n\nimport HttpStatusCode from 'http-status-codes'\n\nimport ROUTES from \"@/router/ROUTES\"\n\nimport { AxiosError } from \"axios\"\n\n@Component\nexport default class BaseService extends mixins() {\n protected service_base_defaultErrorHandler(error: AxiosError, reject: any): void {\n let status: string = HttpStatusCode.INTERNAL_SERVER_ERROR.toString()\n\n if (error.response) {\n status = error.response?.status.toString()\n }\n\n this.mixin_router_navigate({\n name: ROUTES.ERROR,\n params: {\n status\n }\n })\n\n reject(error)\n }\n\n protected service_base_generateQueryFromObject(query: object): string {\n try {\n let queryString: string = ''\n\n Object.entries(query)\n .forEach(([key, value]: any) => {\n if (queryString.length > 0) {\n queryString += '&'\n }\n \n queryString += `${key}=${value}`\n })\n\n return queryString\n } catch (exception) {\n return ''\n }\n }\n\n protected service_baseService_multipartFormDataHeader(): object {\n return {\n 'Content-Type': 'multipart/form-data'\n }\n }\n}","import Component, { mixins } from 'vue-class-component';\n\nimport { AxiosError, AxiosResponse } from \"axios\";\n\nimport { STORE_ACTIONS } from '@/store';\nimport EventBus from '@/EventBus';\n\nimport IInscriptionLieuExamenInformations from \"./IInscriptionLieuExamenInformations.model\";\nimport IDossierEtudiant from './IDossierEtudiant.model';\nimport IOverviewInscriptionOffreCours from './overview/IOverviewInscriptionOffreCours.model';\nimport ITypeInscriptionLieuExamen, { SLUGS as ITypeInscriptionLieuExamen_SLUGS } from './ITypeInscriptionLieuExamen.model'\nimport IFormInscriptionOffreCours from './form/IFormInscriptionOffreCours.model';\n\nimport BaseService from '../global/base/Base.service';\n\nexport enum EVENTS {\n AFTER_UPDATE = 'update:after'\n}\n\nexport interface IUpdateInscriptionLieuExamenRequestPayload {\n idInscriptionLieuExamen: number;\n idTypeInscriptionLieuExamen: number;\n slugTypeInscriptionLieuExamen: ITypeInscriptionLieuExamen_SLUGS;\n idVille: number | null;\n paysRepondant: string | null;\n villeRepondant: string | null;\n}\n\n@Component\nexport default class InscriptionLieuExamenService extends mixins(BaseService) {\n protected service_inscriptionLieuExamenService_fetchInformations(): Promise {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.get('/api/inscriptions-lieu-examen/informations')\n .then((response: AxiosResponse) => {\n const informations: IInscriptionLieuExamenInformations = response.data.data\n\n this.$store.dispatch(STORE_ACTIONS.INSCRIPTION_LIEU_EXAMEN_STORE_INFORMATIONS, informations)\n\n resolve(informations)\n }).catch((error: AxiosError) => this.service_base_defaultErrorHandler(error, reject))\n })\n }\n\n protected service_inscriptionLieuExamenService_fetchDossierEtudiant(token: string): Promise {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.get(`/api/inscriptions-lieu-examen/dossier/${token}`)\n .then((response: AxiosResponse) => {\n const dossierEtudiant: IDossierEtudiant = response.data.data\n\n this.$store.dispatch(STORE_ACTIONS.INSCRIPTION_LIEU_EXAMEN_STORE_DOSSIER_ETUDIANT, dossierEtudiant)\n\n resolve(dossierEtudiant)\n }).catch((error: AxiosError) => this.service_base_defaultErrorHandler(error, reject))\n })\n }\n\n protected service_inscriptionLieuExamenService_fetchOverviewInscriptionsOffreCours(token: string): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.get(`/api/inscriptions-lieu-examen/dossier/${token}/apercu-inscriptions`)\n .then((response: AxiosResponse) => {\n resolve(response.data.data.inscriptionsOffreCours)\n }).catch((error: AxiosError) => this.service_base_defaultErrorHandler(error, reject))\n })\n }\n\n protected service_inscriptionLieuExamenService_fetchTypesInscriptionsOffreCours(): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n this.$store.dispatch(STORE_ACTIONS.INSCRIPTION_LIEU_EXAMEN_UPDATE_TYPE_INSCRIPTION_LIEU_EXAMEN_LOADING_STATE, true)\n\n this.$axios.get(`/api/inscriptions-lieu-examen/types-inscription-lieu-examen`)\n .then((response: AxiosResponse) => {\n const typesInscriptionLieuExamen: Array = response.data.data.typeInscriptionLieuExamen\n\n this.$store.dispatch(STORE_ACTIONS.INSCRIPTION_LIEU_EXAMEN_STORE_TYPES_INSCRIPTION_LIEU_EXAMEN, typesInscriptionLieuExamen)\n\n resolve(typesInscriptionLieuExamen)\n }).catch((error: AxiosError) => this.service_base_defaultErrorHandler(error, reject))\n .finally(() => {\n this.$store.dispatch(STORE_ACTIONS.INSCRIPTION_LIEU_EXAMEN_UPDATE_TYPE_INSCRIPTION_LIEU_EXAMEN_LOADING_STATE, false)\n })\n })\n }\n\n protected service_inscriptionLieuExamenService_fetchFormInscriptionsOffreCours(token: string): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.get(`/api/inscriptions-lieu-examen/dossier/${token}/formulaire-inscriptions`)\n .then((response: AxiosResponse) => {\n resolve([\n ...response.data.data.inscriptionsOffreCours,\n ...response.data.data.casSpeciaux\n ])\n }).catch((error: AxiosError) => this.service_base_defaultErrorHandler(error, reject))\n })\n }\n\n protected service_inscriptionLieuExamenService_saveInscriptionsAsToutCampus(token: string): Promise {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.post(`/api/inscriptions-lieu-examen/dossier/${token}/sauvegarde-inscriptions/campus-ul`)\n .then(() => resolve())\n .catch((error: AxiosError) => this.service_base_defaultErrorHandler(error, reject))\n })\n }\n\n protected service_inscriptionLieuExamenService_saveFormInscriptionsOffreCours(\n token: string,\n requestPayload: Array\n ): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.put(`/api/inscriptions-lieu-examen/dossier/${token}/sauvegarde-inscriptions`, {\n inscriptionsLieuExamen: requestPayload\n }).then((response: AxiosResponse) => {\n EventBus.$emit(EVENTS.AFTER_UPDATE)\n resolve(response.data.data.inscriptionsOffreCours)\n }).catch((error: AxiosError) => reject(error))\n })\n }\n}","import Component, { mixins } from 'vue-class-component'\n\nimport { AxiosError, AxiosResponse } from 'axios';\nimport HttpStatusCode from 'http-status-codes'\n\nimport WithRender from './App.html'\n\nimport { \n MDialog,\n MDialogState,\n MDialogWidth\n} from '@ulaval/modul-components';\n\nimport InscriptionLieuExamenService from '@/modules/inscription-lieu-examen/InscriptionLieuExamen.service';\n\nimport Localization from '@/localization';\nimport ROUTES from './router/ROUTES';\nimport { generateLocalizedRouteName } from '@/router/helpers';\nimport { STORE_ACTIONS, STORE_GETTERS } from './store';\nimport { Watch } from 'vue-property-decorator';\nimport { LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN, LOCAL_STORAGE_KEY_TOKEN } from './modules/global/user-session/UserSession.store';\n\nconst HTTP_STATUS_TO_REDIRECT: string[] = [\n HttpStatusCode.INTERNAL_SERVER_ERROR.toString(),\n HttpStatusCode.FORBIDDEN.toString(),\n HttpStatusCode.UNAUTHORIZED.toString()\n]\n\n@WithRender\n@Component({\n components: {\n MDialog\n }\n})\nexport default class App extends mixins(InscriptionLieuExamenService) {\n private isDialogMessageImportantActive: boolean = false\n private readonly MDialogState: object = MDialogState\n private readonly MDialogWidth: object = MDialogWidth\n \n private get messageImportantGlobal(): string | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_MESSAGE_IMPORTANT]\n }\n\n @Watch('messageImportantGlobal')\n private onMessageImportantGlobalChange(): void {\n this.isDialogMessageImportantActive = !!this.messageImportantGlobal\n }\n \n private created(): void {\n this.$store.dispatch(STORE_ACTIONS.SESSION_STORE_SYNCHRONISE_WITH_LOCAL_STORAGE)\n this.fetchInformations()\n this.setAxiosBasicHeaders()\n this.updateStudentTokenLocalStorage()\n }\n\n private mounted(): void {\n document.title = this.$i18next.t('localization.main.website_title')\n this.$store.dispatch(STORE_ACTIONS.SESSION_STORE_SYNCHRONISE_WITH_LOCAL_STORAGE)\n this.setAxiosBasicHeaders()\n }\n\n private updated(): void {\n this.setAxiosBasicHeaders()\n this.updateStudentTokenLocalStorage()\n }\n\n private setAxiosBasicHeaders(): void {\n const sessionToken: string | null = localStorage.getItem(LOCAL_STORAGE_KEY_AUTHORIZATION_TOKEN)\n\n if (sessionToken) {\n this.$axios.defaults.headers.common.Authorization = `Bearer ${sessionToken}`\n }\n }\n\n private fetchInformations(): void {\n this.service_inscriptionLieuExamenService_fetchInformations()\n }\n\n private updateStudentTokenLocalStorage(): void {\n const token: string = this.$route.params.token\n\n if (token) {\n localStorage.setItem(LOCAL_STORAGE_KEY_TOKEN, token)\n }\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './NavigationBar.html'\n\n@WithRender\n@Component({})\nexport default class NavigationBar extends mixins() {}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './DefaultLayout.html'\n\nimport { MErrorResourceUnavailable } from '@ulaval/modul-components'\n\nimport NavigationBar from '@/modules/global/navigation-bar/NavigationBar'\n\n@WithRender\n@Component({\n components: {\n MErrorResourceUnavailable,\n NavigationBar\n }\n})\nexport default class DefaultLayout extends mixins() {}\n","import Component, { mixins } from \"vue-class-component\";\n\nimport { AxiosError, AxiosResponse } from \"axios\";\nimport store, { STORE_ACTIONS } from \"@/store\";\nimport { LOCAL_STORAGE_KEY_TOKEN } from \"../global/user-session/UserSession.store\";\n\nexport interface IAuthenticateRequestPayload {\n username: string;\n password: string;\n}\n\nexport interface IAuthenticateRequestResponse {\n token: string;\n 'jwt-etudiant': string;\n}\n\n@Component\nexport default class AuthenticationService extends mixins() {\n protected service_authenticationService_authenticate(requestPayload: IAuthenticateRequestPayload): Promise {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.post('/api/gateway/inscriptions-lieu-examen/authentification', requestPayload)\n .then((response: AxiosResponse) => {\n const data: IAuthenticateRequestResponse = response.data.data\n\n store.dispatch(STORE_ACTIONS.SESSION_STORE_LOGIN, data[\"jwt-etudiant\"])\n localStorage.setItem(LOCAL_STORAGE_KEY_TOKEN, data['token'])\n\n resolve(data)\n }).catch((error: AxiosError) => reject(error))\n })\n }\n}","import { RouteConfig } from \"vue-router\";\nimport { RouteConfigSingleView } from \"vue-router/types/router\";\n\nimport Localization, { LOCALES } from '@/localization'\n\nconst ROUTE_LOCALE_DELIMITER: string = '|'\n\nexport const LOCAL_STORAGE_LOGIN_REMEMBERED_ROUTE: string = 'login-remebered-route'\n\nexport interface ILocalizedRouteParameters {\n name: string;\n locale: LOCALES;\n}\n\nexport function generateLocalizedRouteName(parameters: ILocalizedRouteParameters): string {\n return `${parameters.name}${ROUTE_LOCALE_DELIMITER}${parameters.locale}`\n}\n\nexport function extractLocalizedRouteParameters(name: string): ILocalizedRouteParameters {\n const routeParameters: string[] = name.split(ROUTE_LOCALE_DELIMITER)\n\n return {\n name: routeParameters[0],\n locale: routeParameters[1] as LOCALES\n }\n}\n\nfunction generateLocalizedRoutePath(name: string, locale: LOCALES = LOCALES.FR): string {\n return Localization.i18next.t(`router.routes.${name}`, { lng: locale })\n}\n\nfunction localizeRouteConfigChildrenRecursive(childrens: Array | undefined, locale: LOCALES = LOCALES.FR): Array | undefined {\n if (!childrens) {\n return undefined\n }\n\n return childrens.reduce((routes: Array, children: RouteConfig) => {\n return [\n ...routes,\n {\n name: generateLocalizedRouteName({\n name: children.name as string,\n locale\n }),\n path: generateLocalizedRoutePath(children.name as string, locale),\n component: (children as RouteConfigSingleView).component,\n meta: {\n ...children.meta,\n locale\n },\n children: localizeRouteConfigChildrenRecursive(children.children, locale)\n } as RouteConfig\n ]\n }, [])\n}\n\nfunction localizeRouteConfig(config: RouteConfig): Array {\n return Object.values(Localization.LOCALES).reduce((routes: Array, locale: LOCALES) => {\n return [\n ...routes,\n {\n name: generateLocalizedRouteName({\n name: config.name as string,\n locale\n }),\n path: generateLocalizedRoutePath(config.name as string, locale),\n component: (config as RouteConfigSingleView).component,\n meta: {\n ...config.meta,\n locale\n },\n children: localizeRouteConfigChildrenRecursive(config.children, locale)\n } as RouteConfig\n ]\n }, [])\n}\n\nexport default function localizeRouteConfigs(originalRoutes: Array): Array {\n return originalRoutes.reduce((routes: Array, route: RouteConfig) => {\n return [\n ...routes,\n ...localizeRouteConfig(route)\n ]\n }, [])\n}","import Component, { mixins } from 'vue-class-component'\n\nimport HttpStatusCode from 'http-status-codes'\n\nimport WithRender from './AuthenticationForm.html'\n\nimport { \n AbstractControl,\n FormControl,\n FormGroup,\n MButton, \n MButtonType,\n MForm,\n MMessage,\n MTextfield, \n MTextfieldType,\n MTooltip,\n RequiredValidator\n} from '@ulaval/modul-components'\n\nimport AuthenticationService, { IAuthenticateRequestResponse } from '@/modules/authentication/Authentication.service';\n\nimport ROUTES from '@/router/ROUTES';\nimport { AxiosError } from 'axios';\nimport { LOCAL_STORAGE_LOGIN_REMEMBERED_ROUTE } from '@/router/helpers';\n\n@WithRender\n@Component({\n components: {\n MButton,\n MForm,\n MMessage,\n MTextfield,\n MTooltip\n }\n})\nexport default class AuthenticationForm extends mixins(AuthenticationService) {\n public formGroup: FormGroup = new FormGroup({\n username: new FormControl([\n RequiredValidator()\n ]),\n password: new FormControl([RequiredValidator()])\n })\n private isAuthenticationLoadingStateActive: boolean = false\n private requestErrors: { [key: string]: boolean } = {}\n\n private readonly MTextfieldType: object = MTextfieldType\n private readonly MButtonType: object = MButtonType\n private readonly AUTHENTICATION_LOADING_STATE_TIMEOUT: number = 500\n private readonly ERROR_KEY_INVALID_CREDENTIALS: string = 'invalid_credentials'\n private readonly ERROR_KEY_STUDENT_NOT_FOUND: string = 'studentNotFound'\n\n private get usernameField(): AbstractControl {\n return this.formGroup.getControl('username');\n }\n private get passwordField(): AbstractControl {\n return this.formGroup.getControl('password');\n }\n\n private authenticate(): void {\n const authenticationLoadingStateTimeout: NodeJS.Timeout = setTimeout(() => {\n this.isAuthenticationLoadingStateActive = true\n }, this.AUTHENTICATION_LOADING_STATE_TIMEOUT)\n\n this.service_authenticationService_authenticate({\n username: this.usernameField.value,\n password: this.passwordField.value\n }).then((response: IAuthenticateRequestResponse) => {\n const rememberedRoute: string | null = localStorage.getItem(LOCAL_STORAGE_LOGIN_REMEMBERED_ROUTE)\n\n if (rememberedRoute) {\n this.$router.push({\n path: rememberedRoute\n })\n localStorage.removeItem(LOCAL_STORAGE_LOGIN_REMEMBERED_ROUTE)\n } else {\n this.mixin_router_navigate({\n name: ROUTES.INSCRIPTION_ETUDIANT,\n params: {\n token: response.token\n }\n })\n }\n }).catch((error: AxiosError) => {\n if (error.response && error.response.status.toString() === HttpStatusCode.NOT_FOUND.toString()) {\n this.requestErrors = {\n ...this.requestErrors,\n [this.ERROR_KEY_STUDENT_NOT_FOUND]: true\n }\n } else if (error.response && error.response.data && error.response.data.validation) {\n this.requestErrors = {\n ...this.requestErrors,\n ...error.response.data.validation\n }\n } else {\n this.requestErrors = {}\n }\n }).finally(() => {\n clearTimeout(authenticationLoadingStateTimeout)\n this.isAuthenticationLoadingStateActive = false\n })\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './LoginPage.html'\n\nimport { \n MPanel\n} from '@ulaval/modul-components'\n\nimport AuthenticationForm from '@/modules/authentication/form/AuthenticationForm'\n\nimport { STORE_GETTERS } from '@/store';\n\nimport IInscriptionLieuExamenInformations from '@/modules/inscription-lieu-examen/IInscriptionLieuExamenInformations.model';\n\n@WithRender\n@Component({\n components: {\n AuthenticationForm,\n MPanel\n }\n})\nexport default class LoginPage extends mixins() {\n private get inscriptionLieuExamenInformations(): IInscriptionLieuExamenInformations | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_INFORMATIONS]\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport HttpStatusCode from 'http-status-codes'\n\nimport WithRender from './ErrorPage.html'\n\nimport { \n MErrorAccessDenied,\n MErrorPageNotFound,\n MErrorResourceUnavailable,\n MErrorTechnicalDifficulty\n} from '@ulaval/modul-components'\nimport { STORE_GETTERS } from '@/store'\n\nimport IInscriptionLieuExamenInformations from '@/modules/inscription-lieu-examen/IInscriptionLieuExamenInformations.model'\nimport IDossierEtudiant from '@/modules/inscription-lieu-examen/IDossierEtudiant.model'\n\n@WithRender\n@Component({\n components: {\n MErrorAccessDenied,\n MErrorPageNotFound,\n MErrorResourceUnavailable,\n MErrorTechnicalDifficulty\n }\n})\nexport default class ErrorPage extends mixins() {\n private get dossierEtudiant(): IDossierEtudiant | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_DOSSIER_ETUDIANT]\n }\n\n private get inscriptionLieuExamenInformations(): IInscriptionLieuExamenInformations | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_INFORMATIONS]\n }\n\n private get token(): string {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_TOKEN]\n }\n\n private get status(): string {\n return this.$route.params.status ? \n this.$route.params.status.toString() : \n HttpStatusCode.SERVICE_UNAVAILABLE.toString()\n }\n\n private get errorPageComponent(): object {\n if (this.status) {\n if (this.status === HttpStatusCode.NOT_FOUND.toString()) {\n return MErrorPageNotFound\n } else if (\n this.status === HttpStatusCode.UNAUTHORIZED.toString() || \n this.status === HttpStatusCode.FORBIDDEN.toString()\n ) {\n return MErrorAccessDenied\n } else if (this.status === HttpStatusCode.INTERNAL_SERVER_ERROR.toString()) {\n return MErrorTechnicalDifficulty\n }\n }\n\n return MErrorResourceUnavailable\n }\n\n private get hints(): string[] {\n return this.$i18next.t(`modules.global.error.ErrorPage.status.${this.status}.hints`, { returnObjects: true })\n }\n\n private get links(): string [] {\n return [\n ...this.$i18next.t(`modules.global.error.ErrorPage.status.${this.status}.links`, { returnObjects: true }),\n ...this.$i18next.t(`modules.global.error.ErrorPage.global_links`, {\n returnObjects: true, \n 'dossierEtudiant': this.dossierEtudiant,\n 'inscriptionLieuExamenInformations': this.inscriptionLieuExamenInformations,\n 'token': this.token\n })\n ]\n }\n\n private get title(): string {\n return this.$i18next.t(`modules.global.error.ErrorPage.status.${this.status}.title`)\n }\n}\n","import Component, { mixins } from 'vue-class-component'\nimport { Watch } from 'vue-property-decorator'\n\nimport WithRender from './SessionSelect.html'\n\nimport { \n MDropdown,\n MDropdownItem,\n MTooltip\n} from '@ulaval/modul-components'\n\nimport ISessionDossierExamen from '@/modules/inscription-lieu-examen/IDossierEtudiant.model'\nimport IDossierEtudiant from '@/modules/inscription-lieu-examen/IDossierEtudiant.model'\n\nimport { STORE_GETTERS } from '@/store'\nimport ROUTES from '@/router/ROUTES'\nimport { extractLocalizedRouteParameters } from '@/router/helpers'\n\n@WithRender\n@Component({\n components: {\n MDropdown,\n MDropdownItem,\n MTooltip\n }\n})\nexport default class SessionSelect extends mixins() {\n private selectedSession: ISessionDossierExamen | null = null\n\n private get dossierEtudiant(): IDossierEtudiant | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_DOSSIER_ETUDIANT]\n }\n \n private get availableSessions(): Array {\n if (!this.dossierEtudiant) {\n return []\n }\n\n return this.dossierEtudiant.sessionsDossierExamen || []\n }\n\n private get hasAvailableSessions(): boolean {\n return this.availableSessions.length > 0\n }\n\n @Watch('dossierEtudiant', { immediate: true })\n private onDossierEtudiantChange(dossierEtudiant: IDossierEtudiant | null): void {\n if (dossierEtudiant) {\n this.setSelectedSessionFromDossierEtudiant(dossierEtudiant)\n }\n }\n\n @Watch('selectedSession')\n private onSelectedSessionChange(session: ISessionDossierExamen | null) {\n if (session && this.$route.params.token !== session.token) {\n this.mixin_router_navigate({\n name: ROUTES.INSCRIPTION_ETUDIANT,\n params: {\n ...this.$route.params,\n token: session.token\n },\n query: {\n ...this.$route.query,\n 'code-session': session.codeSession\n }\n })\n }\n }\n\n private setSelectedSessionFromDossierEtudiant(dossierEtudiant: IDossierEtudiant): void {\n const matchingSession: ISessionDossierExamen | undefined = this.availableSessions.find((session: ISessionDossierExamen) => {\n return session.codeSession === dossierEtudiant.session.codeSession\n })\n\n this.selectedSession = matchingSession || null\n\n if (matchingSession) {\n this.mixin_router_navigate({\n name: extractLocalizedRouteParameters(this.$route.name as string).name,\n params: this.$route.params,\n query: {\n ...this.$route.query,\n 'code-session': matchingSession.codeSession\n }\n })\n }\n }\n}\n","import { IInscriptionLieuExamenInformationsSession } from \"./IInscriptionLieuExamenInformations.model\";\n\nexport enum StatutInscription {\n INSCRIPTION_EN_ATTENTE = 'INSCRIPTION_EN_ATTENTE',\n INSCRIPTION_COMPLETEE = 'INSCRIPTION_COMPLETEE',\n INSCRIPTION_TERMINEE = 'INSCRIPTION_TERMINEE'\n}\n\nexport default interface ISessionDossierExamen {\n abreviation: string;\n annee: number;\n codeSession: string;\n dateDebut: string;\n dateLimiteInscriptionLieuExamen: string;\n saison: string;\n token: string;\n}\n\nexport default interface IDossierEtudiant {\n etudiant: {\n prenom: string;\n nom: string;\n nie: number;\n };\n horodateDerniereModification: string | null;\n afficherMessageMaterielPermis: boolean;\n afficherMessageCarteIdentite: boolean;\n statutInscription: StatutInscription;\n session: IInscriptionLieuExamenInformationsSession;\n afficherMessageContact: boolean;\n addresseContactAgente: string;\n sessionsDossierExamen: Array;\n gestionFicheRepondantDisponible: boolean;\n}","import Component, { mixins } from 'vue-class-component'\nimport { Watch } from 'vue-property-decorator'\n\nimport WithRender from './InscriptionLieuExamenPage.html'\n\nimport {\n MAccordionGroup,\n MAccordion,\n MButton,\n MButtonSkin,\n MIcon,\n MMessage,\n MMessageSkin,\n MMessageState,\n MPanel,\n MSpinner\n} from '@ulaval/modul-components'\n\nimport SessionSelect from '../global/session/SessionSelect'\n\nimport InscriptionLieuExamenService from './InscriptionLieuExamen.service'\n\nimport ROUTES from '@/router/ROUTES'\nimport { STORE_ACTIONS, STORE_GETTERS } from '@/store'\n\nimport IDossierEtudiant, { StatutInscription } from './IDossierEtudiant.model'\nimport IInscriptionLieuExamenInformations from './IInscriptionLieuExamenInformations.model'\n\n@WithRender\n@Component({\n components: {\n MAccordion,\n MAccordionGroup,\n MButton,\n MIcon,\n MMessage,\n MPanel,\n MSpinner,\n SessionSelect\n }\n})\nexport default class InscriptionLieuExamenPage extends mixins(InscriptionLieuExamenService) {\n private isDossierEtudiantLoadingStateActive: boolean = false\n\n private readonly MMessageState: object = MMessageState\n private readonly MMessageSkin: object = MMessageSkin\n private readonly MButtonSkin: object = MButtonSkin\n\n private get messageImportantGlobal(): string | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_MESSAGE_IMPORTANT]\n }\n\n private get dossierEtudiant(): IDossierEtudiant | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_DOSSIER_ETUDIANT]\n }\n\n private get inscriptionLieuExamenInformations(): IInscriptionLieuExamenInformations | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_INFORMATIONS]\n }\n\n @Watch('$route.params.token', { immediate: true })\n private onRouteParameterTokenChange(token: string | undefined): void {\n if (token) {\n this.loadDossierEtudiant(token)\n }\n\n this.$store.dispatch(STORE_ACTIONS.INSCRIPTION_LIEU_EXAMEN_STORE_UPDATE_TOKEN, token)\n }\n\n private loadDossierEtudiant(token: string): void {\n this.isDossierEtudiantLoadingStateActive = true\n\n this.service_inscriptionLieuExamenService_fetchDossierEtudiant(token)\n .then((response: IDossierEtudiant) => {\n switch (response.statutInscription) {\n case StatutInscription.INSCRIPTION_EN_ATTENTE:\n this.mixin_router_navigate({\n name: ROUTES.INSCRIPTION_ETUDIANT_APERCU,\n params: this.$route.params,\n query: this.$route.query\n })\n break;\n case StatutInscription.INSCRIPTION_COMPLETEE:\n case StatutInscription.INSCRIPTION_TERMINEE:\n this.mixin_router_navigate({\n name: ROUTES.INSCRIPTION_ETUDIANT_FORMULAIRE,\n params: this.$route.params,\n query: this.$route.query\n })\n break;\n default:\n throw new Error('Error in function InscriptionLieuExamenPage.loadDossierEtudiant. Invalid StatutInscription.')\n }\n }).finally(() => {\n this.isDossierEtudiantLoadingStateActive = false\n })\n }\n\n private onRedirectToMonPortailButtonClick(): void {\n if (this.inscriptionLieuExamenInformations) {\n window.location.href = this.inscriptionLieuExamenInformations.monPortail.baseUrl\n }\n }\n\n private onDisplayGestionFicheRepondantButtonClick(): void {\n this.mixin_router_navigate({\n name: ROUTES.FICHE_REPONDANT_OVERVIEW,\n query: this.$route.query\n })\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './OverviewInscriptionOffreCours.html'\n\nimport {\n MButton,\n MMessage,\n MMessageState,\n MModal,\n MModalSize,\n MPanel,\n MSpinner,\n MSwitch\n} from '@ulaval/modul-components'\n\nimport InscriptionLieuExamenService from '../InscriptionLieuExamen.service'\n\nimport ROUTES from '@/router/ROUTES'\nimport { STORE_GETTERS } from '@/store'\n\nimport IOverviewInscriptionOffreCours from './IOverviewInscriptionOffreCours.model'\nimport IInscriptionLieuExamenInformations from '../IInscriptionLieuExamenInformations.model'\nimport IDossierEtudiant from '../IDossierEtudiant.model'\n\n@WithRender\n@Component({\n components: {\n MButton,\n MMessage,\n MModal,\n MPanel,\n MSpinner,\n MSwitch\n }\n})\nexport default class OverviewInscriptionOffreCours extends mixins(InscriptionLieuExamenService) {\n private inscriptionsOffreCours: Array = []\n private isInscriptionsLieuExamenTousCampus: boolean = false\n\n private isOverviewInscriptionsOffreCoursLoadingStateActive: boolean = false\n private isTousCampusButtonLoadingStateActive: boolean = false\n\n private readonly MMessageState: object = MMessageState\n private readonly MModalSize: object = MModalSize\n\n private get dossierEtudiant(): IDossierEtudiant | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_DOSSIER_ETUDIANT]\n }\n\n private get inscriptionLieuExamenInformations(): IInscriptionLieuExamenInformations | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_INFORMATIONS]\n }\n\n private get isNextStepFormAvailable(): boolean {\n return !!(this.inscriptionLieuExamenInformations) && \n !this.isOverviewInscriptionsOffreCoursLoadingStateActive &&\n this.inscriptionsOffreCours.length > 0\n }\n\n private created(): void {\n this.loadOverviewInscriptionsOffreCours()\n }\n\n private loadOverviewInscriptionsOffreCours(): void {\n this.isOverviewInscriptionsOffreCoursLoadingStateActive = true\n\n this.service_inscriptionLieuExamenService_fetchOverviewInscriptionsOffreCours(this.$route.params.token)\n .then((response: Array) => {\n this.inscriptionsOffreCours = response || []\n }).catch(() => {\n this.inscriptionsOffreCours = []\n }).finally(() => {\n this.isOverviewInscriptionsOffreCoursLoadingStateActive = false\n })\n }\n\n private onTousCampusButtonClick(): void {\n this.isTousCampusButtonLoadingStateActive = true\n\n this.service_inscriptionLieuExamenService_saveInscriptionsAsToutCampus(this.$route.params.token)\n .then(() => {\n this.navigateToNextStep()\n }).finally(() => {\n this.isTousCampusButtonLoadingStateActive = false\n })\n }\n\n private onNextStepButtonClick(): void {\n this.navigateToNextStep()\n }\n\n private navigateToNextStep(): void {\n this.mixin_router_navigate({\n name: ROUTES.INSCRIPTION_ETUDIANT_FORMULAIRE,\n params: this.$route.params\n })\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './LocationSvg.html'\n\n@WithRender\n@Component\nexport default class LocationSvg extends mixins() {}\n","export enum SLUGS {\n CAMPUS_UL = 'campus-ul',\n CENTRE_EXAMEN = 'centre',\n REPONDANT = 'repondant'\n}\n\nexport default interface ITypeInscriptionLieuExamen {\n abreviation: string;\n createdAt: string;\n createdBy: string;\n createdByFullName: string;\n description: string;\n id: number;\n isActif: boolean;\n nom: string;\n slug: string;\n updatedAt: string;\n updatedBy: string;\n updatedByFullName: string;\n version: number;\n}","import Component, { mixins } from 'vue-class-component'\nimport { Prop, Watch } from 'vue-property-decorator'\n\nimport WithRender from './InscriptionLieuExamenForm.html'\n\nimport { \n AbstractControl,\n ControlValidator,\n ControlValidatorValidationType,\n FormControl,\n FormGroup,\n MButton,\n MButtonSkin,\n MDialog,\n MDialogState,\n MDialogWidth,\n MDropdown,\n MDropdownItem,\n MForm,\n MIcon,\n MMessage,\n MMessageSkin,\n MMessageState,\n MProgress,\n MRadio,\n MRadioGroup,\n MTextfield,\n RequiredValidator,\n} from '@ulaval/modul-components'\n\nimport LocationSvg from '@/modules/global/media/svg/location/LocationSvg'\n\nimport IFormInscriptionLieuExamen, { IConflitHoraireInscriptionLieuExamen } from './IFormInscriptionLieuExamen.model'\nimport ITypeInscriptionLieuExamen, { SLUGS as ITypeInscriptionLieuExamen_SLUGS } from '../ITypeInscriptionLieuExamen.model'\nimport { ICity } from '@/modules/global/localization/city/ICity.model'\nimport { ICountry } from '@/modules/global/localization/country/ICountry.model'\nimport { StatutInscription } from '../IDossierEtudiant.model';\n\nimport { STORE_GETTERS } from '@/store'\n\nimport EventBus from '@/EventBus'\n\nimport { IUpdateInscriptionLieuExamenRequestPayload, EVENTS as InscriptionLieuExamenService_EVENTS } from '../InscriptionLieuExamen.service'\nimport ROUTES from '@/router/ROUTES'\n\nexport enum EVENTS {\n UPDATE_TYPE_INSCRIPTION_LIEU_EXAMEN = 'update:type-inscription-lieu-examen',\n UPDATE_INSCRIPTION_LIEU_EXAMEN = 'update-inscription-lieu-examen'\n}\n\nexport interface IUpdateTypeInscriptionLieuExamen {\n identifier: number;\n}\n\nexport interface IUpdateInscriptionLieuExamen {\n identifier: number;\n stateChanged: boolean;\n component: InscriptionLieuExamenForm;\n}\n\n@WithRender\n@Component({\n components: {\n LocationSvg,\n MButton,\n MDialog,\n MDropdown,\n MDropdownItem,\n MForm,\n MIcon,\n MMessage,\n MProgress,\n MRadio,\n MRadioGroup,\n MTextfield\n }\n})\nexport default class InscriptionLieuExamenForm extends mixins() {\n public formGroup: FormGroup = new FormGroup({\n 'centreExamenDisabled': new FormControl([])\n })\n private stateChanged: boolean = false\n private isRepondantInformationsModalOpen: boolean = false\n private typeInscriptionLieuExamenInMemory: number | null = null\n\n private readonly ITypeInscriptionLieuExamen_SLUGS: any = ITypeInscriptionLieuExamen_SLUGS\n private readonly MMessageState: object = MMessageState\n private readonly MMessageSkin: object = MMessageSkin\n private readonly MDialogState: object = MDialogState\n private readonly MDialogWidth: object = MDialogWidth\n private readonly MButtonSkin: object = MButtonSkin\n private readonly StatutInscription: object = StatutInscription\n private readonly VALIDATOR_KEY_VILLE_ALIAS: string = 'validation[ville-alias]'\n\n @Prop({ required: true })\n private inscriptionLieuExamen!: IFormInscriptionLieuExamen\n\n private get articleClasses(): object {\n if (!this.inscriptionLieuExamen) {\n return {}\n }\n\n return {\n 'inscription-lieu-examen-form--disabled': this.inscriptionLieuExamen.isDesactiver,\n 'inscription-lieu-examen-form--timestamp-not-published': !this.inscriptionLieuExamen.horodateCampus && !this.inscriptionLieuExamen.horodateHorsCampus\n }\n }\n\n private get typesInscriptionLieuExamen(): Array {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_TYPES_INSCRIPTION_LIEU_EXAMEN] || []\n }\n\n private get typesInscriptionLieuExamenBySlug(): { [key: string]: ITypeInscriptionLieuExamen } {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_TYPES_INSCRIPTION_LIEU_EXAMEN_BY_SLUG] || []\n }\n\n private get isTypeInscriptionLieuExamenLoadingStateActive(): boolean {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_IS_TYPE_INSCRIPTION_LIEU_EXAMEN_LOADING_STATE_ACTIVE]\n }\n\n private get cities(): Array {\n return this.$store.getters[STORE_GETTERS.CITY_GET_CITIES] || []\n }\n\n private get citiesNames(): Array {\n return this.$store.getters[STORE_GETTERS.CITY_GET_CITIES_NAMES] || []\n }\n\n private get countries(): Array {\n return this.$store.getters[STORE_GETTERS.COUNTRY_GET_COUNTRIES]\n }\n\n public get identifier(): number {\n return this.inscriptionLieuExamen ? this.inscriptionLieuExamen.id || -1 : -1\n }\n\n private get isFormAvailable(): boolean {\n if (!this.inscriptionLieuExamen) {\n return false\n }\n\n return !this.inscriptionLieuExamen.isDesactiver &&\n (\n this.inscriptionLieuExamen.statutInscription === StatutInscription.INSCRIPTION_EN_ATTENTE || \n this.inscriptionLieuExamen.statutInscription === StatutInscription.INSCRIPTION_COMPLETEE\n )\n }\n\n public get typeInscriptionLieuExamenField(): AbstractControl | undefined {\n try {\n return this.formGroup.getControl('typeInscriptionLieuExamen');\n } catch (error) {\n return undefined\n }\n }\n\n public get centreExamenDropdown(): AbstractControl | undefined {\n try {\n return this.formGroup.getControl('centreExamen');\n } catch (error) {\n return undefined\n }\n }\n\n public get centreExamenDisabledDropdown(): AbstractControl | undefined {\n try {\n return this.formGroup.getControl('centreExamenDisabled');\n } catch (error) {\n return undefined\n }\n }\n\n public get villeRepondantField(): AbstractControl | undefined {\n try {\n return this.formGroup.getControl('villeRepondant');\n } catch (error) {\n return undefined\n }\n }\n\n public get paysRepondantDropdown(): AbstractControl | undefined {\n try {\n return this.formGroup.getControl('paysRepondant');\n } catch (error) {\n return undefined\n }\n }\n\n private get villeRepondantFieldErrorMessage(): string | undefined {\n if (this.villeRepondantField) {\n for (const city of this.cities) {\n if (\n !city.nom.localeCompare(this.villeRepondantField.value, undefined, { sensitivity: 'base' }) ||\n this.cityAliasContainsValue(city, this.villeRepondantField.value)\n ) {\n return city.dossierExamenValidationAliasMessage\n }\n }\n }\n\n return undefined\n }\n\n @Watch('typeInscriptionLieuExamenField.value', { immediate: true })\n @Watch('typesInscriptionLieuExamenBySlug')\n private async onTypeInscriptionLieuExamenFieldChange(): Promise {\n EventBus.$emit(EVENTS.UPDATE_TYPE_INSCRIPTION_LIEU_EXAMEN, {\n identifier: this.identifier\n } as IUpdateTypeInscriptionLieuExamen )\n\n if (this.isFormAvailable) {\n if (!this.formGroup.containsControl('typeInscriptionLieuExamen')) {\n this.formGroup.addControl('typeInscriptionLieuExamen', new FormControl([RequiredValidator()]))\n }\n \n if (Object.keys(this.typesInscriptionLieuExamenBySlug).length > 0) {\n switch (this.typeInscriptionLieuExamenField && this.typeInscriptionLieuExamenField.value) {\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.CAMPUS_UL].id:\n if (this.typeInscriptionLieuExamenField) {\n this.typeInscriptionLieuExamenInMemory = this.typeInscriptionLieuExamenField.value\n }\n\n this.formGroup.removeControl('centreExamen')\n this.formGroup.removeControl('paysRepondant')\n this.formGroup.removeControl('villeRepondant')\n\n if (!this.formGroup.containsControl('centreExamenDisabled')) {\n this.formGroup.addControl('centreExamenDisabled', new FormControl([]))\n }\n\n break\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.CENTRE_EXAMEN].id:\n if (this.typeInscriptionLieuExamenField) {\n this.typeInscriptionLieuExamenInMemory = this.typeInscriptionLieuExamenField.value\n }\n\n this.formGroup.removeControl('centreExamenDisabled')\n this.formGroup.removeControl('paysRepondant')\n this.formGroup.removeControl('villeRepondant')\n\n this.formGroup.addControl('centreExamen', new FormControl([RequiredValidator()]))\n\n break\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.REPONDANT].id:\n this.formGroup.removeControl('centreExamen')\n\n this.formGroup.addControl('paysRepondant', new FormControl([RequiredValidator()]))\n this.formGroup.addControl('villeRepondant', new FormControl([\n RequiredValidator(),\n {\n key: this.VALIDATOR_KEY_VILLE_ALIAS,\n validationType: ControlValidatorValidationType.OnGoing,\n error: {\n message: this.villeRepondantFieldErrorMessage as string\n },\n validationFunction: this.villeRepondantCityNameValidator\n }\n ]))\n if (!this.formGroup.containsControl('centreExamenDisabled')) {\n this.formGroup.addControl('centreExamenDisabled', new FormControl([]))\n }\n \n break\n default:\n break\n }\n }\n }\n }\n\n @Watch('inscriptionLieuExamen', { immediate: true })\n private onInscriptionLieuExamenChange(): void {\n if (this.typeInscriptionLieuExamenField && this.inscriptionLieuExamen.situation.idTypeInscriptionLieuExamen) {\n if (this.inscriptionLieuExamen.statutInscription !== StatutInscription.INSCRIPTION_EN_ATTENTE) {\n this.typeInscriptionLieuExamenField.value = this.inscriptionLieuExamen.situation.idTypeInscriptionLieuExamen\n }\n }\n }\n\n @Watch('centreExamenDropdown', { immediate: true })\n private onCentreExamenDropdownChange(): void {\n this.$nextTick()\n .then(() => {\n if (this.centreExamenDropdown && this.inscriptionLieuExamen.situation.idVille) {\n this.centreExamenDropdown.value = this.inscriptionLieuExamen.situation.idVille\n }\n })\n }\n\n @Watch('villeRepondantField', { immediate: true })\n private onVilleRepondantFieldChange(): void {\n this.$nextTick()\n .then(() => {\n if (this.villeRepondantField && this.inscriptionLieuExamen.situation.villeRepondant) {\n this.villeRepondantField.value = this.inscriptionLieuExamen.situation.villeRepondant\n }\n })\n }\n\n @Watch('paysRepondantDropdown', { immediate: true })\n private onPaysRepondantDropdownChange(): void {\n this.$nextTick()\n .then(() => {\n if (this.paysRepondantDropdown && this.inscriptionLieuExamen.situation.paysRepondant) {\n this.paysRepondantDropdown.value = this.inscriptionLieuExamen.situation.paysRepondant\n }\n })\n }\n\n private mounted(): void {\n this.afterInscriptionLieuExamenUpdate()\n }\n\n private afterInscriptionLieuExamenUpdate(): void {\n EventBus.$on(InscriptionLieuExamenService_EVENTS.AFTER_UPDATE, () => {\n this.stateChanged = false\n })\n }\n\n public getFormData(): IUpdateInscriptionLieuExamenRequestPayload | undefined {\n if (this.typeInscriptionLieuExamenField) {\n switch (this.typeInscriptionLieuExamenField.value) {\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.CAMPUS_UL].id:\n return {\n idInscriptionLieuExamen: this.inscriptionLieuExamen.id,\n idTypeInscriptionLieuExamen: this.typeInscriptionLieuExamenField.value,\n slugTypeInscriptionLieuExamen: ITypeInscriptionLieuExamen_SLUGS.CAMPUS_UL,\n idVille: null,\n paysRepondant: null,\n villeRepondant: null\n } as IUpdateInscriptionLieuExamenRequestPayload\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.CENTRE_EXAMEN].id:\n return {\n idInscriptionLieuExamen: this.inscriptionLieuExamen.id,\n idTypeInscriptionLieuExamen: this.typeInscriptionLieuExamenField.value,\n slugTypeInscriptionLieuExamen: ITypeInscriptionLieuExamen_SLUGS.CENTRE_EXAMEN,\n idVille: this.centreExamenDropdown ? this.centreExamenDropdown.value || null : null,\n paysRepondant: null,\n villeRepondant: null\n } as IUpdateInscriptionLieuExamenRequestPayload\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.REPONDANT].id:\n return {\n idInscriptionLieuExamen: this.inscriptionLieuExamen.id,\n idTypeInscriptionLieuExamen: this.typeInscriptionLieuExamenField.value,\n slugTypeInscriptionLieuExamen: ITypeInscriptionLieuExamen_SLUGS.REPONDANT,\n idVille: null,\n paysRepondant: this.paysRepondantDropdown ? this.paysRepondantDropdown.value || null : null,\n villeRepondant: this.villeRepondantField ? this.villeRepondantField.value || null : null\n } as IUpdateInscriptionLieuExamenRequestPayload\n default:\n break\n }\n }\n\n return undefined\n }\n\n private onInscriptionLieuExamenUpdate(): void {\n this.stateChanged = false\n\n if (this.typeInscriptionLieuExamenField) {\n if (\n this.typeInscriptionLieuExamenField.value !== this.inscriptionLieuExamen.situation.idTypeInscriptionLieuExamen ||\n this.inscriptionLieuExamen.statutInscription === StatutInscription.INSCRIPTION_EN_ATTENTE\n ) {\n this.stateChanged = true\n }\n \n switch (this.typeInscriptionLieuExamenField.value) {\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.CAMPUS_UL].id:\n this.isRepondantInformationsModalOpen = false\n this.typeInscriptionLieuExamenInMemory = this.typeInscriptionLieuExamenField.value\n\n break\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.CENTRE_EXAMEN].id:\n this.isRepondantInformationsModalOpen = false\n this.typeInscriptionLieuExamenInMemory = this.typeInscriptionLieuExamenField.value\n\n if (this.centreExamenDropdown && this.centreExamenDropdown.value !== this.inscriptionLieuExamen.situation.idVille) {\n this.stateChanged = true\n }\n break\n case this.typesInscriptionLieuExamenBySlug[ITypeInscriptionLieuExamen_SLUGS.REPONDANT].id:\n this.isRepondantInformationsModalOpen = true\n\n if (\n (this.villeRepondantField && this.villeRepondantField.value !== this.inscriptionLieuExamen.situation.villeRepondant) ||\n (this.paysRepondantDropdown && this.paysRepondantDropdown.value !== this.inscriptionLieuExamen.situation.paysRepondant)\n ) {\n this.stateChanged = true\n }\n break\n default:\n break\n }\n }\n\n EventBus.$emit(EVENTS.UPDATE_INSCRIPTION_LIEU_EXAMEN, {\n identifier: this.inscriptionLieuExamen.id,\n stateChanged: this.stateChanged,\n component: this\n } as IUpdateInscriptionLieuExamen)\n }\n\n private generateConflitHoraireExamsLabel(inscriptionLieuExamen: IFormInscriptionLieuExamen): string {\n const examsLabel: Array = []\n\n this.inscriptionLieuExamen.conflitsHoraire.forEach((conflitHoraire: IConflitHoraireInscriptionLieuExamen) => {\n examsLabel.push(`${conflitHoraire.codeCours} ${conflitHoraire.sectionCours}`)\n })\n\n return examsLabel.join(', ')\n }\n\n private onInformationModalCancelButtonClick(): void {\n if (this.typeInscriptionLieuExamenField && this.typeInscriptionLieuExamenInMemory) {\n this.typeInscriptionLieuExamenField.value = this.typeInscriptionLieuExamenInMemory\n\n this.onInscriptionLieuExamenUpdate()\n }\n }\n\n private villeRepondantCityNameValidator(self: AbstractControl): boolean { \n for (const city of this.cities) {\n if (\n !city.nom.localeCompare(self.value.trim(), undefined, { sensitivity: 'base' }) ||\n this.cityAliasContainsValue(city, self.value)\n ) {\n if (this.villeRepondantField) {\n const matchingValidator: ControlValidator | undefined = this.villeRepondantField.validators.find((validator: ControlValidator) => validator.key === this.VALIDATOR_KEY_VILLE_ALIAS)\n\n if (matchingValidator) {\n matchingValidator.error.message = city.dossierExamenValidationAliasMessage\n }\n }\n return false\n }\n }\n\n return true\n }\n\n private cityAliasContainsValue(city: ICity, value: string): boolean {\n for (const alias of city.alias) {\n if (!alias.localeCompare(value.trim(), undefined, { sensitivity: 'base' })) {\n return true\n }\n }\n\n return false\n }\n\n private onDisplayGestionFicheRepondantButtonClick(): void {\n this.mixin_router_navigate({\n name: ROUTES.FICHE_REPONDANT_OVERVIEW,\n query: this.$route.query\n })\n }\n}\n","import Component, { mixins } from 'vue-class-component'\nimport { Prop, Ref } from 'vue-property-decorator'\n\nimport WithRender from './InscriptionOffreCoursPanel.html'\n\nimport { \n MPanel\n} from '@ulaval/modul-components'\n\nimport InscriptionLieuExamenForm from '@/modules/inscription-lieu-examen/form/InscriptionLieuExamenForm'\n\nimport IFormInscriptionOffreCours from './IFormInscriptionOffreCours.model'\nimport IFormInscriptionLieuExamen from './IFormInscriptionLieuExamen.model'\n\nconst REF_INSCRIPTION_LIEU_EXAMEN_FORM: string = 'inscription-lieu-examen-form'\n\n@WithRender\n@Component({\n components: {\n InscriptionLieuExamenForm,\n MPanel\n }\n})\nexport default class InscriptionOffreCoursPanel extends mixins() {\n private readonly REF_INSCRIPTION_LIEU_EXAMEN_FORM: string = REF_INSCRIPTION_LIEU_EXAMEN_FORM\n\n @Ref(REF_INSCRIPTION_LIEU_EXAMEN_FORM)\n public inscriptionLieuExamenFormComponents!: Array | InscriptionLieuExamenForm | null\n\n @Prop({ required: true })\n private inscriptionOffreCours!: IFormInscriptionOffreCours\n\n private get inscriptionLieuExamenList(): Array {\n if (this.inscriptionOffreCours.inscriptionsLieuExamen) {\n return this.inscriptionOffreCours.inscriptionsLieuExamen\n } else if (this.inscriptionOffreCours.examen) {\n return [this.inscriptionOffreCours.examen]\n }\n\n return []\n }\n}\n","import Component, { mixins } from 'vue-class-component';\n\nimport { AxiosError, AxiosResponse } from \"axios\";\n\nimport { STORE_ACTIONS } from '@/store';\n\nimport { ICountry } from './ICountry.model';\n\nimport BaseService from '../../base/Base.service';\n\n@Component\nexport default class CountryService extends mixins(BaseService) {\n protected service_countryService_fetchCountries(): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.get(`/api/inscriptions-lieu-examen/pays`)\n .then((response: AxiosResponse) => {\n const countries: Array = response.data.data.pays\n\n this.$store.dispatch(STORE_ACTIONS.COUNTRY_STORE_COUNTRIES, countries)\n\n resolve(countries)\n }).catch((error: AxiosError) => this.service_base_defaultErrorHandler(error, reject))\n })\n }\n}","import Component, { mixins } from 'vue-class-component';\n\nimport { AxiosError, AxiosResponse } from \"axios\";\n\nimport { STORE_ACTIONS } from '@/store';\n\nimport { ICity } from './ICity.model';\n\nimport BaseService from '../../base/Base.service';\n\n@Component\nexport default class CityService extends mixins(BaseService) {\n protected service_cityService_fetchCities(): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n this.$axios.get(`/api/inscriptions-lieu-examen/villes`)\n .then((response: AxiosResponse) => {\n const cities: Array = response.data.data.villes\n\n this.$store.dispatch(STORE_ACTIONS.CITY_STORE_CITIES, cities)\n\n resolve(cities)\n }).catch((error: AxiosError) => this.service_base_defaultErrorHandler(error, reject))\n })\n }\n}","import Component, { mixins } from 'vue-class-component'\nimport { Ref } from 'vue-property-decorator'\n\nimport WithRender from './FormInscriptionOffreCours.html'\n\nimport {\n FormGroup,\n MButton,\n MButtonSkin,\n MButtonType,\n MForm,\n MMessage,\n MMessageSkin,\n MMessageState,\n MModal,\n MSpinner,\n MToast,\n MToastPosition,\n MToastState\n} from '@ulaval/modul-components'\n\nimport InscriptionOffreCoursPanel from '@/modules/inscription-lieu-examen/form/InscriptionOffreCoursPanel'\nimport InscriptionLieuExamenForm, { EVENTS as InscriptionLieuExamenForm_EVENTS, IUpdateInscriptionLieuExamen, IUpdateTypeInscriptionLieuExamen } from '@/modules/inscription-lieu-examen/form/InscriptionLieuExamenForm'\n\nimport IFormInscriptionOffreCours from './IFormInscriptionOffreCours.model'\nimport IDossierEtudiant, { StatutInscription } from '../IDossierEtudiant.model'\nimport IFormInscriptionLieuExamen from './IFormInscriptionLieuExamen.model'\nimport { ICity } from '@/modules/global/localization/city/ICity.model'\n\nimport InscriptionLieuExamenService, { IUpdateInscriptionLieuExamenRequestPayload, EVENTS as InscriptionLieuExamenService_EVENTS } from '../InscriptionLieuExamen.service'\nimport CountryService from '@/modules/global/localization/country/Country.service'\nimport CityService from '@/modules/global/localization/city/City.service'\n\nimport EventBus from '@/EventBus'\n\nimport { STORE_GETTERS } from '@/store'\n\nconst REF_INSCRIPTION_OFFRE_COURS_PANEL: string = 'inscription-offre-cours-panel'\nconst REF_CONFIRMATION_DIALOG: string = 'confirmation-dialog'\n\n@WithRender\n@Component({\n components: {\n InscriptionOffreCoursPanel,\n MButton,\n MForm,\n MMessage,\n MModal,\n MSpinner,\n MToast\n }\n})\nexport default class FormInscriptionOffreCours extends mixins(CityService, CountryService, InscriptionLieuExamenService) {\n public formGroup: FormGroup = new FormGroup({})\n private inscriptionsOffreCours: Array = []\n private isFormInscriptionsOffreCoursLoadingStateActive: boolean = false\n private formIdsInError: number[] = []\n private formIdsStateChanged: number[] = []\n private isConfirmationDialogActive: boolean = false\n private isSaveFormInscriptionsOffreCoursLoadingStateActive: boolean = false\n private isSaveFormInscriptionsOffreCoursSuccessStateActive: boolean = false\n private isSaveFormInscriptionsOffreCoursErrorStateActive: boolean = false\n private requestPayloads: { [key: number]: IUpdateInscriptionLieuExamenRequestPayload } = {}\n\n private readonly MButtonSkin: object = MButtonSkin\n private readonly MButtonType: object = MButtonType\n private readonly MMessageSkin: object = MMessageSkin\n private readonly MMessageState: object = MMessageState\n private readonly MToastPosition: object = MToastPosition\n private readonly MToastState: object = MToastState\n private readonly REF_INSCRIPTION_OFFRE_COURS_PANEL: string = REF_INSCRIPTION_OFFRE_COURS_PANEL\n private readonly REF_CONFIRMATION_DIALOG: string = REF_CONFIRMATION_DIALOG\n private readonly StatutInscription: object = StatutInscription\n\n @Ref(REF_INSCRIPTION_OFFRE_COURS_PANEL)\n private inscriptionOffreCoursPanelComponents!: Array | InscriptionOffreCoursPanel | null\n\n @Ref(REF_CONFIRMATION_DIALOG)\n private confirmationDialogComponent!: MModal\n\n private get dossierEtudiant(): IDossierEtudiant | null {\n return this.$store.getters[STORE_GETTERS.INSCRIPTION_LIEU_EXAMEN_GET_DOSSIER_ETUDIANT]\n }\n\n private get citiesById(): { [key: number]: ICity } {\n return this.$store.getters[STORE_GETTERS.CITY_GET_CITIES_BY_ID] || {}\n }\n\n private get formErrorMessage(): string {\n return this.$i18next.t('modules.inscription-lieu-examen.form.FormInscriptionOffreCours.message.form_errors.content', {\n postProcess: 'interval',\n count: this.formIdsInError.length\n })\n }\n\n private get formStateChangeMessage(): string {\n return this.$i18next.t('modules.inscription-lieu-examen.form.FormInscriptionOffreCours.message.form_state_changed.content', {\n postProcess: 'interval',\n count: this.formIdsStateChanged.length\n })\n }\n\n private get isSubmitButtonDisabled(): boolean {\n return this.formIdsInError.length > 0 || this.formIdsStateChanged.length <= 0\n }\n\n private created(): void {\n this.loadTypesInscriptionLieuExamen()\n this.loadCountries()\n this.loadFormInscriptionsLieuExamen()\n this.loadCities()\n }\n\n private mounted(): void {\n this.onUpdateTypeInscriptionLieuExamen()\n this.onUpdateInscriptionLieuExamen()\n this.afterInscriptionLieuExamenUpdate()\n }\n\n private afterInscriptionLieuExamenUpdate(): void {\n EventBus.$on(InscriptionLieuExamenService_EVENTS.AFTER_UPDATE, () => {\n this.formIdsInError = []\n this.formIdsStateChanged = []\n })\n }\n\n private onUpdateTypeInscriptionLieuExamen(): void {\n EventBus.$on(InscriptionLieuExamenForm_EVENTS.UPDATE_TYPE_INSCRIPTION_LIEU_EXAMEN, (payload: IUpdateTypeInscriptionLieuExamen) => {\n if (payload && payload.identifier) {\n this.removeFormIdInError(payload.identifier)\n }\n })\n }\n\n private onUpdateInscriptionLieuExamen(): void {\n EventBus.$on(InscriptionLieuExamenForm_EVENTS.UPDATE_INSCRIPTION_LIEU_EXAMEN, (payload: IUpdateInscriptionLieuExamen) => {\n if (payload && payload.identifier) {\n if (payload.stateChanged) {\n if (!this.formIdsStateChanged.includes(payload.identifier)) {\n this.$set(this.formIdsStateChanged, this.formIdsStateChanged.length, payload.identifier)\n } \n } else {\n const index: number | undefined = this.formIdsStateChanged.findIndex((identifier: number) => identifier === payload.identifier)\n\n if (~index) {\n this.$delete(this.formIdsStateChanged, index)\n }\n }\n\n if (payload.component) {\n this.validateInscriptionLieuExamenForm(payload.component)\n }\n }\n })\n }\n\n private loadTypesInscriptionLieuExamen(): void {\n this.service_inscriptionLieuExamenService_fetchTypesInscriptionsOffreCours()\n }\n\n private loadCountries(): void {\n this.service_countryService_fetchCountries()\n }\n\n private loadCities(): void {\n this.service_cityService_fetchCities()\n }\n\n private loadFormInscriptionsLieuExamen(): void {\n this.isFormInscriptionsOffreCoursLoadingStateActive = true\n\n this.service_inscriptionLieuExamenService_fetchFormInscriptionsOffreCours(this.$route.params.token)\n .then((response: Array) => {\n this.inscriptionsOffreCours = response || []\n }).finally(() => {\n this.isFormInscriptionsOffreCoursLoadingStateActive = false\n })\n }\n\n private async onFormSubmit(): Promise {\n this.formGroup.waiting = true\n this.formIdsInError = []\n\n let components: Array = []\n const payloads: { [key: number]: IUpdateInscriptionLieuExamenRequestPayload } = {}\n\n if (this.inscriptionOffreCoursPanelComponents) {\n if (!Array.isArray(this.inscriptionOffreCoursPanelComponents)) {\n components = [this.inscriptionOffreCoursPanelComponents]\n } else {\n components = this.inscriptionOffreCoursPanelComponents\n }\n }\n\n for (let i: number = 0; i < components.length; i++) {\n const inscriptionOffreCoursPanelComponent: InscriptionOffreCoursPanel = components[i]\n\n let childComponents: Array = []\n\n if (inscriptionOffreCoursPanelComponent.inscriptionLieuExamenFormComponents) {\n if (!Array.isArray(inscriptionOffreCoursPanelComponent.inscriptionLieuExamenFormComponents)) {\n childComponents = [inscriptionOffreCoursPanelComponent.inscriptionLieuExamenFormComponents]\n } else {\n childComponents = inscriptionOffreCoursPanelComponent.inscriptionLieuExamenFormComponents\n }\n }\n \n for (let j: number = 0; j < childComponents.length; j++) {\n const inscriptionLieuExamenFormComponent: InscriptionLieuExamenForm = childComponents[j]\n const formData: IUpdateInscriptionLieuExamenRequestPayload | undefined = await this.validateInscriptionLieuExamenForm(inscriptionLieuExamenFormComponent)\n\n if (formData) {\n payloads[formData.idInscriptionLieuExamen] = formData\n }\n }\n }\n\n this.formGroup.waiting = false\n this.requestPayloads = payloads\n\n if (this.formIdsInError.length === 0) {\n this.openConfirmationDialog()\n }\n }\n\n private async validateInscriptionLieuExamenForm(component: InscriptionLieuExamenForm): Promise {\n if (!component) {\n return undefined\n }\n\n await component.formGroup.submit()\n\n if (await component.formGroup.hasErrorDeep()) {\n if (!this.formIdsInError.includes(component.identifier)) {\n this.$set(this.formIdsInError, this.formIdsInError.length, component.identifier)\n }\n } else {\n this.removeFormIdInError(component.identifier)\n\n const formData: IUpdateInscriptionLieuExamenRequestPayload | undefined = component.getFormData()\n\n if (formData) {\n return formData\n }\n }\n\n return undefined\n }\n\n private removeFormIdInError(id: number): void {\n const index: number | undefined = this.formIdsInError.findIndex((identifier: number) => identifier === id)\n\n if (~index) {\n this.$delete(this.formIdsInError, index)\n }\n }\n\n private updateInscriptionsLieuExamen(): void {\n this.isSaveFormInscriptionsOffreCoursLoadingStateActive = true\n\n this.service_inscriptionLieuExamenService_saveFormInscriptionsOffreCours(this.$route.params.token, Object.values(this.requestPayloads))\n .then((response: Array) => {\n this.inscriptionsOffreCours = response || []\n this.formIdsStateChanged = []\n\n this.isSaveFormInscriptionsOffreCoursSuccessStateActive = true\n this.isSaveFormInscriptionsOffreCoursErrorStateActive = false\n }).catch(() => {\n this.isSaveFormInscriptionsOffreCoursSuccessStateActive = false\n this.isSaveFormInscriptionsOffreCoursErrorStateActive = true\n }).finally(() => {\n this.isSaveFormInscriptionsOffreCoursLoadingStateActive = false\n })\n }\n\n private openConfirmationDialog(): void {\n this.isConfirmationDialogActive = true\n this.isSaveFormInscriptionsOffreCoursErrorStateActive = false\n this.isSaveFormInscriptionsOffreCoursLoadingStateActive = false\n this.isSaveFormInscriptionsOffreCoursSuccessStateActive = false\n }\n\n private closeConfirmationDialog(): void {\n this.confirmationDialogComponent.closeModal()\n }\n\n private afterCloseConfirmationDialog(): void {\n this.isConfirmationDialogActive = false\n this.isSaveFormInscriptionsOffreCoursErrorStateActive = false\n this.isSaveFormInscriptionsOffreCoursLoadingStateActive = false\n this.isSaveFormInscriptionsOffreCoursSuccessStateActive = false\n }\n\n private generateConfirmationSituationLabel(inscriptionLieuExamen: IFormInscriptionLieuExamen): string | undefined {\n const payload: IUpdateInscriptionLieuExamenRequestPayload | null = this.requestPayloads[inscriptionLieuExamen.id] || null\n\n if (!payload) {\n return undefined\n }\n\n const city: ICity | undefined = this.citiesById[payload.idVille as number]\n\n return this.$i18next.t(`modules.inscription-lieu-examen.form.FormInscriptionOffreCours.confirmation_dialog.content.inscription_lieu_examen.situation.${payload.slugTypeInscriptionLieuExamen}`, {\n ...payload,\n ville: city ? city.nom : ''\n })\n }\n\n private hasInscriptionOffreCoursChanged(inscriptionOffreCours: IFormInscriptionOffreCours): boolean {\n if (inscriptionOffreCours.inscriptionsLieuExamen) {\n for (const inscriptionLieuExamen of inscriptionOffreCours.inscriptionsLieuExamen) {\n if (this.formIdsStateChanged.includes(inscriptionLieuExamen.id)) {\n return true\n }\n }\n }\n\n return false\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './FicheRepondantBreadcrumbs.html'\n\nimport { \n MIconButton,\n MIconButtonSkin,\n MLink,\n MLinkMode\n} from '@ulaval/modul-components'\n\nimport ROUTES from '@/router/ROUTES';\nimport { ILocalizedRouteParameters, extractLocalizedRouteParameters } from '@/router/helpers';\n\nexport interface IBreadcrumbItem {\n label: string;\n href: string;\n}\n\n@WithRender\n@Component({\n components: {\n MIconButton,\n MLink\n }\n})\nexport default class FicheRepondantBreadcrumbs extends mixins() {\n private readonly MIconButtonSkin: object = MIconButtonSkin\n private readonly MLinkMode: object = MLinkMode\n\n private get items(): Array {\n if (!this.$route || !this.$route.matched) {\n return []\n }\n\n const breadcrumbs: Array = []\n\n const currentRouteNameParameters: ILocalizedRouteParameters = extractLocalizedRouteParameters(this.$route.name as string)\n\n if (\n currentRouteNameParameters.name === ROUTES.FICHE_REPONDANT_CREATE ||\n currentRouteNameParameters.name === ROUTES.FICHE_REPONDANT_UPDATE\n ) {\n breadcrumbs.push({\n label: '',\n href: this.mixin_router_generateHref({\n name: ROUTES.FICHE_REPONDANT_OVERVIEW,\n params: this.$route.params,\n query: this.$route.query\n })\n }) \n }\n\n return breadcrumbs\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './GestionFicheRepondantPage.html'\n\nimport {\n MPanel\n} from '@ulaval/modul-components'\n\nimport SessionSelect from '../global/session/SessionSelect'\nimport FicheRepondantBreadcrumbs from './breadcrumbs/FicheRepondantBreadcrumbs'\n\n@WithRender\n@Component({\n components: {\n FicheRepondantBreadcrumbs,\n MPanel,\n SessionSelect\n }\n})\nexport default class GestionFicheRepondantPage extends mixins() {\n\n}\n","import Component, { mixins } from 'vue-class-component';\n\nimport HttpStatusCode from 'http-status-codes'\nimport { AxiosError, AxiosResponse } from \"axios\";\n\nimport BaseService from '../global/base/Base.service';\n\nimport { ICasSpecialRepondant } from './CasSpecialRepondant.model';\nimport ROUTES from '@/router/ROUTES';\nimport { IFicheRepondantFormPayload } from './form/FicheRepondantForm';\nimport { IFileModel, IFileUploadModel } from '../global/file/File.model';\nimport { IFicheRepondantModel } from './FicheRepondant.model';\nimport EventBus from '@/EventBus';\n\nexport enum EVENTS {\n AFTER_DELETE = 'fiche-repondant:after-delete'\n}\n\nexport interface IFicheRepondantAfterDeleteEventPayload {\n idCasRepondantFiche: number;\n}\n\nexport interface IFicheRepondantFetchResponse {\n casRepondantFiches: Array;\n nombreCasSpeciauxRepondantDisponible: number;\n}\n\n@Component\nexport default class FicheRepondantService extends mixins(BaseService) {\n protected service_ficheRepondantService_fetchList(codeSession: string): Promise {\n return new Promise((resolve: any, reject: any): void => {\n const query: string = this.service_base_generateQueryFromObject({ codeSession })\n\n this.$axios.get(`/api/inscriptions-lieu-examen/dossier/fiches-repondant/actives?${query}`)\n .then((response: AxiosResponse) => {\n resolve(response.data.data)\n }).catch((error: AxiosError) => this.handleRequestError(error, reject))\n })\n }\n\n protected service_ficheRepondantService_fetchAvailableCasSpecial(codeSession: string): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n const query: string = this.service_base_generateQueryFromObject({ codeSession })\n\n this.$axios.get(`/api/inscriptions-lieu-examen/dossier/fiches-repondant/disponibles?${query}`)\n .then((response: AxiosResponse) => {\n resolve(response.data.data.casSpeciauxRepondant)\n }).catch((error: AxiosError) => this.handleRequestError(error, reject))\n })\n }\n\n protected service_ficheRepondantService_create(\n payload: IFicheRepondantFormPayload, \n codeSession: string, \n idsCasSpecialRepondant: Array\n ): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n const data: FormData = this.assembleFormDataFromformPayload(payload)\n\n data.set('codeSession', codeSession)\n idsCasSpecialRepondant.forEach((id: number, index: number) => {\n data.set(`idsCasSpeciauxRepondant[${index}]`, id.toString())\n })\n\n this.$axios.post('/api/inscriptions-lieu-examen/dossier/fiches-repondant', data, {\n headers: this.service_baseService_multipartFormDataHeader()\n }).then((response: AxiosResponse) => {\n resolve(response.data.data.casSpeciauxRepondant)\n }).catch((error: AxiosError) => this.handleRequestError(error, reject))\n })\n }\n\n protected service_ficheRepondantService_update(\n payload: IFicheRepondantFormPayload, \n idCasRepondantFiche: number\n ): Promise> {\n return new Promise((resolve: any, reject: any): void => {\n const query: string = this.service_base_generateQueryFromObject({ idCasRepondantFiche })\n const data: FormData = this.assembleFormDataFromformPayload(payload)\n\n this.$axios.put(`/api/inscriptions-lieu-examen/dossier/fiches-repondant?${query}`, data, {\n headers: this.service_baseService_multipartFormDataHeader()\n }).then((response: AxiosResponse) => {\n resolve(response.data.data.casSpeciauxRepondant)\n }).catch((error: AxiosError) => this.handleRequestError(error, reject))\n })\n }\n\n protected service_ficheRepondantService_delete(idCasRepondantFiche: number): Promise {\n return new Promise((resolve: any, reject: any): void => {\n const query: string = this.service_base_generateQueryFromObject({ idCasRepondantFiche })\n\n this.$axios.delete(`/api/inscriptions-lieu-examen/dossier/fiches-repondant?${query}`)\n .then((response: AxiosResponse) => {\n EventBus.$emit(EVENTS.AFTER_DELETE, { idCasRepondantFiche } as IFicheRepondantAfterDeleteEventPayload)\n\n resolve()\n }).catch((error: AxiosError) => this.handleRequestError(error, reject))\n })\n }\n\n protected service_ficheRepondantService_fetchById(idCasRepondantFiche: number): Promise {\n return new Promise((resolve: any, reject: any): void => {\n const query: string = this.service_base_generateQueryFromObject({ idCasRepondantFiche })\n\n this.$axios.get(`/api/inscriptions-lieu-examen/dossier/fiches-repondant?${query}`)\n .then((response: AxiosResponse) => {\n resolve(response.data.data.casRepondantFiche)\n }).catch((error: AxiosError) => this.handleRequestError(error, reject))\n })\n }\n\n private assembleFormDataFromformPayload(payload: IFicheRepondantFormPayload): FormData {\n const data: FormData = new FormData()\n\n data.set('ville', payload.ville)\n data.set('idPays', payload.idPays.toString())\n data.set('nom', payload.nom)\n data.set('prenom', payload.prenom)\n data.set('fonction', payload.fonction)\n data.set('telephonePrincipal', payload.telephone || '')\n data.set('courriel', payload.courriel)\n data.set('langue', payload.langue)\n data.set('employeurNom', payload.employeurNom)\n data.set('employeurAdresse', payload.employeurAdresse || '')\n data.set('employeurPreuveUrl', payload.employeurPreuveUrl || '')\n \n payload.employeurPreuveFichiers.forEach((uploadedFile: IFileUploadModel, index: number) => {\n if (uploadedFile.server_file) {\n data.set(`fichiersForms[${index}].id`, uploadedFile.server_file.id)\n } else if (uploadedFile && uploadedFile.file) {\n data.append(`fichiersForms[${index}].file`, uploadedFile.file.file)\n }\n })\n\n return data\n }\n\n private handleRequestError(error: AxiosError, reject: any): void {\n let status: string = HttpStatusCode.INTERNAL_SERVER_ERROR.toString()\n\n if (error.response) {\n status = error.response?.status.toString()\n }\n\n if (status === HttpStatusCode.UNAUTHORIZED.toString()) {\n this.mixin_router_navigate({\n name: ROUTES.LOGIN,\n })\n } else {\n this.mixin_router_navigate({\n name: ROUTES.ERROR,\n params: {\n status\n }\n })\n }\n\n reject(error)\n }\n}","import { IFileModel } from \"../global/file/File.model\";\nimport { ICountry } from \"../global/localization/country/ICountry.model\";\nimport { ICasSpecialRepondant } from \"./CasSpecialRepondant.model\";\n\nexport enum FICHE_REPONDANT_LANGUE {\n FR = 'FR',\n EN = 'EN'\n}\n\nexport enum FICHE_REPONDANT_STATUT {\n EN_ATTENTE = \"EN_ATTENTE\",\n VALIDEE = \"VALIDEE\",\n NON_CONFORME = \"NON_CONFORME\",\n EN_TRAITEMENT = \"EN_TRAITEMENT\",\n EN_ARRET = \"EN_ARRET\"\n}\n\nexport interface IFicheRepondantModel {\n id: number;\n createdAt: string;\n createdBy: string;\n createdByFullName: string;\n updatedAt: string;\n updatedBy: string;\n updatedByFullName: string;\n version: number;\n idEtudiant: number;\n idSession: number;\n pays: ICountry;\n ville: string;\n prenom: string;\n nom: string;\n fonction: string;\n telephonePrincipal: string;\n courriel: string;\n langue: FICHE_REPONDANT_LANGUE;\n employeurNom: string;\n employeurAdresse: string;\n employeurPreuveUrl: string;\n statut: string;\n isModifiableParEtudiant: boolean;\n isSupprimableParEtudiant: boolean;\n isActif: boolean;\n employeurPreuveFichiers: Array;\n casSpeciauxRepondant: Array;\n}","import Component, { mixins } from 'vue-class-component'\nimport { Prop } from 'vue-property-decorator'\n\nimport WithRender from './FicheRepondantCard.html'\n\nimport {\n MButton,\n MButtonSkin,\n MDialog,\n MDialogWidth,\n MIcon,\n MMessage,\n MMessageState,\n MPanel\n} from '@ulaval/modul-components'\n\nimport LocationSvg from '@/modules/global/media/svg/location/LocationSvg'\nimport { FICHE_REPONDANT_STATUT, IFicheRepondantModel } from '../FicheRepondant.model'\nimport FicheRepondantService from '../FicheRepondant.service'\nimport ROUTES from '@/router/ROUTES'\n\n@WithRender\n@Component({\n components: {\n LocationSvg,\n MButton,\n MDialog,\n MIcon,\n MMessage,\n MPanel\n }\n})\nexport default class FicheRepondantCard extends mixins(FicheRepondantService) {\n private isDeleteLoadingStateActive: boolean = false\n private isDeleteConfirmationDialogDisplayed: boolean = false\n\n private readonly MButtonSkin: object = MButtonSkin\n private readonly MMessageState: object = MMessageState\n private readonly MDialogWidth: object = MDialogWidth\n \n @Prop({ required: true })\n private ficheRepondant!: IFicheRepondantModel\n\n private get computeStatutIcon(): string {\n switch (this.ficheRepondant.statut) {\n case FICHE_REPONDANT_STATUT.EN_ARRET:\n return 'm-svg__error'\n case FICHE_REPONDANT_STATUT.NON_CONFORME:\n return 'm-svg__warning'\n case FICHE_REPONDANT_STATUT.EN_TRAITEMENT:\n return 'm-svg__search'\n case FICHE_REPONDANT_STATUT.VALIDEE:\n return 'm-svg__confirmation'\n default:\n return 'm-svg__clock'\n }\n }\n\n private get panelClasses(): object {\n return {\n 'fiche-repondant-card--updateable': this.ficheRepondant.isModifiableParEtudiant\n }\n }\n\n private deleteFicheRepondant(): void {\n this.isDeleteLoadingStateActive = true\n\n this.service_ficheRepondantService_delete(this.ficheRepondant.id)\n .finally(() => {\n this.isDeleteLoadingStateActive = false\n this.hideDeleteConfirmationDialog()\n })\n }\n\n private onPanelClick(): void {\n this.navigateToUpdatePage()\n }\n\n private onUpdateButtonClick(): void {\n this.navigateToUpdatePage()\n }\n\n private navigateToUpdatePage(): void {\n if (this.ficheRepondant.isModifiableParEtudiant) {\n this.mixin_router_navigate({\n name: ROUTES.FICHE_REPONDANT_UPDATE,\n params: {\n ...this.$route.params,\n idFicheRepondant: this.ficheRepondant.id\n },\n query: this.$route.query\n })\n }\n }\n\n private onDeleteButtonClick(): void {\n this.displayDeleteConfirmationDialog()\n }\n\n private displayDeleteConfirmationDialog(): void {\n this.isDeleteConfirmationDialogDisplayed = true\n }\n\n private hideDeleteConfirmationDialog(): void {\n this.isDeleteConfirmationDialogDisplayed = false\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './OverviewFicheRepondant.html'\n\nimport {\n MButton,\n MButtonSkin,\n MMessage,\n MMessageState,\n MSpinner,\n MToast,\n MToastPosition,\n MToastState,\n MToastTimeout,\n MToastDuration\n} from '@ulaval/modul-components'\n\nimport FicheRepondantService, { IFicheRepondantAfterDeleteEventPayload, IFicheRepondantFetchResponse } from '../FicheRepondant.service'\nimport { IFicheRepondantModel } from '../FicheRepondant.model'\nimport FicheRepondantCard from './FicheRepondantCard'\nimport ROUTES from '@/router/ROUTES'\nimport EventBus from '@/EventBus'\nimport { EVENTS as FicheRepondantService_EVENTS } from '../FicheRepondant.service'\nimport { LOCAL_STORAGE_KEY_TOKEN } from '@/modules/global/user-session/UserSession.store'\n\n@WithRender\n@Component({\n components: {\n FicheRepondantCard,\n MButton,\n MMessage,\n MSpinner,\n MToast\n }\n})\nexport default class OverviewFicheRepondant extends mixins(FicheRepondantService) {\n private fichesRepondant: Array = []\n private nombreCasSpeciauxRepondantDisponible: number = 0\n private isLoadingOverlayActive: boolean = false\n private isDeleteSuccessToastOpen: boolean = false\n\n private readonly MButtonSkin: object = MButtonSkin\n private readonly MMessageState: object = MMessageState\n private readonly MToastPosition: object = MToastPosition\n private readonly MToastState: object = MToastState\n private readonly MToastTimeout: object = MToastTimeout\n\n private get localStorageToken(): string | null {\n return localStorage.getItem(LOCAL_STORAGE_KEY_TOKEN)\n }\n\n private mounted(): void {\n this.loadFichesRepondant()\n this.afterFicheRepondantDeleted()\n }\n\n private afterFicheRepondantDeleted(): void {\n EventBus.$on(FicheRepondantService_EVENTS.AFTER_DELETE, (payload: IFicheRepondantAfterDeleteEventPayload) => {\n this.loadFichesRepondant(false)\n this.isDeleteSuccessToastOpen = true\n\n setTimeout(() => {\n this.isDeleteSuccessToastOpen = false\n }, MToastDuration.DesktopShort)\n })\n }\n\n private loadFichesRepondant(displayLoadingOverlay: boolean = true): void {\n this.isLoadingOverlayActive = displayLoadingOverlay || false\n\n this.service_ficheRepondantService_fetchList(this.$route.query['code-session'] as string)\n .then((response: IFicheRepondantFetchResponse) => {\n this.fichesRepondant = response.casRepondantFiches || []\n this.nombreCasSpeciauxRepondantDisponible = response.nombreCasSpeciauxRepondantDisponible || 0\n }).finally(() => {\n this.isLoadingOverlayActive = false\n })\n }\n\n private onNavigateToSoumissionButtonClick(): void {\n this.mixin_router_navigate({\n name: ROUTES.FICHE_REPONDANT_CREATE,\n params: this.$route.params,\n query: this.$route.query\n })\n }\n\n private onNavigateToDossierExamenButtonClick(): void {\n this.mixin_router_navigate({\n name: ROUTES.INSCRIPTION_ETUDIANT,\n params: {\n ...this.$route.params,\n token: this.localStorageToken\n },\n query: this.$route.query\n })\n }\n}\n","import Component, { mixins } from 'vue-class-component'\nimport { Prop, Watch } from 'vue-property-decorator'\n\nimport WithRender from './FicheRepondantAvailableCasSpecialRow.html'\n\nimport {\n MIcon,\n MPanel\n} from '@ulaval/modul-components'\n\nimport LocationSvg from '@/modules/global/media/svg/location/LocationSvg'\n\nimport { ICasSpecialRepondant } from '../CasSpecialRepondant.model'\nimport EventBus from '@/EventBus'\n\nexport enum FicheRepondantAvailableCasSpecialRow_EVENTS {\n ITEM_SELECTED = 'item:selected'\n}\n\nexport interface IFicheRepondantAvailableCasSpecialRowItemSelectedEventPayload {\n casSpecial: ICasSpecialRepondant;\n isSelected: boolean;\n}\n\n@WithRender\n@Component({\n components: {\n LocationSvg,\n MIcon,\n MPanel\n }\n})\nexport default class FicheRepondantAvailableCasSpecialRow extends mixins() {\n private isSelected: boolean = false \n\n @Prop({ required: true })\n private casSpecial!: ICasSpecialRepondant\n\n private get panelClasses(): object {\n return {\n 'fiche-repondant-available-cas-special-row--selected': this.isSelected\n }\n }\n\n private onPanelClick(): void {\n this.isSelected = !this.isSelected\n\n EventBus.$emit(FicheRepondantAvailableCasSpecialRow_EVENTS.ITEM_SELECTED, {\n casSpecial: this.casSpecial,\n isSelected: this.isSelected\n } as IFicheRepondantAvailableCasSpecialRowItemSelectedEventPayload)\n }\n}\n","import Component, { mixins } from 'vue-class-component'\nimport { Prop, Watch } from 'vue-property-decorator'\n\nimport WithRender from './FicheRepondantAvailableCasSpecial.html'\n\nimport {\n MMessage,\n MMessageState\n} from '@ulaval/modul-components'\n\nimport FicheRepondantAvailableCasSpecialRow from './FicheRepondantAvailableCasSpecialRow'\nimport { ICasSpecialRepondant } from '../CasSpecialRepondant.model'\n\n@WithRender\n@Component({\n components: {\n FicheRepondantAvailableCasSpecialRow,\n MMessage\n }\n})\nexport default class FicheRepondantAvailableCasSpecial extends mixins() {\n private readonly MMessageState: object = MMessageState\n \n @Prop({ required: true })\n private casSpeciaux!: Array\n}\n","import Component, { mixins } from 'vue-class-component'\nimport { Prop, Ref } from 'vue-property-decorator'\n\nimport WithRender from './UploadedFileRow.html'\n\nimport { \n MIcon,\n MIconFile,\n MIconButton,\n MLink,\n MLinkMode\n} from '@ulaval/modul-components'\n\nimport { IFileUploadModel } from './File.model'\n\nexport enum UploadedFileRow_EVENTS {\n DELETE = 'delete'\n}\n\nconst REF_DOWNLOAD_LINK: string = 'ref-download-link'\n\n@WithRender\n@Component({\n components: {\n MIcon,\n MIconButton,\n MIconFile,\n MLink\n }\n})\nexport default class UploadedFileRow extends mixins() {\n private readonly MLinkMode: any = MLinkMode\n private readonly REF_DOWNLOAD_LINK: string = REF_DOWNLOAD_LINK\n\n @Ref(REF_DOWNLOAD_LINK)\n protected downloadLinkHtmlElement!: HTMLElement\n\n @Prop({ required: true })\n private uploadedFile!: IFileUploadModel\n\n @Prop({ default: false })\n private disabled!: boolean\n\n @Prop({\n required: false,\n default: false\n })\n private displayDivider!: boolean\n\n private get fileName(): string {\n if (this.uploadedFile.file) {\n return this.uploadedFile.file.name\n } else if (this.uploadedFile.server_file) {\n return this.uploadedFile.server_file.file_name\n }\n\n return ''\n }\n\n private get fileSize(): string | number {\n if (this.uploadedFile.file) {\n return this.uploadedFile.file.file.size\n } else if (this.uploadedFile.server_file) {\n return this.uploadedFile.server_file.file_size\n }\n\n return ''\n }\n\n private get fileExtension(): string {\n if (this.uploadedFile.file) {\n return this.uploadedFile.file.extension\n } else if (this.uploadedFile.server_file) {\n const fileNameParts: Array = this.uploadedFile.server_file.file_name.split('.')\n \n return fileNameParts[fileNameParts.length - 1]\n }\n\n return ''\n }\n\n private get isFileDownloadAvailable(): boolean {\n if (this.uploadedFile.file) {\n return true\n } else if (this.uploadedFile.server_file) {\n return !!this.uploadedFile.server_file.download_endpoint\n }\n\n return false\n }\n\n private onDeleteOptionClick(): void {\n this.$emit(UploadedFileRow_EVENTS.DELETE)\n }\n\n private downloadFile(): void {\n if (this.uploadedFile.file) {\n if (this.uploadedFile.file.url) {\n this.openFile(this.uploadedFile.file.url, this.uploadedFile.file.name)\n }\n } else if (this.uploadedFile.server_file) {\n this.$axios.get(this.uploadedFile.server_file.download_endpoint, {\n responseType: 'arraybuffer',\n headers: {\n Accept: 'application/octet-stream'\n }\n }).then((res: any) => {\n this.openFile(\n URL.createObjectURL(new Blob([res.data], { type: this.uploadedFile.server_file.file_format })),\n this.uploadedFile.server_file.file_name\n )\n })\n }\n }\n\n private openFile(url: string, fileName: string): void {\n if (this.downloadLinkHtmlElement) {\n this.downloadLinkHtmlElement.setAttribute('href', url)\n this.downloadLinkHtmlElement.setAttribute('download', fileName)\n this.downloadLinkHtmlElement.click()\n\n this.downloadLinkHtmlElement.removeAttribute('link')\n this.downloadLinkHtmlElement.removeAttribute('download')\n }\n }\n}\n","import Component, { mixins } from 'vue-class-component'\nimport { Prop, Watch } from 'vue-property-decorator'\n\nimport WithRender from './FicheRepondantForm.html'\n\nimport {\n FormGroup,\n FormControl,\n MAdd,\n MDropdown,\n MDropdownItem,\n MFileUpload,\n MForm,\n MMessage,\n MMessageState,\n MTextfield,\n MTextfieldType,\n RequiredValidator,\n AbstractControl,\n EmailValidator\n} from '@ulaval/modul-components'\nimport { MFile } from '@ulaval/modul-components/dist/utils/file/file'\n\nimport { STORE_GETTERS } from '@/store'\nimport { ICountry } from '@/modules/global/localization/country/ICountry.model'\nimport { FICHE_REPONDANT_LANGUE, IFicheRepondantModel } from '../FicheRepondant.model'\nimport { IFileModel, IFileUploadModel } from '@/modules/global/file/File.model'\nimport UploadedFileRow from '@/modules/global/file/UploadedFileRow'\n\nexport interface IFicheRepondantFormPayload {\n ville: string;\n idPays: number;\n nom: string;\n prenom: string;\n fonction: string;\n telephone: string;\n courriel: string;\n langue: FICHE_REPONDANT_LANGUE;\n employeurNom: string;\n employeurAdresse: string;\n employeurPreuveUrl: string;\n employeurPreuveFichiers: Array>;\n}\n\n@WithRender\n@Component({\n components: {\n MAdd,\n MDropdown,\n MDropdownItem,\n MFileUpload,\n MForm,\n MMessage,\n MTextfield,\n UploadedFileRow\n }\n})\nexport default class FicheRepondantForm extends mixins() {\n public formGroup: FormGroup = new FormGroup({\n employeurNom: new FormControl([RequiredValidator()]),\n employeurAdresse: new FormControl([]),\n employeurPreuveUrl: new FormControl([]),\n prenom: new FormControl([RequiredValidator()]),\n nom: new FormControl([RequiredValidator()]),\n fonction: new FormControl([RequiredValidator()]),\n courriel: new FormControl([RequiredValidator(), EmailValidator()]),\n country: new FormControl([RequiredValidator()]),\n ville: new FormControl([RequiredValidator()]),\n telephone: new FormControl([]),\n langue: new FormControl([RequiredValidator()]),\n })\n private fichiersPreuve: Array> = []\n private formErrors: { [key: string]: boolean } = {}\n\n private readonly MTextfieldType: object = MTextfieldType\n private readonly MMessageState: object = MMessageState\n private readonly FICHE_REPONDANT_LANGUE: object = FICHE_REPONDANT_LANGUE\n private readonly ALLOWED_ATTACHMENT_EXTENSIONS: Array = [\n 'pdf',\n 'png',\n 'jpg',\n 'jpeg'\n ]\n\n private readonly ERROR_KEY_PREUVE_EMPLOYEUR_REQUIS: string = 'preuve-employeur-required'\n\n @Prop()\n private ficheRepondant!: IFicheRepondantModel | null\n\n public get employeurNomField(): AbstractControl {\n return this.formGroup.getControl('employeurNom');\n }\n\n public get employeurAdresseField(): AbstractControl {\n return this.formGroup.getControl('employeurAdresse');\n }\n\n public get employeurPreuveUrlField(): AbstractControl {\n return this.formGroup.getControl('employeurPreuveUrl');\n }\n\n public get prenomField(): AbstractControl {\n return this.formGroup.getControl('prenom');\n }\n\n public get nomField(): AbstractControl {\n return this.formGroup.getControl('nom');\n }\n\n public get fonctionField(): AbstractControl {\n return this.formGroup.getControl('fonction');\n }\n\n public get courrielField(): AbstractControl {\n return this.formGroup.getControl('courriel');\n }\n\n public get villeField(): AbstractControl {\n return this.formGroup.getControl('ville');\n }\n\n public get telephoneField(): AbstractControl {\n return this.formGroup.getControl('telephone');\n }\n\n public get countryDropdown(): AbstractControl {\n return this.formGroup.getControl('country');\n }\n\n public get langueDropdown(): AbstractControl {\n return this.formGroup.getControl('langue');\n }\n\n private get countries(): Array {\n return this.$store.getters[STORE_GETTERS.COUNTRY_GET_COUNTRIES]\n }\n\n @Watch('ficheRepondant', { immediate: true })\n private onFicheRepondantUpdate(): void {\n this.populateFormFromFicheRepondant()\n } \n\n public async getFormPayload(): Promise {\n await this.validate()\n \n if (this.formGroup.hasErrorDeep() || Object.keys(this.formErrors).length > 0) {\n return null\n }\n \n return {\n ville: this.villeField.value,\n idPays: this.countryDropdown.value,\n nom: this.nomField.value,\n prenom: this.prenomField.value,\n fonction: this.fonctionField.value,\n telephone: this.telephoneField.value,\n courriel: this.courrielField.value,\n langue: this.langueDropdown.value,\n employeurNom: this.employeurNomField.value,\n employeurAdresse: this.employeurAdresseField.value,\n employeurPreuveUrl: this.employeurPreuveUrlField.value,\n employeurPreuveFichiers: this.fichiersPreuve\n }\n } \n\n private async validate(): Promise {\n this.formErrors = {}\n\n await this.formGroup.submit()\n }\n\n private onFilesReady(files: Array): void {\n this.$file.uploadTemp(files)\n }\n\n private onFilesUploadCompleted(files: Array): void {\n files.forEach((file: MFile) => {\n this.fichiersPreuve.push({ file })\n })\n }\n\n private removePreuveFicher(index: number): void {\n this.$delete(this.fichiersPreuve, index)\n }\n\n private populateFormFromFicheRepondant(): void {\n if (this.ficheRepondant) {\n this.villeField.value = this.ficheRepondant.ville\n this.countryDropdown.value = this.ficheRepondant.pays.id\n this.nomField.value = this.ficheRepondant.nom\n this.prenomField.value = this.ficheRepondant.prenom\n this.fonctionField.value = this.ficheRepondant.fonction\n this.telephoneField.value = this.ficheRepondant.telephonePrincipal\n this.courrielField.value = this.ficheRepondant.courriel\n this.langueDropdown.value = this.ficheRepondant.langue\n this.employeurNomField.value = this.ficheRepondant.employeurNom\n this.employeurPreuveUrlField.value = this.ficheRepondant.employeurPreuveUrl\n this.employeurAdresseField.value = this.ficheRepondant.employeurAdresse\n \n this.ficheRepondant.employeurPreuveFichiers.forEach((fichier: IFileModel) => {\n this.fichiersPreuve.push({\n server_file: fichier\n })\n })\n }\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport WithRender from './FicheRepondantConditionsOverlay.html'\n\nimport {\n MButton,\n MButtonSkin,\n MOverlay\n} from '@ulaval/modul-components'\nimport { STORE_GETTERS } from '@/store'\n\n@WithRender\n@Component({\n components: {\n MButton,\n MOverlay\n }\n})\nexport default class FicheRepondantConditionsOverlay extends mixins() {\n private isOverlayOpen: boolean = true\n\n private readonly MButtonSkin: object = MButtonSkin\n\n private get userFullName(): string | null {\n return this.$store.getters[STORE_GETTERS.SESSION_GET_USER_FULL_NAME]\n }\n\n private onHideOverlayButtonClick(): void {\n this.isOverlayOpen = false\n }\n}\n","import Component, { mixins } from 'vue-class-component'\nimport { Ref, Watch } from 'vue-property-decorator'\n\nimport WithRender from './FicheRepondantCreate.html'\n\nimport {\n MButton,\n MButtonSkin,\n MDialog,\n MDialogState,\n MDialogWidth,\n MMessage,\n MMessageSkin,\n MMessageState,\n MSpinner\n} from '@ulaval/modul-components'\n\nimport FicheRepondantAvailableCasSpecial from '../form/FicheRepondantAvailableCasSpecial'\nimport FicheRepondantForm, { IFicheRepondantFormPayload } from '../form/FicheRepondantForm'\nimport FicheRepondantConditionsOverlay from '../FicheRepondantConditionsOverlay'\nimport FicheRepondantService from '../FicheRepondant.service'\nimport { ICasSpecialRepondant } from '../CasSpecialRepondant.model'\nimport EventBus from '@/EventBus'\nimport { FicheRepondantAvailableCasSpecialRow_EVENTS, IFicheRepondantAvailableCasSpecialRowItemSelectedEventPayload } from '../form/FicheRepondantAvailableCasSpecialRow'\nimport CountryService from '@/modules/global/localization/country/Country.service'\nimport ROUTES from '@/router/ROUTES'\n\nconst REF_FICHE_REPONDANT_FORM: string = 'ref[fiche-repondant-form]'\n\n@WithRender\n@Component({\n components: {\n FicheRepondantAvailableCasSpecial,\n FicheRepondantConditionsOverlay,\n FicheRepondantForm,\n MButton,\n MDialog,\n MMessage,\n MSpinner\n }\n})\nexport default class FicheRepondantCreate extends mixins(FicheRepondantService, CountryService) {\n private casSpeciauxDisponible: Array = []\n private isLoadingStateActive: boolean = false\n private isSuccessStateActive: boolean = false\n private isSubmitDialogOpen: boolean = false\n private selectedCasSpecialIds: Array = []\n\n private readonly MButtonSkin: object = MButtonSkin\n private readonly MMessageSkin: object = MMessageSkin\n private readonly MMessageState: object = MMessageState\n private readonly MDialogState: object = MDialogState\n private readonly MDialogWidth: object = MDialogWidth\n private readonly REF_FICHE_REPONDANT_FORM: string = REF_FICHE_REPONDANT_FORM\n\n @Ref(REF_FICHE_REPONDANT_FORM)\n private ficheRepondantFormComponent!: FicheRepondantForm | null\n\n @Watch('$route.query', { immediate: true })\n private onRouteQueryChange(): void {\n this.loadCasSpeciauxDisponible()\n }\n\n private get isFormDisplayed(): boolean {\n return this.selectedCasSpecialIds.length > 0\n }\n\n private mounted(): void {\n this.afterFicheRepondantAvailableCasSpecialRowItemSelected()\n this.loadCountries()\n }\n\n private loadCasSpeciauxDisponible(): void {\n this.service_ficheRepondantService_fetchAvailableCasSpecial(this.$route.query['code-session'] as string)\n .then((response: Array) => {\n this.casSpeciauxDisponible = response || []\n })\n }\n\n private loadCountries(): void {\n this.service_countryService_fetchCountries()\n }\n\n private afterFicheRepondantAvailableCasSpecialRowItemSelected(): void {\n EventBus.$on(FicheRepondantAvailableCasSpecialRow_EVENTS.ITEM_SELECTED, (payload: IFicheRepondantAvailableCasSpecialRowItemSelectedEventPayload) => {\n const selectedCasSpecialIndex: number | undefined = this.selectedCasSpecialIds.indexOf(payload.casSpecial.id)\n\n if (payload.isSelected) {\n if (!~selectedCasSpecialIndex) {\n this.$set(this.selectedCasSpecialIds, this.selectedCasSpecialIds.length, payload.casSpecial.id)\n }\n } else if (~selectedCasSpecialIndex) {\n this.$delete(this.selectedCasSpecialIds, selectedCasSpecialIndex)\n }\n })\n }\n\n private async onSubmitButtonClick(): Promise {\n if (this.ficheRepondantFormComponent) {\n const formPayload: IFicheRepondantFormPayload | null = await this.ficheRepondantFormComponent.getFormPayload()\n \n if (formPayload) {\n this.displaySubmitDialog()\n }\n }\n }\n\n private async onDialogSubmitButtonClick(): Promise {\n if (this.ficheRepondantFormComponent) {\n const formPayload: IFicheRepondantFormPayload | null = await this.ficheRepondantFormComponent.getFormPayload()\n \n if (formPayload) {\n this.createFicheRepondant(formPayload)\n }\n }\n }\n\n private createFicheRepondant(formPayload: IFicheRepondantFormPayload): void {\n this.isSubmitDialogOpen = false\n this.hideSubmitDialog()\n\n this.service_ficheRepondantService_create(\n formPayload,\n this.$route.query['code-session'] as string,\n this.selectedCasSpecialIds\n ).then(() => {\n this.isSuccessStateActive = true\n }).finally(() => {\n this.isLoadingStateActive = false\n })\n }\n\n private onReturnHomeButtonClick(): void {\n this.mixin_router_navigate({\n name: ROUTES.FICHE_REPONDANT_OVERVIEW,\n params: this.$route.params,\n query: this.$route.query\n })\n }\n\n private displaySubmitDialog(): void {\n this.isSubmitDialogOpen = true\n }\n\n private hideSubmitDialog(): void {\n this.isSubmitDialogOpen = false\n }\n}\n","import Component, { mixins } from 'vue-class-component'\nimport { Ref, Watch } from 'vue-property-decorator'\n\nimport WithRender from './FicheRepondantUpdate.html'\n\nimport {\n MButton,\n MButtonSkin,\n MMessage,\n MMessageSkin,\n MMessageState,\n MSpinner\n} from '@ulaval/modul-components'\n\nimport FicheRepondantForm, { IFicheRepondantFormPayload } from '../form/FicheRepondantForm'\nimport FicheRepondantService from '../FicheRepondant.service'\nimport CountryService from '@/modules/global/localization/country/Country.service'\nimport ROUTES from '@/router/ROUTES'\nimport { IFicheRepondantModel } from '../FicheRepondant.model'\n\nconst REF_FICHE_REPONDANT_FORM: string = 'ref[fiche-repondant-form]'\n\n@WithRender\n@Component({\n components: {\n FicheRepondantForm,\n MButton,\n MMessage,\n MSpinner\n }\n})\nexport default class FicheRepondantUpdate extends mixins(FicheRepondantService, CountryService) {\n private ficheRepondant: IFicheRepondantModel | null = null\n private isLoadingStateActive: boolean = false\n private isSuccessStateActive: boolean = false\n\n private readonly MButtonSkin: object = MButtonSkin\n private readonly MMessageSkin: object = MMessageSkin\n private readonly MMessageState: object = MMessageState\n private readonly REF_FICHE_REPONDANT_FORM: string = REF_FICHE_REPONDANT_FORM\n\n @Ref(REF_FICHE_REPONDANT_FORM)\n private ficheRepondantFormComponent!: FicheRepondantForm | null\n\n @Watch('$route.params', { immediate: true })\n private onRouteParamsChange(): void {\n if (this.$route.params.idFicheRepondant) {\n this.fetchFicheRepondant()\n }\n }\n\n private mounted(): void {\n this.loadCountries()\n }\n\n private loadCountries(): void {\n this.service_countryService_fetchCountries()\n }\n\n private async onSubmitButtonClick(): Promise {\n if (this.ficheRepondantFormComponent && this.ficheRepondant) {\n const formPayload: IFicheRepondantFormPayload | null = await this.ficheRepondantFormComponent.getFormPayload()\n \n if (formPayload) {\n this.updateFicheRepondant(formPayload)\n }\n }\n }\n\n private fetchFicheRepondant(): void {\n this.isLoadingStateActive = true\n\n this.service_ficheRepondantService_fetchById(this.$route.params.idFicheRepondant as any)\n .then((response: IFicheRepondantModel) => {\n this.ficheRepondant = response || null\n }).catch(() => {\n this.ficheRepondant = null\n }).finally(() => {\n this.isLoadingStateActive = false\n })\n }\n\n private updateFicheRepondant(formPayload: IFicheRepondantFormPayload): void {\n if (this.ficheRepondant) {\n this.isLoadingStateActive = true\n \n this.service_ficheRepondantService_update(\n formPayload,\n this.ficheRepondant.id\n ).then(() => {\n this.isSuccessStateActive = true\n }).finally(() => {\n this.isLoadingStateActive = false\n })\n }\n }\n\n private onReturnHomeButtonClick(): void {\n this.mixin_router_navigate({\n name: ROUTES.FICHE_REPONDANT_OVERVIEW,\n params: this.$route.params,\n query: this.$route.query\n })\n }\n}\n","import Vue from 'vue'\nimport VueRouter, { NavigationGuardNext, Route, RouteConfig } from 'vue-router'\n\nimport HttpStatusCode from 'http-status-codes'\n\nimport DefaultLayout from '@/layouts/default/DefaultLayout'\nimport LoginPage from '@/modules/authentication/login/LoginPage'\nimport ErrorPage from '@/modules/global/error/ErrorPage'\nimport InscriptionLieuExamenPage from '@/modules/inscription-lieu-examen/InscriptionLieuExamenPage'\nimport OverviewInscriptionOffreCours from '@/modules/inscription-lieu-examen/overview/OverviewInscriptionOffreCours'\nimport FormInscriptionOffreCours from '@/modules/inscription-lieu-examen/form/FormInscriptionOffreCours'\nimport GestionFicheRepondantPage from '@/modules/fiche-repondant/GestionFicheRepondantPage'\nimport OverviewFicheRepondant from '@/modules/fiche-repondant/overview/OverviewFicheRepondant'\nimport FicheRepondantCreate from '@/modules/fiche-repondant/create/FicheRepondantCreate'\nimport FicheRepondantUpdate from '@/modules/fiche-repondant/update/FicheRepondantUpdate'\n\nimport ROUTES from './ROUTES'\nimport Localization from '@/localization'\nimport RouterLocalizationHelper, { \n generateLocalizedRouteName, \n extractLocalizedRouteParameters, \n ILocalizedRouteParameters, \n LOCAL_STORAGE_LOGIN_REMEMBERED_ROUTE\n} from '@/router/helpers'\n\nVue.use(VueRouter)\n\nconst routes: Array = [\n {\n path: '',\n name: ROUTES.DEFAULT,\n component: DefaultLayout,\n children: [\n {\n path: '',\n name: ROUTES.INSCRIPTION_ETUDIANT,\n component: InscriptionLieuExamenPage,\n children: [\n {\n path: '',\n name: ROUTES.INSCRIPTION_ETUDIANT_APERCU,\n component: OverviewInscriptionOffreCours\n },\n {\n path: '',\n name: ROUTES.INSCRIPTION_ETUDIANT_FORMULAIRE,\n component: FormInscriptionOffreCours\n }\n ]\n },\n {\n path: '',\n name: ROUTES.FICHE_REPONDANT_GESTION,\n component: GestionFicheRepondantPage,\n children: [\n {\n path: '',\n name: ROUTES.FICHE_REPONDANT_OVERVIEW,\n component: OverviewFicheRepondant\n },\n {\n path: '',\n name: ROUTES.FICHE_REPONDANT_CREATE,\n component: FicheRepondantCreate\n },\n {\n path: '',\n name: ROUTES.FICHE_REPONDANT_UPDATE,\n component: FicheRepondantUpdate\n }\n ]\n },\n {\n path: '',\n name: ROUTES.LOGIN,\n component: LoginPage\n },\n {\n path: '',\n name: ROUTES.ERROR,\n component: ErrorPage\n }\n ]\n },\n {\n path: '*',\n name: ROUTES.WILDCARD\n }\n]\n\nconst router = new VueRouter({\n routes: RouterLocalizationHelper(routes)\n})\n\nrouter.beforeEach((to: Route, from: Route, next: NavigationGuardNext) => {\n const routeParameters: ILocalizedRouteParameters = extractLocalizedRouteParameters(to.name as string)\n\n if (routeParameters.name === ROUTES.WILDCARD) {\n return next({\n name: generateLocalizedRouteName({\n name: ROUTES.ERROR,\n locale: Localization.CURRENT_LOCALE\n }),\n params: {\n status: HttpStatusCode.NOT_FOUND.toString()\n }\n })\n } else if (routeParameters.name === ROUTES.DEFAULT) {\n return next({\n name: generateLocalizedRouteName({\n name: ROUTES.LOGIN,\n locale: Localization.CURRENT_LOCALE\n })\n })\n } else if (\n routeParameters.name === ROUTES.INSCRIPTION_ETUDIANT &&\n !to.params.token\n ) {\n return next({\n name: generateLocalizedRouteName({\n name: ROUTES.ERROR,\n locale: Localization.CURRENT_LOCALE\n })\n })\n } else if (routeParameters.name === ROUTES.LOGIN && from && from.name) {\n const fromRouteParameters: ILocalizedRouteParameters = extractLocalizedRouteParameters(from.name)\n localStorage.setItem(LOCAL_STORAGE_LOGIN_REMEMBERED_ROUTE, from.fullPath)\n }\n\n if (routeParameters.locale !== Localization.CURRENT_LOCALE) {\n return next({\n name: generateLocalizedRouteName({\n name: routeParameters.name,\n locale: Localization.CURRENT_LOCALE\n }),\n params: to.params,\n query: to.query\n })\n }\n\n return next()\n})\n\nexport default router\n","import Component, { mixins } from 'vue-class-component'\n\nimport Localization from '@/localization';\nimport { generateLocalizedRouteName } from '@/router/helpers';\n\nexport interface IRouterMixin {\n mixin_router_navigate(route: any): void;\n mixin_router_generateHref(route: any): string;\n}\n\n@Component\nexport default class RouterMixin extends mixins() implements IRouterMixin {\n public mixin_router_navigate(route: any): void {\n if (!route) {\n throw new Error(\"Unable to mixin_router_navigate. Route not provided.\")\n }\n\n this.$router.push({\n ...route,\n name: generateLocalizedRouteName({\n name: route.name as string,\n locale: Localization.CURRENT_LOCALE\n })\n })\n }\n\n public mixin_router_generateHref(route: any): string {\n if (!route) {\n throw new Error(\"Unable to mixin_router_generateHref. Route not provided.\")\n }\n\n return this.$router.resolve({\n ...route,\n name: generateLocalizedRouteName({\n name: route.name as string,\n locale: Localization.CURRENT_LOCALE\n })\n }).href\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport Localization from '@/localization';\nimport { generateLocalizedRouteName } from '@/router/helpers';\n\nexport interface IStringMixin {\n mixin_string_isEmpty(value?: string): boolean;\n}\n\n@Component\nexport default class StringMixin extends mixins() implements IStringMixin {\n public mixin_string_isEmpty(value?: string): boolean {\n return !value || value.trim().length === 0\n }\n}\n","import Component, { mixins } from 'vue-class-component'\n\nimport RouterMixin, { IRouterMixin } from '@/modules/global/utilities/RouterMixin'\nimport StringMixin, { IStringMixin } from './StringMixin'\n\nexport type IUtilitiesMixin = IRouterMixin & IStringMixin\n\n@Component\nexport default class UtilitiesMixin extends mixins(RouterMixin, StringMixin) implements IUtilitiesMixin {\n \n}\n","import { SpritesService } from '@ulaval/modul-components';\nimport Vue, { PluginObject, VueConstructor } from 'vue';\n\nconst SVG_PREFIX: string = 'custom'\n\nconst IconPlugin: PluginObject = {\n install(v: VueConstructor): void {\n const svg: SpritesService = v.prototype.$svg;\n /* eslint-disable @typescript-eslint/no-var-requires */\n svg.addExternalSprites(\n require('@/assets/medias/svg/sprites.svg'),\n SVG_PREFIX\n )\n },\n};\n\nexport default IconPlugin;","import Vue from 'vue'\n\nimport App from './App'\nimport router from './router'\nimport store from './store'\nimport Localization from './localization'\nimport UtilitiesMixin, { IUtilitiesMixin } from './modules/global/utilities/UtilitiesMixin'\nimport IconPlugin from './plugins/icons'\n\nimport Axios, { AxiosStatic } from 'axios'\nimport * as Moment from 'moment'\nimport { i18n } from 'i18next'\nimport VueGtag from 'vue-gtag'\n\nimport '@ulaval/modul-components/lib/modul.min.css'\nimport '@/assets/styles/main.scss'\n\nimport {\n DialogServicePlugin,\n FormPlugin,\n ToastServicePlugin,\n UtilsPlugin,\n UtilsPluginOptions,\n} from '@ulaval/modul-components'\nimport FilePlugin from '@ulaval/modul-components/dist/utils/file/file'\nimport { fileSize as FileSizeFilter } from '@ulaval/modul-components/dist/filters/filesize/filesize'\nimport { FILESIZE_NAME } from '@ulaval/modul-components/dist/filters/filter-names'\n// @ts-ignore\nimport FrenchPlugin from '@ulaval/modul-components/lib/fr'\n// @ts-ignore\nimport DefaultSpritesPlugin from '@ulaval/modul-components/lib/sprites'\n\nconst utilsPluginOptions: UtilsPluginOptions = {\n i18PluginOptions: {\n curLang: Localization.CURRENT_LOCALE,\n },\n propagateVueParserErrors: false,\n}\n\n// @ts-ignore\nMoment.locale(Localization.MOMENT_LOCALES.FR)\nconst localizationPromise: Promise = import('@/localization/fr.plugin');\nrequire('moment/locale/fr')\n\nAxios.defaults.baseURL = process.env.VUE_APP_API_URL\nAxios.defaults.headers['Locale'] = Localization.CURRENT_LOCALE\nAxios.defaults.headers.common['Accept-Language'] = Localization.CURRENT_LOCALE\n\nVue.config.productionTip = false;\nVue.prototype.$moment = Moment\nVue.prototype.$axios = Axios\nVue.prototype.$i18next = Localization.i18next\n\nVue.use(UtilsPlugin, utilsPluginOptions)\nVue.use(FrenchPlugin)\nVue.use(DefaultSpritesPlugin)\nVue.use(FormPlugin)\nVue.use(DialogServicePlugin)\nVue.use(ToastServicePlugin)\nVue.use(FilePlugin)\nVue.use(IconPlugin)\n\nVue.filter(FILESIZE_NAME, FileSizeFilter)\n\nVue.mixin(UtilitiesMixin)\n\nif (process.env.VUE_APP_GOOGLE_ANALYTICS_ID) {\n Vue.use(VueGtag, {\n config: { id: process.env.VUE_APP_GOOGLE_ANALYTICS_ID }\n })\n}\n\ndeclare module 'vue/types/vue' {\n // eslint-disable-next-line @typescript-eslint/interface-name-prefix\n interface Vue extends IUtilitiesMixin {\n $axios: AxiosStatic;\n // @ts-ignore\n $moment: Moment;\n $i18next: i18n;\n }\n}\n\nlocalizationPromise.then((localizationPlugin: any) => {\n Vue.use(localizationPlugin.default)\n\n new Vue({\n router,\n store,\n render: h => h(App)\n }).$mount('#app')\n});\n","
\n \n \n \n \n {{ $i18next.t('modules.global.session.SessionSelect.tooltip') }}\n \n
","","
\n \n
\n \n \n {{ $i18next.t('modules.fiche-repondant.overview.OverviewFicheRepondant.button.navigate_soumission.label') }}\n \n
\n
\n \n \n \n
\n \n {{ $i18next.t('modules.fiche-repondant.overview.OverviewFicheRepondant.toast.delete_success.label') }}\n \n
","
\n
\n
\n
\n
\n \n
","\n \n \n

\n","

\n
\n
\n \n
\n
\n

\n \n \n

\n

\n \n {{ fileSize | f-m-filesize }}\n \n

\n
\n \n
\n \n \n
","\n \n \n \n \n
\n \n \n \n
\n
\n \n
\n
\n \n {{ $i18next.t('modules.authentication.form.AuthenticationForm.components.submit.label') }}\n \n
\n","
\n \n \n \n \n \n \n
"],"sourceRoot":""}