{"version":3,"sources":["webpack:///node_modules/moment/locale sync ^\\.\\/.*$","webpack:///src/$_lazy_route_resource lazy namespace object","webpack:///src/app/app-routing.module.ts","webpack:///src/app/app.component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.module.ts","webpack:///src/app/components/eleve/eleve.component.ts","webpack:///src/app/components/eleve/eleve.component.html","webpack:///src/app/components/famille/famille.component.ts","webpack:///src/app/components/famille/famille.component.html","webpack:///src/app/components/inscriptions/inscriptions.component.ts","webpack:///src/app/components/inscriptions/inscriptions.component.html","webpack:///src/app/components/navigation/navigation.component.ts","webpack:///src/app/components/navigation/navigation.component.html","webpack:///src/app/components/rendez-vous/rendez-vous.component.ts","webpack:///src/app/components/rendez-vous/rendez-vous.component.html","webpack:///src/app/components/topnavbar/topnavbar.component.ts","webpack:///src/app/components/topnavbar/topnavbar.component.html","webpack:///src/app/pages/error404/error404.component.ts","webpack:///src/app/pages/error404/error404.component.html","webpack:///src/app/pages/fin/fin.component.ts","webpack:///src/app/pages/fin/fin.component.html","webpack:///src/app/pages/home/home.component.ts","webpack:///src/app/pages/home/home.component.html","webpack:///src/app/shared/helpers/app.helpers.ts","webpack:///src/app/shared/helpers/error.interceptor.ts","webpack:///src/app/shared/models/login.ts","webpack:///src/app/shared/services/auth/auth.service.ts","webpack:///src/app/shared/services/auth/authenticated-guard.service.ts","webpack:///src/app/shared/services/auth/role-guard.service.ts","webpack:///src/app/shared/services/env/env-service.factory.ts","webpack:///src/app/shared/services/env/env-service.service.ts","webpack:///src/app/shared/shared.module.ts","webpack:///src/environments/environment.ts","webpack:///src/main.ts"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","webpackContextKeys","Object","resolve","module","exports","webpackEmptyAsyncContext","Promise","then","routes","path","component","canActivate","redirectTo","AppRoutingModule","forRoot","imports","AppComponent","title","loginInfo","first_name","last_name","avatar","localStorage","setItem","date","API","server","selector","templateUrl","styleUrls","MY_MOMENT_FORMATS","parseInput","fullPickerInput","datePickerInput","timePickerInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","tokenGetter","token","getItem","AppModule","provide","useValue","useClass","multi","config","throwNoTokenError","authScheme","whitelistedDomains","declarations","providers","bootstrap","canceled","api","TelPortableRegExp","courrielRegex","EleveComponent","formBuilder","http","eleveSaved","listeNiveauScolaire","listeStatutEleve","listeCivilite","listeSexe","libelle","loadDataListes","changes","console","log","changements","eleve","selectedEleve","createFormEleve","row","formEleve","group","idCreation","isCreation","isCreationFamille","nom","required","prenom","sexe","dateNaissStr","email","pattern","telephonePortable","civilite","civilite_libelle","statut","niveauScolaire","accordMedia","bool_01","form","patchValue","value","toUpperCase","charAt","substring","dateValue","transform","find","elt","isValide","emit","chp","get","invalid","touched","subListes","unsubscribe","optionsCivilite","params","set","JSON","stringify","optionsNiveauScolaire","optionsStatutEleve","subscribe","data","dataNiveauScolaire","dataStatutEleve","dataCivilite","dataVide","Array","isArray","dataNiveauSColaire","unshift","err","etape","MaDateAfficheePipe","year","month","day","Date","telRegExp","FamilleComponent","ngxSmartModalService","route","indice_eleve_selectionne","nbResponsablePrincipal","nbReinscriptions","calendarPlugins","listeRendezVousDisponibles","options","locale","views","listDay","buttonText","listWeek","listMonth","header","left","center","right","today","week","titleFormat","libelleRendezVous","listeParente","listeCours","listeTypeDisciplines","listeDisciplinesSelectionnee","listeDisciplines","listeTypeRendezVous","messageInfoUtilisateur","responsables_columns","eleves_columns","inscriptions_columns","facture_columns","saved","familleModifiee","messageErreurResponsable","estEleveCourantFISansFM","isDebug","snapshot","queryParamMap","famille","paramMap","prop","name","cellTemplate","minWidth","flexGrow","pipe","listActionTemplateResponsable","listActionTemplateEleve","inscription_professeur_template","listActionTemplateCours","formCommentaire","commentaire","initEtape","avecPassageEtapeSuivante","indiceEleve","eleves","inscriptions","onEditAdresse","verifieCoherenceInscriptions","length","isAuMoinsUneInscription","chargeDonneesRendezVous","window","scroll","optionsParente","dataParente","adresse","formAdresse","adresse1","adresse2","codePostal","ville","saveDonneesModifiees","rowIndex","selectedResponsable","createFormResponsable","getModal","open","responsables","filter","obj","isDeleted","indiceResponsableDejaModifie","findIndex","push","rowResponsable","nextIdCreation","formResponsable","familleId","lienParente","lien_parente_libelle","principal","telephoneDomicile","telephoneMobile","telephoneProfessionnel","respPrincipal","parente","indiceResponsable","close","controleUniciteResponsablePrincipal","nbResponsables","forEach","resp","reducer","bool","res","reduce","dataEleve","indiceEleveDejaModifie","findIndiceMemeObjet","fermeEditEleve","indiceEleveSelectionne","editEleveComponent","saveEleve","tableau","element","objetRecherche","avecValidation","where","data_retour_inscriptions","inscription_retour","idInscriptionOrigine","inscription","id_inscription_an_suiv","id_inscription","inscriptionSupprimee","data_retour_responsables","responsable","idBDD","data_retour_eleves","data_retour_factures","factures","resultatForDebug","indice_eleve","idTypeDiscipline","discipline","type_discipline_id","idDiscipline","formInscription","controls","clearValidators","updateValueAndValidity","setValidators","idParDefaut","libelleDiscipline","messageUtilisateur","libelleEleve","selectedInscription","inscriptionId","idInscription","disciplineId","indexDansFamilleInscriptions","idEleve","ajouteReInscription","createFormChoixCours","rowInscription","indexInscription","ins","reInscription","isReinscriptionDemandee","isReinscriptionImpossible","reinscriptions","ok","libelleCours","formChoixCours","profLibelle","professeur_nom","professeur_prenom","horaireDebut","horaire_debut","Math","trunc","toString","padStart","estListeAttente","isListeAttente","cycle","cycle_libelle","niveau","niveau_libelle","cycleNiveau","discipline_libelle","jour_libelle","idCours","cours","getCours","dateNaissance","dateCalcul","age","timeDiff","abs","floor","reinscriptionsDeEleve","dateStr","setDate","setMonth","CalculateAge","isInscritFM","isInscritFI","inscriptionsDeEleve","isAttPresent","hasOwnProperty","isReinscriptionDemandeeBis","coursSelectionneParUtilisateur","inscriptionAGenerer","idCoursCible","ou","inscriptionsDeFamilleMidifie","optionsDisciplines","optionsTypesDisciplines","eleveEnCours","listeTypesDisciplines","isValidationSimple","undefined","professeurId","professeurNom","professeurPrenom","editNouveauCours","professeur_id","nbInscriptions","modif","indiceInscriptionDejaModifie","changemente","premierTypeRDV","formRendezVous","typeRendezVous","consentement","typeRendezVousChanged","calendarComponent","idTypeRDV","listeRdvDispo","initListeRdv","rdv","extendedProps","start","end","event","rdvSelectionne","m","getApi","fin","format","messageInfo","codePostalRegExp","messageSiEmailDejaUtilise","InscriptionsComponent","router","isCaptchaValidated","captchaResponse","isDataValide","clear","parse","emailUsed","initForm","maxLength","telephone","demande","controleRetourCaptcha","isOk","removeItem","isInvalid","navigate","idCree","rechercheListeRDV","NavigationComponent","routename","url","indexOf","jQuery","toggleClass","toggleNavigation","RendezVousComponent","isRdvConfirme","is_courriel_envoye","calendarApi","gotoDate","idParticipant","rdvToSend","courriel","TopnavbarComponent","Error404Component","FinComponent","HomeComponent","authService","session_expire","has","loginAuto","searchDonneesFamille","error","id_famille","anneeScolaire","correctHeight","pageWrapper","navbarHeigh","height","wrapperHeigh","css","hasClass","detectBody","document","width","addClass","removeClass","smoothlyMenu","hide","setTimeout","fadeIn","removeAttr","ErrorInterceptor","authenticationService","request","next","handle","status","logout","location","reload","message","statusText","Login","AuthService","helper","isAuthenticated","activatedRoute","subscriber","complete","password","isTokenExpired","currentUser","AuthenticatedGuard","auth","authenticated","RoleGuardService","jwt","expectedRole","tokenPayload","decodeToken","includes","role","EnvServiceFactory","env","browserWindow","browserWindowEnv","key","EnvServiceProvider","useFactory","deps","EnvService","enableDebug","providedIn","SharedModule","environment","production","bootstrapModule"],"mappings":"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","file":"main-es5.js","sourcesContent":["var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\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 = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { HomeComponent } from './pages/home/home.component';\nimport { AuthenticatedGuard } from '@shared/services/auth/authenticated-guard.service';\nimport { Error404Component } from './pages/error404/error404.component';\nimport { FinComponent } from './pages/fin/fin.component';\nimport { InscriptionsComponent } from './components/inscriptions/inscriptions.component';\n\nconst routes: Routes = [\n\t/*{\n\t\tpath: '',\n\t\tcomponent: Error404Component,\n },*/\n {\n path: '',\n component: InscriptionsComponent,\n //canActivate: [AuthenticatedGuard]\n },\n\t{\n\t\tpath: 'famille/:token',\n\t\tcomponent: HomeComponent,\n\t\t// canActivate: [AuthenticatedGuard]\n\t},\n\t{\n\t\tpath: 'famille/',\n\t\tcomponent: HomeComponent,\n\t\tcanActivate: [AuthenticatedGuard]\n\t},\n\n\t{\n\t\tpath: 'error',\n\t\tcomponent: Error404Component,\n\t\t// canActivate: [AuthenticatedGuard]\n\t},\n\t{\n\t\tpath: 'fin',\n\t\tcomponent: FinComponent,\n\t},\n\t/*{\n\t\tpath: 'others',\n\t\tloadChildren: './pages/others/others.module#OthersModule',\n\t\t// canActivate: [AuthenticatedGuard]\n\t},*/\n\t// Not lazy-loaded routes\n\t// { path: 'login', component: LoginComponent },\n\n\t{ path: '**', redirectTo: '' }\n\t//Example with auth needed\n\t// {\n\t// \tpath: 'Detail',\n\t// \tcomponent: HomeComponent,\n\t// \tcanActivate: [AuthenticatedGuard]\n\t// },,\n\t//Example with auth needed with role guard\n\t// {\n\t// \tpath: 'Detail',\n\t// \tcomponent: HomeComponent,\n\t// canActivate: [RoleGuard],\n\t// data: {\n\t// \texpectedRole: ['admin']\n\t// }\n\t// },\n];\n\n@NgModule({\n\timports: [RouterModule.forRoot(routes)],\n\texports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\nimport { Login } from './shared/models/login';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n\ttitle = 'cham-V1';\n\tloginInfo: Login = {\n\t\tfirst_name:'Morgan',\n\t\tlast_name:'LC',\n\t\tavatar:'avatar.png',\n\t\ttitle:'Developer'\n};\n\nconstructor() {\n\tlocalStorage.setItem('date_livraison', environment.date);\n\tlocalStorage.setItem('api', environment.API);\n\tlocalStorage.setItem('server', environment.server);\n}\n\t\n}\n","
\n \n\n
\n\n \n\n \n
\n
","import { BrowserModule } from \"@angular/platform-browser\";\nimport { NgModule, LOCALE_ID } from \"@angular/core\";\nimport { JwtModule } from \"@auth0/angular-jwt\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { HttpClientModule, HTTP_INTERCEPTORS } from \"@angular/common/http\";\nimport { registerLocaleData } from \"@angular/common\";\nimport localeFR from \"@angular/common/locales/fr\";\n\nimport { SharedModule } from \"./shared/shared.module\";\nimport { AppRoutingModule } from \"./app-routing.module\";\nimport { AppComponent } from \"./app.component\";\nimport { TopnavbarComponent } from \"./components/topnavbar/topnavbar.component\";\nimport { NavigationComponent } from \"./components/navigation/navigation.component\";\nimport { ErrorInterceptor } from \"@shared/helpers/error.interceptor\";\nimport { RouterModule } from \"@angular/router\";\nimport { HomeComponent } from \"./pages/home/home.component\";\nimport { environment } from \"src/environments/environment\";\nimport { Error404Component } from \"./pages/error404/error404.component\";\nimport { FamilleComponent } from './components/famille/famille.component';\n// import { NgxDatatableModule } from '@swimlane/ngx-datatable';\nimport { NgxSmartModalModule } from 'ngx-smart-modal';\n// import { OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE, OWL_DATE_TIME_FORMATS } from 'ng-pick-datetime';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport { FinComponent } from './pages/fin/fin.component';\nimport { FullCalendarModule } from '@fullcalendar/angular';\nimport { EleveComponent } from './components/eleve/eleve.component';\nimport { InscriptionsComponent } from './components/inscriptions/inscriptions.component';\nimport { RecaptchaModule } from 'ng-recaptcha';\nimport { RendezVousComponent } from './components/rendez-vous/rendez-vous.component';\nimport {\n OWL_DATE_TIME_FORMATS,\n OWL_DATE_TIME_LOCALE,\n OwlDateTimeModule,\n OwlNativeDateTimeModule,\n} from '@danielmoncada/angular-datetime-picker';\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\n\n\nexport const MY_MOMENT_FORMATS = {\n parseInput: 'DD/MM/YYYY',\n fullPickerInput: 'DD/MM/YYYY HH:mm',\n datePickerInput: 'DD/MM/YYYY',\n timePickerInput: 'HH:mm',\n monthYearLabel: 'MM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n};\n\nregisterLocaleData(localeFR, 'fr');\n\nexport function tokenGetter() {\n // return localStorage.getItem(\"id_token\");\n var token = localStorage.getItem(\"id_token\");\n return token;\n}\n\n@NgModule({\n declarations: [\n AppComponent,\n NavigationComponent,\n TopnavbarComponent,\n HomeComponent,\n Error404Component,\n FamilleComponent,\n FinComponent,\n EleveComponent,\n InscriptionsComponent,\n RendezVousComponent,\n ],\n imports: [\n BrowserModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n AppRoutingModule,\n SharedModule,\n OwlDateTimeModule, OwlNativeDateTimeModule,\n BrowserAnimationsModule,\n NgxDatatableModule,\n NgxSmartModalModule.forRoot(),\n JwtModule.forRoot({\n config: {\n throwNoTokenError: false,\n tokenGetter: tokenGetter,\n authScheme: \"\",\n whitelistedDomains: [environment.server] //[environment.API],'test.eveasoft.com'\n }\n }),\n FullCalendarModule,\n RecaptchaModule\n ],\n providers: [\n { provide: LOCALE_ID, useValue: \"fr\" },\n { provide: OWL_DATE_TIME_LOCALE, useValue: 'fr'},\n { provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS},\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","import { Component, OnInit, Input, SimpleChanges, EventEmitter, Output, OnChanges } from '@angular/core';\nimport { FormGroup, Validators, FormBuilder, AbstractControl } from '@angular/forms';\nimport { DatePipe } from '@angular/common';\nimport { HttpParams, HttpClient } from '@angular/common/http';\nimport { forkJoin } from 'rxjs';\nimport { environment } from 'src/environments/environment';\n\nconst api = environment.API;\nconst TelPortableRegExp = '^0[6-7][0-9]{8}$';\nconst courrielRegex = '(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$)';\n\n@Component({\n selector: 'app-eleve',\n templateUrl: './eleve.component.html',\n styleUrls: ['./eleve.component.scss']\n})\nexport class EleveComponent implements OnInit, OnChanges {\n @Input() selectedEleve: Object;\n //@Input() famille_nom: string;\n @Input() isBoutonsVisibles; boolean = true;\n\n @Output() eleveSaved: EventEmitter = new EventEmitter();\n @Output() canceled = new EventEmitter();\n\n public formEleve: FormGroup;\n\n\n // Listes déroulantes\n public listeNiveauScolaire = [];\n public listeStatutEleve = [];\n public listeCivilite = [];\n public listeSexe = [\n {\n id: 'M',\n libelle: 'Masculin'\n },\n {\n id: 'F',\n libelle: 'Féminin'\n }\n ];\n private subListes: any;\n\n constructor(\n private formBuilder: FormBuilder,\n private http: HttpClient,\n ) { }\n\n ngOnInit() {\n this.loadDataListes();\n }\n ngOnChanges(changes: SimpleChanges): void {\n console.log({ changements: changes, eleve: this.selectedEleve});\n if (changes.selectedEleve) {\n if (this.selectedEleve) {\n this.createFormEleve(this.selectedEleve);\n }\n }\n }\n private createFormEleve(row: Object) {\n this.formEleve = this.formBuilder.group({\n id: [\n row['id'],\n ],\n idCreation: [\n row['idCreation'],\n ],\n isCreation: [\n row['isCreation'],\n ],\n isCreationFamille: [\n row['isCreationFamille'],\n ],\n nom: [\n row['nom'],\n Validators.required,\n ],\n prenom: [\n row['prenom'],\n Validators.required,\n ],\n sexe: [\n row['sexe'],\n ],\n dateNaissStr: [\n row['dateNaissStr'],\n Validators.required,\n ],\n email: [\n row['email'], Validators.pattern(courrielRegex),\n ],\n telephonePortable: [\n row['telephonePortable'], Validators.pattern(TelPortableRegExp),\n ],\n civilite: [\n row['civilite'],\n ],\n civilite_libelle: [\n row['civilite_libelle'],\n ],\n statut: [\n row['statut'],\n Validators.required,\n ],\n niveauScolaire: [\n row['niveauScolaire'],\n ],\n accordMedia: [\n row['accordMedia'] == 1 ? true : false,\n ],\n bool_01: [\n row['bool_01'] == 1 ? true : false,\n ],\n });\n };\n\n\n saveEleve() {\n console.log('saveEleve', { eleve: this.selectedEleve, form: this.formEleve });\n const isCreation = this.selectedEleve['isCreation'] === true;\n this.selectedEleve['isValide'] = true;\n // Majuscules\n this.formEleve.patchValue({nom: this.formEleve.value.nom.toUpperCase(), prenom: this.formEleve.value.prenom?(this.formEleve.value.prenom.charAt(0).toUpperCase() + this.formEleve.value.prenom.substring(1)):''});\n if (isCreation\n || this.selectedEleve['email'] != this.formEleve.value.email\n || this.selectedEleve['telephonePortable'] != this.formEleve.value.telephonePortable\n || this.selectedEleve['statut'] != this.formEleve.value.statut\n || this.selectedEleve['niveauScolaire'] != this.formEleve.value.niveauScolaire\n || this.selectedEleve['accordMedia'] != this.formEleve.value.accordMedia\n || this.selectedEleve['bool_01'] != this.formEleve.value.bool_01\n || this.selectedEleve['civilite'] != this.formEleve.value.civilite\n ) {\n if (this.formEleve.value['dateNaissStr']) {\n // Conversion date en string yyyy-mm-dd (format envoyé par le serveur)\n const dateValue = this.formEleve.value['dateNaissStr'];\n this.formEleve.patchValue({\n dateNaissStr: new DatePipe('fr-FR').transform(dateValue, 'yyyy-MM-dd'),\n })\n console.log('date convertie pour enregistrement', this.formEleve.value['dateNaissStr']);\n }\n if (this.selectedEleve['civilite'] != this.formEleve.value.civilite) {\n // civilite modifie\n const civilite = this.listeCivilite.find(elt=>elt.id == this.formEleve.value.civilite);\n if (civilite) {\n this.formEleve.patchValue({civilite_libelle: civilite.libelle});\n }\n }\n this.formEleve.patchValue({isValide: true});\n this.eleveSaved.emit(this.formEleve.value);\n }\n else {\n console.log('pas de modification sur l eleve');\n this.eleveSaved.emit(null); // Si pas de modification\n }\n }\n\n\n public isError(form: FormGroup, chp: string): boolean {\n return form.get(chp) && form.get(chp).invalid && form.get(chp).touched;\n }\n loadDataListes() {\n if (this.subListes) {\n this.subListes.unsubscribe();\n }\n const optionsCivilite = {\n params: new HttpParams().set('service', 'ServiceReference')\n .set('method', 'getReferenceObjects')\n .set('params', JSON.stringify(['ref_civilite']))\n };\n const optionsNiveauScolaire = {\n params: new HttpParams().set('service', 'ServiceReference')\n .set('method', 'getReferenceObjects')\n .set('params', JSON.stringify(['ref_niveau_scolaire']))\n };\n const optionsStatutEleve = {\n params: new HttpParams().set('service', 'ServiceReference')\n .set('method', 'getReferenceObjects')\n .set('params', JSON.stringify(['ref_statut_eleve']))\n };\n this.subListes=forkJoin([\n this.http.get(api, optionsNiveauScolaire),\n this.http.get(api, optionsStatutEleve),\n this.http.get(api, optionsCivilite)\n ]\n )\n .subscribe(data => {\n const [dataNiveauScolaire, dataStatutEleve, dataCivilite] = data;\n // console.log(data, this.listeNiveauScolaire);\n const dataVide = { id: null, libelle: '' };\n\n if (!Array.isArray(dataNiveauScolaire)) {\n let dataNiveauSColaire=[];\n }\n this.listeNiveauScolaire = dataNiveauScolaire;\n if (!Array.isArray(this.listeNiveauScolaire)) {\n this.listeNiveauScolaire = [];\n }\n this.listeNiveauScolaire = [... this.listeNiveauScolaire]\n this.listeNiveauScolaire.unshift(dataVide);\n\n if (!Array.isArray(dataCivilite)) {\n let dataCivilite=[];\n }\n this.listeCivilite = dataCivilite;\n if (!Array.isArray(this.listeCivilite)) {\n this.listeCivilite = [];\n }\n this.listeCivilite = [... this.listeCivilite]\n // this.listeCivilite.unshift(dataVide);\n\n if (!Array.isArray(dataStatutEleve)) {\n let dataStatutEleve=[];\n }\n this.listeStatutEleve = dataStatutEleve;\n if (!Array.isArray(this.listeStatutEleve)) {\n this.listeStatutEleve = [];\n }\n this.listeStatutEleve = [... this.listeStatutEleve]\n // this.listeStatutEleve.unshift(dataVide);\n },\n err => console.log(err));\n }\n}\n","
\n
\n
\n \n
\n \n\n
\n \n
\n \n
\n
\n Nom obligatoire\n
\n
\n
\n \n
\n \n
\n
\n Prénom obligatoire\n
\n
\n\n\n
\n \n
\n \n \n
\n
\n Date naissance obligatoire\n
\n
\n
\n \n
\n \n
\n
\n\n
\n \n
\n \n
\n
\n\n
\n \n
\n \n
\n
\n Téléphone mobile mal formaté (doit commencer par 06 ou 07)\n
\n
\n
\n \n
\n \n
\n
\n Courriel mal formaté\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","import { Component, OnInit, Input, OnChanges, SimpleChanges, ViewChild, Output, EventEmitter, TemplateRef } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators, AbstractControl } from '@angular/forms';\nimport { NgxSmartModalService } from 'ngx-smart-modal';\nimport { DatePipe } from '@angular/common';\nimport { environment } from 'src/environments/environment';\nimport { HttpParams, HttpClient } from '@angular/common/http';\nimport { forkJoin } from 'rxjs';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport listPlugin from '@fullcalendar/list';\nimport bootstrapPlugin from '@fullcalendar/bootstrap';\nimport { FullCalendarComponent } from '@fullcalendar/angular';\nimport momentPlugin from '@fullcalendar/moment';\nimport { toMoment, toDuration } from '@fullcalendar/moment';\n// import { RowHeightCache } from '@swimlane/ngx-datatable/release/utils';\nimport { ActivatedRoute } from '@angular/router';\n\nconst api = environment.API;\nconst MaDateAfficheePipe = {\n transform: (value) => {\n if (!value) {\n return '';\n }\n if (value !== +value) {\n const year = value.substring(0, 4);\n const month = value.substring(5, 7);\n const day = value.substring(8, 10);\n value = new Date(year, month - 1, day);\n }\n return value ? new DatePipe('fr-FR').transform(value) : '';\n }\n};\nconst TelPortableRegExp = '^0[6-7][0-9]{8}$';\nconst telRegExp = '^0[0-9]{9}$';\nconst courrielRegex = '(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9]+$)';\n\n@Component({\n selector: 'app-famille',\n templateUrl: './famille.component.html',\n styleUrls: ['./famille.component.scss']\n})\nexport class FamilleComponent implements OnInit, OnChanges {\n public resultatForDebug; // Variable uniquement utilisée pour afficher un debug à l'écran\n public etape: number = 1;\n public indice_eleve_selectionne: number = -1;\n\n public nbResponsablePrincipal = 1;\n public nbReinscriptions = 99; // Pour ne pas afficher le message d'erreur lorsqu'on arrive et que le calcul n'a pas encore été réalisé\n\n calendarPlugins = [dayGridPlugin, listPlugin, bootstrapPlugin, momentPlugin]; // important!\n public listeRendezVousDisponibles = [];\n @ViewChild('calendar') calendarComponent: FullCalendarComponent;\n public options = {\n locale: 'fr',\n views: {\n listDay: { buttonText: 'jour' },\n listWeek: { buttonText: 'semaine' },\n listMonth: { buttonText: 'mois' }\n },\n header: {\n left: 'title',\n center: 'prev,next today',\n right: ' listDay,listWeek,listMonth dayGridDay,dayGridWeek,dayGridMonth' // listDay,listWeek,listMonth\n },\n buttonText: {\n today: 'Aujourd\\'hui',\n month: 'mois',\n week: 'semaine',\n day: 'jour'\n },\n titleFormat: 'D MMMM YYYY'\n }\n public libelleRendezVous = '';\n private rdvSelectionne;\n\n @ViewChild('editEleveComponent') editEleveComponent: any;\n\n // Listes déroulantes\n // public listeNiveauScolaire = [];\n // public listeStatutEleve = [];\n public listeParente = [];\n public listeCivilite = [];\n public listeCours = []; // Cours de l'année n (année courante). Ne pas confondre avec les cours de l'année n+1\n public listeTypeDisciplines = [];\n public listeDisciplinesSelectionnee = [];\n protected listeDisciplines = [];\n public listeTypeRendezVous = [];\n\n private subListes: any;\n // Colonnes actions des tableaux\n @ViewChild('listActionTemplateResponsable', { static: true }) listActionTemplateResponsable;\n @ViewChild('listActionTemplateEleve', { static: true }) listActionTemplateEleve;\n @ViewChild('listActionTemplateCours', { static: true }) listActionTemplateCours;\n\n // Templates des colonnes affichage nom prenom\n\n @ViewChild('inscription_eleve_template', { static: true }) inscription_eleve_template;\n @ViewChild('inscription_professeur_template', { static: true }) inscription_professeur_template: TemplateRef;\n @ViewChild('editNouveauCours') editNouveauCours;\n @ViewChild('messageInfo') messageInfo;\n public messageInfoUtilisateur = \"\";\n\n // Colonnes des tableaux (initialisées dans ngOnInit pour que les templates soient déjà chargés)\n responsables_columns = [];\n eleves_columns = [];\n inscriptions_columns = [];\n facture_columns = [];\n\n @Input() famille: {\n nom: string,\n id: number,\n eleves: Object[],\n responsables: Object[],\n inscriptions: Object[],\n adresse: Object,\n commentaire: string;\n };\n public factures: Object[];\n\n @Output() saved: EventEmitter = new EventEmitter();\n\n // Donnees modifiees ou creees\n familleModifiee: {\n adresse?: Object,\n responsables?: Object[],\n eleves?: Object[],\n inscriptions?: {\n isReinscriptionDemandee,\n isReinscriptionImpossible,\n }[],\n } = {};\n\n public formAdresse: FormGroup;\n public formResponsable: FormGroup;\n public messageErreurResponsable = '';\n private selectedResponsable: Object;\n\n public selectedEleve: Object;\n public estEleveCourantFISansFM: boolean = false;\n public formChoixCours: FormGroup;\n public selectedInscription: Object;\n public formCommentaire: FormGroup;\n public formInscription: FormGroup;\n\n public formRendezVous: FormGroup;\n public isDebug: boolean = false;\n constructor(\n private formBuilder: FormBuilder,\n public ngxSmartModalService: NgxSmartModalService,\n private http: HttpClient,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit() {\n this.isDebug = this.route.snapshot.queryParamMap.get('debug') == 'true';\n if (this.isDebug) console.log({ famille: this.famille,\n isDebug: this.isDebug,\n params: this.route.snapshot.paramMap,\n queryParamMap: this.route.snapshot.queryParamMap\n });\n localStorage.setItem('title', this.famille.nom + ' (' + this.famille.id + ')');\n this.loadDataListes();\n this.responsables_columns = [\n // { prop: 'lien_parente_libelle', name: 'Lien parenté', cellTemplate: '', minWidth: 25 },\n { prop: 'civilite_libelle', name: 'Civilité', cellTemplate: '', minWidth: 25, flexGrow: 1 },\n { prop: 'nom', name: 'Nom', cellTemplate: '', minWidth: 50, flexGrow: 2 },\n { prop: 'prenom', name: 'Prénom', flexGrow: 2 },\n { prop: 'telephoneDomicile', name: 'Tél domicile', flexGrow: 2 },\n { prop: 'telephoneMobile', name: 'Tél mobile', flexGrow: 2 },\n { prop: 'telephoneProfessionnel', name: 'Tél Pro', flexGrow: 2 },\n { prop: 'email', name: 'Courriel', flexGrow: 4 },\n { prop: 'respPrincipal', name: 'Principal', pipe: { transform: (value) => { return value == 1 ? 'X' : '' } }, flexGrow: 1 },\n { prop: 'actions', name: 'Actions', cellTemplate: this.listActionTemplateResponsable, minWidth: 50, flexGrow: 2 },\n ];\n this.eleves_columns = [\n { prop: 'civilite_libelle', name: 'Civilité', cellTemplate: '', flexGrow: 1 },\n { prop: 'nom', name: 'Nom', flexGrow: 2 },\n { prop: 'prenom', name: 'Prénom', flexGrow: 2 },\n { prop: 'sexe', name: 'Sexe', flexGrow: 1 },\n { prop: 'dateNaissStr', name: 'Date naissance', pipe: MaDateAfficheePipe, flexGrow: 2 },\n { prop: 'email', name: 'Courriel', flexGrow: 4 },\n { prop: 'telephonePortable', name: 'Tél mobile', flexGrow: 2 },\n { prop: 'actions', name: 'Actions', cellTemplate: this.listActionTemplateEleve, flexGrow: 2 }, // minWidth: 50,\n ];\n\n this.inscriptions_columns = [\n //{ name: 'Eleve', minWidth: 30, cellTemplate: this.inscription_eleve_template },\n { prop: 'discipline_libelle', name: 'Discipline', cellTemplate: '', minWidth: 30 },\n { name: 'Professeur', cellTemplate: this.inscription_professeur_template, minWidth: 30 },\n // { prop: 'jourLibelle', name: 'Jour', cellTemplate: '', minWidth: 10 },\n // { prop: 'duree', name: 'Durée (min)', cellTemplate: '', minWidth: 10 },\n // { prop: 'cycle_libelle', name: 'Cycle', cellTemplate: '', minWidth: 10 },\n // { prop: 'niveau_libelle', name: 'Niveau', cellTemplate: '', minWidth: 10 },\n { prop: 'next_cycle_libelle', name: 'Cycle futur', cellTemplate: '', minWidth: 10 },\n { prop: 'next_niveau_libelle', name: 'Niveau futur', cellTemplate: '', minWidth: 10 },\n { prop: 'actions', name: 'Pré-inscription', cellTemplate: this.listActionTemplateCours, minWidth: 50, }\n ];\n\n this.formCommentaire = this.formBuilder.group({\n commentaire: [this.famille && this.famille.commentaire ? this.famille.commentaire : null],\n });\n\n this.facture_columns = [\n { prop: 'libelle', name: 'Libellé', cellTemplate: '', minWidth: 30 },\n { prop: 'montantFinal', name: 'Montant', cellTemplate: '', minWidth: 30 },\n ];\n\n this.initEtape(false);\n }\n initEtape(avecPassageEtapeSuivante = true) {\n if (this.isDebug) console.log('initEtape debut', { etape: this.etape, indiceEleve: this.indice_eleve_selectionne, avecPassageEtapeSuivante, eleves: this.famille.eleves, inscriptions: this.famille.inscriptions, });\n switch (this.etape) {\n case 1: // Adresse\n if (avecPassageEtapeSuivante) {\n this.etape++;\n }\n this.onEditAdresse();\n break;\n case 2: // Responsables\n if (avecPassageEtapeSuivante) {\n this.etape++;\n // Vu que l'on passe à l'étape élève, il faut initialiser l'indice de l'élève à traiter\n this.indice_eleve_selectionne = 0;\n this.selectedEleve = this.famille.eleves[this.indice_eleve_selectionne];\n this.verifieCoherenceInscriptions();\n }\n break;\n case 3: // Elèves avec inscriptions\n if (avecPassageEtapeSuivante) {\n if (this.famille.eleves && this.famille.eleves.length > 0) {\n if (this.indice_eleve_selectionne + 1 < this.famille.eleves.length) {\n // Passage à l'élève suivant\n this.indice_eleve_selectionne++;\n this.selectedEleve = this.famille.eleves[this.indice_eleve_selectionne];\n } else {// Passage etape suivante\n this.indice_eleve_selectionne = -1;\n this.selectedEleve = null;\n this.etape++;\n }\n } else {\n this.indice_eleve_selectionne = -1;\n this.selectedEleve = null;\n this.etape++;\n }\n }\n this.verifieCoherenceInscriptions();\n break;\n case 4: // Récapitulatif élèves avec inscriptions (mais sans estimation du cout)\n if (avecPassageEtapeSuivante) {\n this.etape++;\n }\n this.isAuMoinsUneInscription(); // pour calculer le nombre d'inscriptions\n break;\n case 5: // Affichage cout (sans le récap)\n if (avecPassageEtapeSuivante) {\n this.etape++;\n this.chargeDonneesRendezVous();\n }\n break;\n case 6: // Prise de rendez-vous\n if (avecPassageEtapeSuivante) {\n this.etape++;\n }\n break;\n case 7: // Confirmation RDV\n localStorage.setItem('title', '');\n break;\n }\n if (this.isDebug) console.log('initEtape fin', { etape: this.etape, indiceEleve: this.indice_eleve_selectionne, eleves: this.famille.eleves });\n window.scroll(0, 231); //231 = hauteur de l'entête\n }\n goEtape(etape) {\n // console.log('goEtape', etape);\n this.etape = etape;\n /*if (etape == 4) {\n //Recharger les données inscriptions : simplifie le cas ou l'utilisateur a réinscrit puis supprimé puis réinscrit pour la même inscription\n this.saveDonneesModifiees(false, false);\n }*/\n if (etape == 3 && this.famille.eleves && this.famille.eleves.length > 0) {\n this.indice_eleve_selectionne = 0\n this.selectedEleve = this.famille.eleves[this.indice_eleve_selectionne];\n this.verifieCoherenceInscriptions();\n }\n }\n goEtapePrecedente() {\n if (this.isDebug) console.log('goEtapePrecedente debut', { etape: this.etape, indiceEleve: this.indice_eleve_selectionne });\n switch (this.etape) {\n case 3: // Eleves\n if (this.indice_eleve_selectionne == 0) {\n // On est sur le 1er eleve => passage étape précédents\n this.indice_eleve_selectionne = -1;\n this.selectedEleve = null;\n this.etape--;\n } else {\n // Passage sur l'eleve precedent\n this.indice_eleve_selectionne--;\n this.selectedEleve = this.famille.eleves[this.indice_eleve_selectionne];\n }\n break;\n case 4: //\n this.etape--;\n this.indice_eleve_selectionne = 0;\n this.selectedEleve = this.famille.eleves[this.indice_eleve_selectionne];\n break;\n default:\n this.etape--;\n break;\n }\n if (this.isDebug) console.log('goEtapePrecedente fin', { etape: this.etape, indiceEleve: this.indice_eleve_selectionne });\n }\n loadDataListes() {\n if (this.subListes) {\n this.subListes.unsubscribe();\n }\n const optionsParente = {\n params: new HttpParams().set('service', 'ServiceReference')\n .set('method', 'getReferenceObjects')\n .set('params', JSON.stringify(['ref_parente']))\n };\n const optionsCivilite = {\n params: new HttpParams().set('service', 'ServiceReference')\n .set('method', 'getReferenceObjects')\n .set('params', JSON.stringify(['ref_civilite']))\n };\n\n const optionsNiveauScolaire = {\n params: new HttpParams().set('service', 'ServiceReference')\n .set('method', 'getReferenceObjects')\n .set('params', JSON.stringify(['ref_niveau_scolaire']))\n };\n const optionsStatutEleve = {\n params: new HttpParams().set('service', 'ServiceReference')\n .set('method', 'getReferenceObjects')\n .set('params', JSON.stringify(['ref_statut_eleve']))\n };\n forkJoin([\n this.http.get(api, optionsParente),\n this.http.get(api, optionsCivilite)\n ]\n //this.http.get(api, optionsNiveauScolaire),\n //this.http.get(api, optionsStatutEleve),\n\n )\n .subscribe(data => {\n //const [dataNiveauScolaire, dataStatutEleve, dataParente, dataCivilite] = data;\n const [dataParente, dataCivilite] = data;\n // console.log(data, this.listeNiveauScolaire);\n const dataVide = { id: null, libelle: '' };\n\n /*if (!Array.isArray(dataNiveauScolaire)) {\n let dataNiveauSColaire=[];\n }\n this.listeNiveauScolaire = dataNiveauScolaire;\n if (!Array.isArray(this.listeNiveauScolaire)) {\n this.listeNiveauScolaire = [];\n }\n this.listeNiveauScolaire = [... this.listeNiveauScolaire]\n this.listeNiveauScolaire.unshift(dataVide);*/\n\n if (!Array.isArray(dataParente)) {\n let dataParente = [];\n }\n this.listeParente = dataParente;\n if (!Array.isArray(this.listeParente)) {\n this.listeParente = [];\n }\n this.listeParente = [... this.listeParente]\n this.listeParente.unshift(dataVide);\n\n if (!Array.isArray(dataCivilite)) {\n let dataCivilite = [];\n }\n this.listeCivilite = dataCivilite;\n if (!Array.isArray(this.listeCivilite)) {\n this.listeCivilite = [];\n }\n this.listeCivilite = [... this.listeCivilite]\n // this.listeCivilite.unshift(dataVide);\n\n /*if (!Array.isArray(dataStatutEleve)) {\n let dataStatutEleve=[];\n }\n this.listeStatutEleve = dataStatutEleve;\n if (!Array.isArray(this.listeStatutEleve)) {\n this.listeStatutEleve = [];\n }\n this.listeStatutEleve = [... this.listeStatutEleve]\n // this.listeStatutEleve.unshift(dataVide);*/\n },\n err => console.log(err));\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (this.isDebug) console.log(changes, this.famille);\n if (changes.famille) {\n if (this.isDebug) console.log('###### famille changed', this.famille.eleves);\n }\n //this.initEtape();\n\n }\n\n // ###################### ADRESSE #############################################################\n adresse() {\n return this.famille && this.famille.adresse ? this.famille.adresse : {};\n }\n\n public isError(form: FormGroup, chp: string): boolean {\n return form.get(chp) && form.get(chp).invalid && form.get(chp).touched;\n }\n\n onEditAdresse() {\n // console.log('onEditAdresse'), this.adresse(), this.adresse()['adresse_1'];\n this.formAdresse = this.formBuilder.group({\n id: [\n this.adresse()['id'],\n ],\n adresse1: [\n this.adresse()['adresse1'],\n Validators.required,\n ],\n adresse2: [\n this.adresse()['adresse2'],\n ],\n codePostal: [\n this.adresse()['codePostal'],\n Validators.required,\n ],\n ville: [\n this.adresse()['ville'],\n Validators.required,\n ],\n });\n // On ne passe plus par la popup\n // this.ngxSmartModalService.getModal('editAdresse').open();\n }\n saveAdresse() {\n // console.log('saveAdresse');\n if (this.adresse()['adresse1'] != this.formAdresse.value.adresse1\n || this.adresse()['adresse2'] != this.formAdresse.value.adresse2\n || this.adresse()['codePostal'] != this.formAdresse.value.codePostal\n || this.adresse()['ville'] != this.formAdresse.value.ville) {\n if (this.isDebug) console.log('adresse modifiee');\n this.famille.adresse = this.formAdresse.value;\n this.familleModifiee.adresse = this.formAdresse.value;\n this.saveDonneesModifiees();\n } else {\n this.initEtape();\n }\n }\n\n\n\n // ###################### RESPONSABLE #############################################################\n onEditResponsable(rowIndex, row) {\n // console.log('onEditResponsable', rowIndex, row);\n this.selectedResponsable = row;\n this.createFormResponsable(row);\n this.ngxSmartModalService.getModal('editResponsable').open();\n }\n onDeleteResponsable(rowIndex, row) {\n // console.log('onDeleteResponsable', row);\n if (row.id == null) {\n // objet n'existe pas encore en BDD => suppression de l'élève (pas d'inscriptions car non propose par l'interface)\n if (this.isDebug) console.log('onDeleteResponsable', row, this.famille, this.familleModifiee);\n // suppression de la liste this.familleModifiee.responsables\n this.familleModifiee.responsables = this.familleModifiee.responsables.filter(obj => { return obj['idCreation'] != row['idCreation'] });\n // Suppression de la liste this.famille.responsables\n this.famille.responsables = this.famille.responsables.filter(obj => { return obj['idCreation'] != row['idCreation'] });\n } else {\n // mettre isDeleted à 1\n row.isDeleted = 1;\n // Mise à jour liste des éléments modifiés\n const indiceResponsableDejaModifie = this.familleModifiee.responsables ? this.familleModifiee.responsables.findIndex((value) => value['id'] == row.id) : -1;\n if (indiceResponsableDejaModifie < 0) {\n if (!this.familleModifiee.responsables) {\n this.familleModifiee.responsables = [];\n }\n this.familleModifiee.responsables.push(row);\n } else {\n this.familleModifiee.responsables[indiceResponsableDejaModifie] = row;\n }\n // console.log('proceder a la suppression en BDD : pour le moment on n accepte la suppression uniquement pour les objets non encore enregistres');\n }\n }\n addResponsable() {\n const rowResponsable = {\n id: null,\n isCreation: true,\n nom: this.famille['nom'],\n idCreation: this.nextIdCreation(this.famille.responsables),\n isCreationFamille: 1,\n };\n if (this.isDebug) console.log('addResponsable', rowResponsable);\n this.selectedResponsable = rowResponsable;\n this.createFormResponsable(rowResponsable);\n this.ngxSmartModalService.getModal('editResponsable').open();\n }\n private createFormResponsable(row: Object) {\n this.formResponsable = this.formBuilder.group({\n id: [\n row['id'],\n ],\n idCreation: [\n row['idCreation'],\n ],\n isCreation: [\n row['isCreation'],\n ],\n isCreationFamille: [\n row['isCreationFamille'],\n ],\n civilite: [\n row['civilite'],\n ],\n civilite_libelle: [\n row['civilite_libelle'],\n ],\n email: [\n row['email'], Validators.pattern(courrielRegex),\n ],\n familleId: [\n row['familleId'],\n ],\n lienParente: [\n row['lienParente'],\n ],\n lien_parente_libelle: [\n row['lien_parente_libelle'],\n ],\n nom: [\n row['nom'],\n Validators.required,\n ],\n prenom: [\n row['prenom'],\n ],\n principal: [\n row['respPrincipal'] == 1,\n ],\n telephoneDomicile: [\n row['telephoneDomicile'], Validators.pattern(telRegExp),\n ],\n telephoneMobile: [\n row['telephoneMobile'], Validators.pattern(TelPortableRegExp),\n ],\n telephoneProfessionnel: [\n row['telephoneProfessionnel'], Validators.pattern(telRegExp),\n ],\n });\n }\n saveResponsable() {\n // Obliger la saisie d'un téléphone ou du courriel\n this.messageErreurResponsable = '';\n if (!this.formResponsable.value.email\n && !this.formResponsable.value.telephoneDomicile\n && !this.formResponsable.value.telephoneMobile\n && !this.formResponsable.value.telephoneProfessionnel) {\n this.messageErreurResponsable = \"Veuillez saisir au moins un numéro de téléphone ou l'adresse email\";\n return;\n }\n if (this.isDebug) console.log('saveResponsable', this.formResponsable.value, this.famille.responsables);\n const isCreation = this.selectedResponsable['isCreation'] === true;\n this.formResponsable.patchValue({\n nom: this.formResponsable.value.nom.toUpperCase(),\n prenom: (this.formResponsable.value.prenom && this.formResponsable.value.prenom.length > 0) ?\n (this.formResponsable.value.prenom.charAt(0).toUpperCase() + this.formResponsable.value.prenom.substring(1)) : ''\n });\n\n if (isCreation\n || this.selectedResponsable['email'] != this.formResponsable.value.email\n || this.selectedResponsable['telephoneDomicile'] != this.formResponsable.value.telephoneDomicile\n || this.selectedResponsable['telephoneMobile'] != this.formResponsable.value.telephoneMobile\n || this.selectedResponsable['telephoneProfessionnel'] != this.formResponsable.value.telephoneProfessionnel\n || this.selectedResponsable['lienParente'] != this.formResponsable.value.lienParente\n || this.selectedResponsable['civilite'] != this.formResponsable.value.civilite\n || this.selectedResponsable['pricipal'] != this.formResponsable.value.principal\n ) {\n // console.log('responsable modifie', this.formResponsable.value);\n if (this.selectedResponsable['pricipal'] != this.formResponsable.value.principal) {\n if (this.formResponsable.value.principal) {\n // Principal a ete coche => decocher sur les autres responsables -> sera à faire côté serveur ?\n }\n }\n this.formResponsable.value.respPrincipal = (this.formResponsable.value.principal ? '1' : '0');\n if (this.selectedResponsable['lienParente'] != this.formResponsable.value.lienParente) {\n // lien parente modifie\n const parente = this.listeParente.find(elt => elt.id == this.formResponsable.value.lienParente);\n // console.log('lien parente modifie', this.formResponsable.value.lienParente, parente);\n if (parente) {\n this.formResponsable.patchValue({ lien_parente_libelle: parente.libelle });\n }\n }\n if (this.selectedResponsable['civilite'] != this.formResponsable.value.civilite) {\n // civilite modifie\n const civilite = this.listeCivilite.find(elt => elt.id == this.formResponsable.value.civilite);\n if (civilite) {\n this.formResponsable.patchValue({ civilite_libelle: civilite.libelle });\n }\n }\n // Mise à jour liste des éléments modifiés\n // Si c'est une création (isCreation==true), il ne faut pas regarder l'id mais idCreation\n const indiceResponsableDejaModifie = this.familleModifiee.responsables ? this.familleModifiee.responsables.findIndex((value) => this.formResponsable.value.isCreation == true ? value['idCreation'] == this.formResponsable.value.idCreation : value['id'] == this.formResponsable.value.id) : -1;\n if (indiceResponsableDejaModifie < 0) {\n if (!this.familleModifiee.responsables) {\n this.familleModifiee.responsables = [];\n }\n this.familleModifiee.responsables.push(this.formResponsable.value);\n } else {\n this.familleModifiee.responsables[indiceResponsableDejaModifie] = this.formResponsable.value;\n }\n // Mise à jour dans les données d'origine pour l'affichege direct\n const indiceResponsable = this.famille.responsables ? this.famille.responsables.findIndex((value) => this.formResponsable.value.isCreation == true ? value['idCreation'] == this.formResponsable.value.idCreation : value['id'] == this.formResponsable.value.id) : -1;\n if (indiceResponsable < 0) {\n // Normalement impossible car on a ouvert le resppnsable à partir de cette liste\n // Normalement impossible sauf si création car on a ouvert l'eleve à partir de cette liste\n if (isCreation) {\n this.famille.responsables.push(this.formResponsable.value);\n this.famille.responsables = [...this.famille.responsables];\n }\n } else {\n this.famille.responsables[indiceResponsable] = this.formResponsable.value;\n this.famille.responsables = [...this.famille.responsables];\n }\n }\n this.ngxSmartModalService.close('editResponsable');\n this.controleUniciteResponsablePrincipal();\n if (this.isDebug) console.log('saveResponsable (fin)', this.famille.responsables);\n }\n controleUniciteResponsablePrincipal() {\n let nbResponsables = 0;\n this.famille.responsables.forEach(resp => {\n if (resp['respPrincipal'] == 1 && resp['isDeleted'] != 1) {\n nbResponsables++;\n }\n });\n this.nbResponsablePrincipal = nbResponsables;\n if (this.nbResponsablePrincipal == 1) {\n if (this.isDebug) console.log('enregistrement responsables', this.nbResponsablePrincipal);\n return true;\n } else {\n if (this.isDebug) console.log('problème sur le nombre de responsable principal : ', this.nbResponsablePrincipal);\n return false;\n }\n }\n validerResponsables() {\n // enregistrer les données uniquement s'il y a un et un seul responsable principal\n if (this.controleUniciteResponsablePrincipal()) {\n this.saveDonneesModifiees();\n } else {\n this.initEtape();\n }\n\n }\n\n // ###################### ELEVE #############################################################\n existeEleveCreeParFamille() {\n // console.log('existeEleveCreeParFamille');\n if (this.famille && this.famille.eleves) {\n const reducer = (bool, eleve) => bool || +eleve.isCreationFamille==1;\n const res = this.famille.eleves.reduce(reducer, false);\n // console.log({ res, eleves: this.famille.eleves, etape: this.etape});\n return res;\n } else {\n return false;\n }\n //isCreationFamille\n }\n libelleElevesCreesParFamille() {\n // console.log('libelleElevesCreesParFamille');\n if (this.famille && this.famille.eleves) {\n const reducer = (libelle, eleve) => libelle + (+eleve.isCreationFamille == 1 ? eleve.prenom+' ' : '');\n const res = this.famille.eleves.reduce(reducer, '');\n // console.log({ res, eleves: this.famille.eleves, etape: this.etape });\n return res;\n } else {\n return '';\n }\n }\n eleveSaved(dataEleve) {\n if (this.isDebug) console.log('eleveSaved', dataEleve);\n if (dataEleve) {\n // Mise à jour liste des éléments modifiés\n const indiceEleveDejaModifie = this.findIndiceMemeObjet(this.familleModifiee.eleves, dataEleve);\n if (this.isDebug) console.log({ indiceEleveDejaModifie });\n /*this.familleModifiee.eleves ?\n this.familleModifiee.eleves.findIndex((value) =>\n value['isCreation'] ? value['idCreation'] == this.formEleve.value.idCreation : value['id'] == this.formEleve.value.id)\n : -1;*/\n if (indiceEleveDejaModifie < 0) {\n if (!this.familleModifiee.eleves) {\n this.familleModifiee.eleves = [];\n }\n this.familleModifiee.eleves.push(dataEleve);\n } else {\n this.familleModifiee.eleves[indiceEleveDejaModifie] = dataEleve;\n }\n // Mise à jour dans les données d'origine pour l'affichege direct\n const indiceEleve = this.findIndiceMemeObjet(this.famille.eleves, dataEleve);\n if (this.isDebug) console.log({ indiceEleve })\n // this.famille.eleves ? this.famille.eleves.findIndex((value) => value['id'] == this.formEleve.value.id) : -1;\n if (indiceEleve < 0) {\n // Normalement impossible sauf si création car on a ouvert l'eleve à partir de cette liste\n const isCreation = this.selectedEleve['isCreation'] === true;\n if (isCreation) {\n this.famille.eleves.push(dataEleve);\n this.famille.eleves = [...this.famille.eleves];\n this.saveDonneesModifiees(false,false); // enregistrement données pour pouvoir ajouter des inscriptions sur l'élève sans aller jusqu'à la synthèse\n }\n } else {\n this.famille.eleves[indiceEleve] = dataEleve;\n this.famille.eleves = [...this.famille.eleves];\n }\n }\n this.fermeEditEleve();\n }\n addEleve() {\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'initNewEleve')\n // .set('params', JSON.stringify([localStorage.getItem('id_famille'), localStorage.getItem('anneeScolaire'), this.familleModifiee, avecValidation])) // JSON.stringify({ token: token }) //id_famille\n };\n this.http.get(api, options).subscribe(data=>{\n if (this.isDebug) console.log(data);\n data['id'] = null;\n data['isCreation'] = true;\n data['nom'] = this.famille['nom'];\n data['idCreation'] = this.nextIdCreation(this.famille.eleves);\n data['isCreationFamille'] = 1;\n this.selectedEleve = data;\n this.ngxSmartModalService.getModal('editEleve').open();\n });\n /*const rowEleve = {\n id: null,\n isCreation: true,\n nom: this.famille['nom'],\n idCreation: this.nextIdCreation(this.famille.eleves),\n isCreationFamille: 1,\n };\n console.log('addEleve', rowEleve);\n this.selectedEleve = rowEleve;\n //this.createFormEleve(rowEleve);\n this.ngxSmartModalService.getModal('editEleve').open();*/\n }\n\n onEditEleve(rowIndex, row) {\n if (this.isDebug) console.log('onEditEleve', { rowIndex, row, eleves: this.famille.eleves });\n this.selectedEleve = row;\n //this.createFormEleve(row);\n //console.log(this.formEleve);\n this.ngxSmartModalService.getModal('editEleve').open();\n if (this.isDebug) console.log('onEditEleve opened', { rowIndex, row, eleves: this.famille.eleves });\n }\n fermeEditEleve() {\n this.ngxSmartModalService.getModal('editEleve').close();\n if (this.isDebug) console.log({ indiceEleveSelectionne: this.indice_eleve_selectionne });\n if (this.indice_eleve_selectionne >= 0) {\n this.selectedEleve = this.famille.eleves[this.indice_eleve_selectionne];\n } else {\n this.selectedEleve = null;\n }\n if (this.isDebug) console.log(this.selectedEleve);\n }\n onDeleteEleve(rowIndex, row) {\n if (this.isDebug) console.log('onDeleteEleve', row);\n if (row.id == null) {\n // objet n'existe pas encore en BDD => suppression de l'élève (pas d'inscriptions car non propose par l'interface)\n if (this.isDebug) console.log('onDeleteEleve', row, this.famille, this.familleModifiee);\n\n // suppression de la liste this.familleModifiee.eleves\n // const indexEleveDansFamilleModifieeEleves = this.familleModifiee.eleves.findIndex(eleve=>{return eleve['idCreation']=row['idCreation']});\n this.familleModifiee.eleves = this.familleModifiee.eleves.filter(eleve => { return eleve['idCreation'] != row['idCreation'] });\n // Suppression de la liste this.famille.eleves\n // const indexEleveDansFamilleEleves = this.famille.eleves.findIndex(eleve=>{return eleve['idCreation']=row['idCreation']});\n this.famille.eleves = this.famille.eleves.filter(eleve => { return eleve['idCreation'] != row['idCreation'] });\n } else {\n // mettre isDeleted à 1\n row.isDeleted = 1;\n // Mise à jour liste des éléments modifiés\n const indiceEleveDejaModifie = this.familleModifiee.eleves ? this.familleModifiee.eleves.findIndex((value) => value['id'] == row.id) : -1;\n if (indiceEleveDejaModifie < 0) {\n if (!this.familleModifiee.eleves) {\n this.familleModifiee.eleves = [];\n }\n this.familleModifiee.eleves.push(row);\n } else {\n this.familleModifiee.eleves[indiceEleveDejaModifie] = row;\n }\n //console.log('proceder a la suppression en BDD : pour le moment on n accepte la suppression uniquement pour les objets non encore enregistres');\n }\n }\n /* saveEleve() {\n console.log('saveEleve', { eleve: this.selectedEleve, form: this.formEleve });\n const isCreation = this.selectedEleve['isCreation'] === true;\n if (isCreation\n || this.selectedEleve['email'] != this.formEleve.value.email\n || this.selectedEleve['telephonePortable'] != this.formEleve.value.telephonePortable\n || this.selectedEleve['statut'] != this.formEleve.value.statut\n || this.selectedEleve['niveauScolaire'] != this.formEleve.value.niveauScolaire\n || this.selectedEleve['accordMedia'] != this.formEleve.value.accordMedia\n || this.selectedEleve['bool_01'] != this.formEleve.value.bool_01\n\n ) {\n if (this.formEleve.value['dateNaissStr']) {\n // Conversion date en string yyyy-mm-dd (format envoyé par le serveur)\n const dateValue = this.formEleve.value['dateNaissStr'];\n this.formEleve.patchValue({\n dateNaissStr: new DatePipe('fr-FR').transform(dateValue, 'yyyy-MM-dd'),\n })\n console.log('date convertie pour enregistrement', this.formEleve.value['dateNaissStr']);\n }\n // Mise à jour liste des éléments modifiés\n const indiceEleveDejaModifie = this.findIndiceMemeObjet(this.familleModifiee.eleves, this.formEleve.value);\n console.log({ indiceEleveDejaModifie });\n\n if (indiceEleveDejaModifie < 0) {\n if (!this.familleModifiee.eleves) {\n this.familleModifiee.eleves = [];\n }\n this.familleModifiee.eleves.push(this.formEleve.value);\n } else {\n this.familleModifiee.eleves[indiceEleveDejaModifie] = this.formEleve.value;\n }\n // Mise à jour dans les données d'origine pour l'affichege direct\n const indiceEleve = this.findIndiceMemeObjet(this.famille.eleves, this.formEleve.value);\n console.log({ indiceEleve })\n // this.famille.eleves ? this.famille.eleves.findIndex((value) => value['id'] == this.formEleve.value.id) : -1;\n if (indiceEleve < 0) {\n // Normalement impossible sauf si création car on a ouvert l'eleve à partir de cette liste\n if (isCreation) {\n this.famille.eleves.push(this.formEleve.value);\n this.famille.eleves = [...this.famille.eleves];\n }\n } else {\n this.famille.eleves[indiceEleve] = this.formEleve.value;\n this.famille.eleves = [...this.famille.eleves];\n }\n }\n this.ngxSmartModalService.close('editEleve');\n }*/\n\n validerEleve() {\n if (this.isDebug) console.log('validerEleve (debut) : on a cliqué sur Elève suivant', { eleves: this.famille.eleves, indice_eleve_selectionne: this.indice_eleve_selectionne });\n this.editEleveComponent.saveEleve();\n if (this.isDebug) console.log({ selectedEleve: this.selectedEleve, eleves: this.famille.eleves });\n this.saveDonneesModifiees();\n if (this.isDebug) console.log('validerEleve (fin)', { eleves: this.famille.eleves });\n /*if (this.indice_eleve_selectionne < this.famille.eleves.length) {\n console.log('validerEleve passage eleve suivant', { indiceEleve: this.indice_eleve_selectionne, nbEleves: this.famille.eleves.length });\n //this.indice_eleve_selectionne++; // c'est dejà fait dan initxxx\n } else {\n console.log('validerEleve passage etape suivante');\n this.etape++;\n }*/\n //this.initEtape();\n }\n\n validerEleves() {\n if (this.isAuMoinsUneInscription()) {\n this.saveDonneesModifiees();\n }\n }\n // ###################### Commun #############################################################\n /**\n * Gestion des idCreation pour tous les objets créés (et gérés en liste)\n * @param tableau\n */\n private nextIdCreation(tableau: Array): number {\n let nextIdCreation: number = 1;\n tableau.forEach(element => {\n if (element['isCreation']) {\n if (element['idCreation'] >= nextIdCreation) {\n nextIdCreation = element['idCreation'] + 1;\n }\n }\n });\n return nextIdCreation;\n }\n private findIndiceMemeObjet(tableau: Array, objetRecherche: Object) {\n return tableau ?\n tableau.findIndex((value) =>\n value['isCreation'] ? value['idCreation'] == objetRecherche['idCreation'] : value['id'] == objetRecherche['id'])\n : -1;\n }\n\n public saveDonneesModifiees(avecValidation = false, avecPassageEtapeSuivante = true) {\n if (this.isDebug) console.log({ where: 'saveDonneesModifiees', avecValidation, avecPassageEtapeSuivante, familleModifiee: this.familleModifiee});\n // Envoyer this.familleModifiee à l'enregistrement sur le serveur\n if (this.famille.commentaire != this.formCommentaire.value.commentaire) {\n this.familleModifiee['commentaire'] = this.formCommentaire.value.commentaire;\n }\n this.familleModifiee['etape'] = this.etape; // Permet au serveur de savoir s'il faut générer une facture (étape 5)\n if (this.isDebug) console.log(this.familleModifiee);\n\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'saveModifFamille')\n .set('params', JSON.stringify([localStorage.getItem('id_famille'), localStorage.getItem('anneeScolaire'), this.familleModifiee, avecValidation])) // JSON.stringify({ token: token }) //id_famille\n };\n this.http.get(api, options).subscribe(data => {\n if (this.isDebug) console.log({ data, etape: this.etape });\n //si data['inscription'] n'est pas vide, voir s'il y a un élément avec inscription['retour']==-2 => inscription['idOrigine'] doit indiquer inscription impossible car futur niveau ne peut être déterminé\n if (data['inscriptions']) {\n const data_retour_inscriptions = data['inscriptions'];\n if (data_retour_inscriptions.length > 0) {\n if (this.isDebug) console.log({ where: 'retour inscription à traiter', data_retour_inscriptions });\n data_retour_inscriptions.forEach(inscription_retour => {\n if (this.isDebug) console.log({ where: 'traitement inscription retour serveur', inscription_retour });\n if (inscription_retour['retour'] == -2) {\n if (this.isDebug) console.log('une reinscription n a pas pu etre realisee car impossible de determiner le futur niveau');\n const idInscriptionOrigine = inscription_retour['idOrigine'];\n this.famille.inscriptions.forEach(inscription => {\n if (inscription['idInscription'] == idInscriptionOrigine) {\n inscription['isReinscriptionImpossible'] = true;\n inscription['message'] = \"Niveau de l'élève inconnu\";\n // Ne sert à rien car on recharge => il faut détecter le problème en amont\n }\n });\n } else {\n if (this.isDebug) console.log('ne retourne pas -2');\n //id_inscription_an_suiv: \"6122\", isDeleted: true\n const id_inscription_an_suiv = inscription_retour['id_inscription_an_suiv'];\n const id_inscription = inscription_retour['idOrigine'];\n if (inscription_retour['isDeleted'] == true) {\n if (this.isDebug) console.log('il s agit d une suppression');\n // Recherche de l'inscription dans la liste des inacriptions\n const inscriptionSupprimee = this.famille.inscriptions.findIndex((inscription) => {\n return inscription['id_inscription_an_suiv'] == id_inscription_an_suiv\n });\n if (+inscriptionSupprimee['is_creation_famille'] == 1) {\n // L'inscription supprimee avait ete créée à partir d'une nouvelle discipline => suppression de l'inscription des listes\n // supprimer l'inscription des 2 listes : uniquement si isCreationFamille, sinon retirer uniquement la partie réinscription\n // suppression de la liste this.familleModifiee.inscriptions\n this.familleModifiee.inscriptions = this.familleModifiee.inscriptions.filter(inscription => { return inscription['id_inscription_an_suiv'] != id_inscription_an_suiv });\n // Suppression de la liste this.famille.inscriptions\n this.famille.inscriptions = this.famille.inscriptions.filter(inscription => { return inscription['id_inscription_an_suiv'] != id_inscription_an_suiv });\n } else {\n // L'inscription existait déjà l'année précédente => on la propose à nouveau pour une réinscription possible\n // supprimer les attribute isDeleted et id_inscription_an_suiv\n this.familleModifiee.inscriptions.map(inscription => {\n if (inscription['id_inscription_an_suiv'] == id_inscription_an_suiv) {\n inscription['isDeleted'] = null;\n inscription['id_inscription_an_suiv'] = null;\n inscription['is_creation_famille_an_suivante'] = null;\n }\n });\n this.famille.inscriptions.map(inscription => {\n if (inscription['id_inscription_an_suiv'] == id_inscription_an_suiv) {\n inscription['isDeleted'] = null;\n inscription['id_inscription_an_suiv'] = null;\n inscription['is_creation_famille_an_suivante'] = null;\n }\n });\n }\n } else { // PL 27/05/22 : correctif pour le cas ou l'utilisateur ajoute l'inscription, la supprime et l'ajoute à nouveau\n // Ce n'est pas une suppression (donc un ajout ?)\n if (id_inscription_an_suiv) {\n // tenter de mettre à jour l'inscription sur chaque liste d'inscriptions (this.familleModifiee.inscriptions et this.famille.inscriptions)\n this.familleModifiee.inscriptions.map(inscription => {\n if (inscription['idInscription'] == id_inscription) {\n inscription['id_inscription_an_suiv'] = id_inscription_an_suiv;\n inscription['isReinscriptionDemandee'] = false;\n inscription['is_creation_famille_an_suivante'] = true;\n }\n });\n this.famille.inscriptions.map(inscription => {\n if (inscription['idInscription'] == id_inscription) {\n inscription['id_inscription_an_suiv'] = id_inscription_an_suiv;\n inscription['isReinscriptionDemandee'] = false;\n inscription['is_creation_famille_an_suivante'] = true;\n }\n });\n }\n }\n }\n });\n }\n }\n if (data['responsables']) {\n const data_retour_responsables = data['responsables'];\n if (data_retour_responsables.length > 0) {\n if (this.isDebug) console.log('retour responsable à traiter', data_retour_responsables);\n data_retour_responsables.forEach(responsable => {\n const idCreation = responsable['idCreationTemporaire'];\n const idBDD = responsable['id'];\n // Mettre à jour l'id et mettre isCreation à false\n const indiceResponsable = this.famille.responsables ? this.famille.responsables.findIndex((value) => value['idCreation'] == idCreation) : -1;\n this.famille.responsables[indiceResponsable]['id'] = idBDD;\n this.famille.responsables[indiceResponsable]['isCreation'] = false;\n })\n }\n }\n if (data['eleves']) {\n const data_retour_eleves = data['eleves'];\n if (data_retour_eleves.length > 0) {\n if (this.isDebug) console.log('retour eleves à traiter', data_retour_eleves);\n data_retour_eleves.forEach(eleve => {\n const idCreation = eleve['idCreationTemporaire'];\n const idBDD = eleve['id'];\n // Mettre à jour l'id et mettre isCreation à false\n const indiceEleve = this.famille.eleves ? this.famille.eleves.findIndex((value) => value['idCreation'] == idCreation) : -1;\n this.famille.eleves[indiceEleve]['id'] = idBDD;\n this.famille.eleves[indiceEleve]['isCreation'] = false;\n })\n }\n }\n if (data['factures']) {\n const data_retour_factures = data['factures'];\n if (data_retour_factures.length > 0) {\n this.factures = data_retour_factures;\n }\n } else {\n // Ce n'est plus nécessaire d'invalider la session car on arrive sur la dernière page avec message de confirmation du rendez-vous sans possibilité de rvenir en arrière.\n // this.saved.emit(avecValidation);\n }\n this.familleModifiee = {}; // réinitialisation pour ne pas recréer ce qui l'a déj été\n this.resultatForDebug = data;\n if (this.isDebug) console.log('saveDonneesModifiees termine OK', { etape: this.etape, indice_eleve: this.indice_eleve_selectionne, eleves: this.famille.eleves });\n if (avecValidation) {\n localStorage.setItem('title', '');\n }\n this.initEtape(avecPassageEtapeSuivante);\n },\n err => {\n console.log(err);\n }\n );\n }\n //this.etape++;\n\n // ###################### INSCRIPTION #############################################################\n public typeDisciplineChanged(idTypeDiscipline) {\n if (this.isDebug) console.log('typeDisciplineChanged', idTypeDiscipline);\n if (idTypeDiscipline) {\n this.listeDisciplinesSelectionnee = this.listeDisciplines.filter(discipline => { return discipline.type_discipline_id == idTypeDiscipline });\n if (this.isDebug) console.log(this.listeDisciplinesSelectionnee);\n }\n }\n public disciplineChanged(idDiscipline) {\n // Réinitialisation des valeurs dépendant de la discipline\n this.formInscription.controls['messageUtilisateur'].patchValue(''); // Réinitialisation du message utilisateur\n this.formInscription.controls['isReinscriptionImpossible'].patchValue(false);\n this.formInscription.controls['isValidationSimple'].patchValue(false);\n this.formInscription.controls['idCours'].patchValue(null);\n this.listeCours = [];\n\n if (this.isDebug) console.log('disciplineChanged', idDiscipline, this.formInscription);\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'choixReinscription')\n .set('params', JSON.stringify([null, idDiscipline, localStorage.getItem('anneeScolaire')]))\n };\n this.http.get(api, options).subscribe(data => {\n if (this.isDebug) console.log(data);\n if (data['valid_simple'] == true) {\n // simple validation de linscription : c'est le serveur qui se chargera d'effectuer le reste\n if (this.isDebug) console.log('Validation simple demandée', this.formInscription);\n this.formInscription.controls['isValidationSimple'].patchValue(true);\n this.formInscription.controls['idCours'].clearValidators();\n this.formInscription.controls['idCours'].updateValueAndValidity();\n //this.famille.inscriptions[indexDansFamilleInscriptions]['isReinscriptionDemandee'] = true;\n //this.ajouteReInscription(row);\n } else if (data['listeCours'] && data['listeCours'].length > 0) {\n this.formInscription.controls['isValidationSimple'].patchValue(false);\n this.formInscription.controls['idCours'].setValidators([Validators.required]);\n this.formInscription.controls['idCours'].updateValueAndValidity();\n // Afficher la liste des cours proposés\n this.listeCours = data['listeCours'];\n if (this.isDebug) console.log('Choix de cours à faire', data['listeCours']);\n // this.createFormChoixCours(-1);\n let idParDefaut = null;\n if (this.listeCours.length == 1) {\n idParDefaut = this.listeCours[0].id;\n }\n this.formInscription.controls['idCours'].patchValue(idParDefaut, Validators.required);\n\n\n\n // TODO afficher la liste de choix de cours\n //this.createFormChoixCours(indexDansFamilleInscriptions);\n //this.ngxSmartModalService.getModal('editChoixCours').open();\n\n } else {\n this.formInscription.controls['isValidationSimple'].patchValue(false);\n this.formInscription.controls['isReinscriptionImpossible'].patchValue(true);\n\n // réinscription impossible car pas de cours disponible. Proposer à la famille d'ajouter un commentaire pour exprimer ses souhaits\n const discipline = this.listeDisciplines.find(discipline => discipline.id == this.formInscription.value.idDiscipline);\n const libelleDiscipline = discipline['libelle'];\n const messageUtilisateur = 'Inscription de l\\'élève ' + this.formInscription.value.libelleEleve + ' impossible car aucun cours n\\'est disponible pour la discipline ' + libelleDiscipline;\n this.famille.commentaire = ((this.famille.commentaire && this.famille.commentaire.length > 0) ? this.famille.commentaire + '\\n' : '') + messageUtilisateur;\n if (this.isDebug) console.log('Aucun cours proposé : réinscription impossible');\n this.formInscription.controls['messageUtilisateur'].patchValue(messageUtilisateur);\n // this.famille.inscriptions[indexDansFamilleInscriptions]['isReinscriptionImpossible'] = true;\n // this.ajouteReInscription(row);\n }\n this.resultatForDebug = data;\n\n },\n err => console.log(err));\n }\n public onConfirmInscription(rowIndex, row) {\n // /!\\ ne pas utiliser rowIndex car le tableau est utilisé avec un filtre => index correspond à un tableau partiel\n // console.log({ rowIndex, row });\n this.selectedInscription = row;\n const inscriptionId = row.idInscription;\n const disciplineId = row.disciplineId;\n // console.log('rechercheCoursPossibles', { inscriptionId, disciplineId });\n //choixReinscription($inscriptionId, $disciplineId, $anneeScolaire)\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'choixReinscription')\n .set('params', JSON.stringify([inscriptionId, disciplineId, localStorage.getItem('anneeScolaire')]))\n };\n const indexDansFamilleInscriptions = this.famille.inscriptions.findIndex((inscription) => {\n return inscription['idInscription'] == row.idInscription || (inscription['idEleve'] == row.idEleve && inscription['disciplineId'] == row.disciplineId)\n });\n // console.log({ indexDansFamilleInscriptions });\n this.http.get(api, options).subscribe(data => {\n if (this.isDebug) console.log({data, row});\n if (data['valid_simple'] == true) {\n // simple validation de la réinscription : c'est le serveur qui se chargera d'effectuer le reste\n // console.log('Validation simple demandée');\n this.famille.inscriptions[indexDansFamilleInscriptions]['isReinscriptionDemandee'] = true;\n this.ajouteReInscription(row);\n } else if (data['listeCours'] && data['listeCours'].length > 0) {\n // Afficher la liste des cours proposés\n this.listeCours = data['listeCours'];\n // console.log('Choix de cours à faire', data['listeCours']);\n this.createFormChoixCours(indexDansFamilleInscriptions);\n this.ngxSmartModalService.getModal('editChoixCours').open();\n\n } else {\n // réinscription impossible car pas de cours disponible. Proposer à la famille d'ajouter un commentaire pour exprimer ses souhaits\n // console.log('Aucun cours proposé : réinscription impossible');\n this.famille.inscriptions[indexDansFamilleInscriptions]['isReinscriptionImpossible'] = true;\n this.ajouteReInscription(row);\n }\n this.resultatForDebug = data;\n\n },\n err => console.log(err));\n }\n\n\n private ajouteReInscription(rowInscription: Object) {\n if (this.isDebug) console.log('ajouteReInscription', rowInscription, this.famille.inscriptions);\n // Recherche si l'inscription est dejà dans la liste des modifications\n let indexInscription = -1;\n if (!this.familleModifiee.inscriptions) {\n this.familleModifiee.inscriptions = [];\n }\n if (this.familleModifiee.inscriptions && rowInscription['idInscription']) {\n indexInscription = this.familleModifiee.inscriptions.findIndex((ins) => {\n return ins['idOrigine'] == rowInscription['idInscription'];\n });\n }\n if (this.isDebug) console.log(indexInscription, rowInscription);\n let reInscription = {\n isReinscriptionDemandee: rowInscription['isReinscriptionDemandee'],\n isReinscriptionImpossible: rowInscription['isReinscriptionImpossible'],\n };\n if (indexInscription >= 0) {\n reInscription = this.familleModifiee.inscriptions[indexInscription];\n } else {\n reInscription['idOrigine'] = rowInscription['idInscription'];\n }\n if (rowInscription['idCoursCible']) {\n reInscription['idCoursCible'] = rowInscription['idCoursCible'];\n }\n if (rowInscription['libelleCours']) {\n reInscription['libelleCours'] = rowInscription['libelleCours'];\n }\n // pour les nouvelles inscriptions : idDiscipline et idEleve\n if (rowInscription['idDiscipline']) {\n reInscription['idDiscipline'] = rowInscription['idDiscipline'];\n }\n if (rowInscription['idEleve']) {\n reInscription['idEleve'] = rowInscription['idEleve'];\n }\n\n // reInscription['isReinscriptionDemandee'] = rowInscription['isReinscriptionDemandee'];\n // reInscription['isReinscriptionImpossible'] = rowInscription['isReinscriptionImpossible'];\n if (indexInscription >= 0) {\n this.familleModifiee.inscriptions[indexInscription] = reInscription;\n } else {\n this.familleModifiee.inscriptions.push(reInscription);\n }\n this.famille.inscriptions = [... this.famille.inscriptions]; // Pour rafraichir l'affichage du tableau\n this.verifieCoherenceInscriptions();\n if (this.isDebug) console.log('fin ajouteReInscription', { reinscriptions: this.famille.inscriptions, changements: this.familleModifiee });\n this.saveDonneesModifiees(false, false);\n }\n\n public isDemandeReinscriptionPossible(row) {\n return this.etape < 5\n && row.ok != '-2' // erreur technique lors du traitement de la réinscription\n && !row.isReinscriptionDemandee\n && !row.isReinscriptionImpossible\n && ((!row.libelleCours\n && row.id_inscription_an_suiv == null)\n || row.isDeleted == 1)\n }\n private createFormChoixCours(indexInscription?) {\n if (this.isDebug) console.log('createFormChoixCours');\n let idParDefaut = null;\n if (this.listeCours.length > 0) {\n idParDefaut = this.listeCours[0].id;\n }\n this.formChoixCours = this.formBuilder.group({\n id: [idParDefaut,\n Validators.required,],\n indexInscription: [indexInscription],\n });\n }\n\n public libelleCours(row): string {\n // console.log('libelleCours', row);\n const profLibelle = (row.professeur_nom ? row.professeur_nom + ' ' : '')\n + (row.professeur_prenom ? row.professeur_prenom : '');\n const horaireDebut = row.horaire_debut ? (Math.trunc(row.horaire_debut / 60).toString().padStart(2, '0') + ':' + (row.horaire_debut % 60).toString().padStart(2, '0')) : '';\n const estListeAttente = row.isListeAttente == 1;\n const cycle = row.cycle_libelle ? row.cycle_libelle : '';\n const niveau = row.niveau_libelle ? row.niveau_libelle : '';\n const cycleNiveau = cycle + ((cycle && niveau) ? '/':'') + niveau;\n return (row.discipline_libelle ? row.discipline_libelle + ' - ' : '')\n + (profLibelle.length > 0 ? profLibelle + ' - ' : '')\n + (row.jour_libelle ? row.jour_libelle + ' - ' : '')\n + (horaireDebut ? horaireDebut : '')\n + (cycleNiveau.length > 0 ? ' - ' + cycleNiveau : '')\n + (estListeAttente ? ' (liste d\\'attente)' : '');\n }\n public getCours(idCours) {\n return this.listeCours.find(cours => cours.id == idCours);\n }\n public isListeAttente(idCours) {\n const cours = this.getCours(idCours);\n if (cours) {\n return cours.isListeAttente == 1;\n } else {\n return false;\n }\n }\n private CalculateAge(dateNaissance, dateCalcul): any {\n if (this.isDebug) console.log('CalculateAge', { dateNaissance, dateCalcul });\n let age = 0;\n if (dateNaissance) {\n var timeDiff = Math.abs(dateCalcul - dateNaissance);\n //Used Math.floor instead of Math.ceil\n //so 26 years and 140 days would be considered as 26, not 27.\n age = Math.floor((timeDiff / (1000 * 3600 * 24)) / 365);\n }\n return age;\n }\n public verifieCoherenceInscriptions() {\n if (this.isDebug) console.log('verifieCoherenceInscriptions');\n this.isAuMoinsUneInscription();\n if (this.selectedEleve) {\n const idEleve = this.selectedEleve['id'];\n if (this.isDebug) console.log('verifieCoherenceInscriptions', this.selectedEleve, this.reinscriptionsDeEleve(idEleve), this.famille.inscriptions);\n // Verifier (sur l'eleve courant) que :\n // s'il est inscrit en FI, t qu'il a moins de 16 ans au 01/09/AAAA alors il doit être inscrit en FM\n //this.estEleveCourantFISansFM\n // Calcul age élève au 01/09/AAAA\n const dateStr = this.selectedEleve['dateNaissStr'];\n const dateNaissance = new Date(dateStr);\n\n const dateCalcul = new Date();\n dateCalcul.setDate(1);\n dateCalcul.setMonth(8); // Mois septembre (9 - 1)\n const age = this.CalculateAge(dateNaissance, dateCalcul);\n // dateCalcul.setFullYear(this.famille.);\n if (this.isDebug) console.log({ dateNaissance, age });\n if (age < 16) {\n // il faut récupérer type discipline id pour savoir s'il y a une inscription en FI (2) et une en FM (1)\n let isInscritFM = false;\n let isInscritFI = false;\n this.inscriptionsDeEleve(idEleve).forEach(inscription => {\n const ins = <{ isReinscriptionDemandee }>inscription;\n if (this.isDebug) console.log({ inscription, type_discipline_id: +inscription['type_discipline_id'], isAttPresent: inscription.hasOwnProperty('type_discipline_id'), isReinscriptionDemandee: inscription['isReinscriptionDemandee'], isReinscriptionDemandeeBis: ins.isReinscriptionDemandee });\n if (inscription['id_inscription_an_suiv'] != null || inscription['isReinscriptionDemandee'] == true) {\n switch (+inscription['type_discipline_id']) {\n case 1: // FM\n isInscritFM = true;\n break;\n case 2: // FI\n isInscritFI = true;\n break;\n }\n }\n\n });\n if (this.isDebug) console.log({ isInscritFI, isInscritFM });\n // est-il inscrit en FI ?\n this.estEleveCourantFISansFM = (isInscritFI && !isInscritFM);\n } else {\n this.estEleveCourantFISansFM = false;\n }\n }\n }\n public saveReinscription() {\n /*console.log('saveReinscription',\n { selectedInscription: this.selectedInscription,\n formCours: this.formChoixCours,\n formCoursId: this.formChoixCours.value.id,\n listeCours: this.listeCours,\n idPremierCours: this.listeCours[0].id,\n egalite: (this.formChoixCours.value.id==this.listeCours[0].id) });*/\n const coursSelectionneParUtilisateur = this.listeCours.find(cours => { return cours.id == this.formChoixCours.value.id });\n if (this.isDebug) console.log('cours selectionne par la famille : ', coursSelectionneParUtilisateur);\n const indexInscription = this.formChoixCours.value.indexInscription; // index de l'inscription dans this.famille.inscriptions\n if (coursSelectionneParUtilisateur == null) {\n if (this.isDebug) console.log('aucune sélection');\n /*const inscriptionAGenerer = {\n // isReinscriptionImpossible: true, NON la réinscription n'est pas impossible, c'est juste que l'utilisateur n'a pas sélectionné de cours\n idInscription: this.selectedInscription['idInscription'],\n isReinscriptionDemandee: true,\n }\n this.ajouteReInscription(inscriptionAGenerer);\n this.famille.inscriptions[indexInscription]['isReinscriptionImpossible'] = true;\n */\n } else {\n if (this.isDebug) console.log('sélection ok', coursSelectionneParUtilisateur);\n const inscriptionAGenerer = {\n isReinscriptionDemandee: true,\n idInscription: this.selectedInscription['idInscription'],\n idCoursCible: coursSelectionneParUtilisateur.id,\n libelleCours: this.libelleCours(coursSelectionneParUtilisateur),\n }\n this.famille.inscriptions[indexInscription]['libelleCours'] = this.libelleCours(coursSelectionneParUtilisateur);\n this.famille.inscriptions[indexInscription]['isReinscriptionDemandee'] = true;\n this.famille.inscriptions[indexInscription]['idInscription'] = this.selectedInscription['idInscription'];\n this.famille.inscriptions[indexInscription]['idCoursCible'] = coursSelectionneParUtilisateur.id;\n this.ajouteReInscription(inscriptionAGenerer);\n this.famille.inscriptions = [... this.famille.inscriptions]; // Pour rafraichir l'affichage du tableau\n if (this.isDebug) console.log(this.famille.inscriptions);\n }\n this.ngxSmartModalService.getModal('editChoixCours').close();\n }\n\n reinscriptionsDeEleve(idEleve) {\n // console.log(this.famille.inscriptions); (+ins['idEleve'] === +idEleve)\n return this.famille.inscriptions.filter(inscription =>\n inscription['idEleve'] == inscription\n && (inscription['id_inscription_an_suiv'] != null || inscription['isReinscriptionDemandee'] == true)\n );\n }\n inscriptionsDeEleve(idEleve) {\n if (this.isDebug) {\n console.log({ ou: 'inscriptionsDeEleve', inscriptions: this.famille.inscriptions, idEleve, inscriptionsDeFamilleMidifie: this.familleModifiee.inscriptions });\n }\n return this.famille.inscriptions.filter(ins => ins['idEleve'] == idEleve);\n }\n addInscription(idEleve) {\n console.log('addInscription', idEleve, this.selectedEleve['id']);\n const optionsDisciplines = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'selectDisciplines')\n .set('params', JSON.stringify([]))\n };\n const optionsTypesDisciplines = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'getListeTypeDiscipline')\n .set('params', JSON.stringify([]))\n };\n const eleveEnCours = this.famille.eleves.find(eleve => { return eleve['id'] == idEleve });\n console.log({ eleveEnCours, idEleve, eleves: this.famille.eleves });\n\n forkJoin(\n [this.http.get(api, optionsTypesDisciplines),\n this.http.get(api, optionsDisciplines)]\n ).subscribe(data => {\n const [listeTypesDisciplines, listeDisciplines] = data;\n this.listeTypeDisciplines = listeTypesDisciplines;\n this.listeDisciplines = listeDisciplines;\n this.listeDisciplines.unshift({ id: null, libelle: '' });\n console.log(data);\n this.formInscription = this.formBuilder.group({\n id: [null,],\n type_discipline_id: 1,\n idDiscipline: [null, Validators.required,],\n idEleve: [idEleve],\n isCreation: true,\n idCreation: this.nextIdCreation(this.famille.inscriptions),\n discipline_libelle: '',\n isReinscriptionDemandee: true, // Pour afficher dans la liste des inscriptions\n isValidationSimple: false, // indique qu'il n'y a pas de cours à choisir\n libelleEleve: (eleveEnCours === undefined) ? '' : (eleveEnCours['nom'] ? eleveEnCours['nom'] : '') + ' ' + (eleveEnCours['prenom'] ? eleveEnCours['prenom'] : ''),\n messageUtilisateur: '',\n isReinscriptionImpossible: false,\n idCours: [null, Validators.required,],\n idCoursCible: null,\n professeurId: null,\n professeurNom: null,\n professeurPrenom: null,\n });\n this.listeCours = [];\n this.editNouveauCours.open();\n });\n }\n\n saveInscription() {\n if (this.isDebug) console.log('ajouteInscription', this.formInscription, this, this.famille.inscriptions);\n if (this.formInscription.value.idDiscipline != null) {\n if (this.formInscription.value.isValidationSimple) {\n const discipline = this.listeDisciplines.find(discipline => discipline.id == this.formInscription.value.idDiscipline);\n this.formInscription.controls[\"discipline_libelle\"].patchValue(discipline['libelle']);\n //this.famille.inscriptions.push(this.formInscription.value);\n this.famille.inscriptions = [... this.famille.inscriptions, this.formInscription.value];\n if (this.isDebug) console.log(this.famille.inscriptions);\n this.ajouteReInscription(this.formInscription.value);\n this.editNouveauCours.close();\n } else if (this.formInscription.value.isReinscriptionImpossible) {\n if (this.isDebug) console.log('inscription impossible car pas de cours disponible');\n } else {\n if (this.isDebug) console.log('ce n est pas une validation simple, il faut choisir un cours');\n const discipline = this.listeDisciplines.find(discipline => discipline.id == this.formInscription.value.idDiscipline);\n /**\nnext_cycle_libelle: \"Cycle I\"\nnext_niveau_libelle: \"CI - 1ère année\"\nidCycleNext: \"1\"\nidNiveauNext: null\n */\n this.formInscription.controls['discipline_libelle'].patchValue(discipline.libelle);\n // Recherche du cours dans this.listeCours\n const cours = this.listeCours.find(cours => { return cours.id == this.formInscription.value.idCours });\n if (this.isDebug) console.log('cours choisi', cours);\n // TODO il faut stocker l'id du cours pour le passer au serveur et se raccrocher à cce cours sinon il va créer un nouveau cours\n this.formInscription.controls['professeurId'].patchValue(cours.professeur_id);\n this.formInscription.controls['professeurNom'].patchValue(cours.professeur_nom);\n this.formInscription.controls['professeurPrenom'].patchValue(cours.professeur_prenom);\n this.formInscription.controls['idCoursCible'].patchValue(cours.id);\n\n /*const inscriptionAAjouter = {\n discipline_libelle: discipline.libelle,\n disciplineId: discipline.id,\n id_inscription_an_suiv: null, // pas encore créé\n idEleve: this.formInscription.value.idEleve,\n\n };*/\n this.famille.inscriptions = [... this.famille.inscriptions, this.formInscription.value];\n this.ajouteReInscription(this.formInscription.value);\n this.editNouveauCours.close();\n this.listeDisciplinesSelectionnee = [];\n }\n }\n }\n\n private isAuMoinsUneInscription() {\n if (this.isDebug) console.log('calcul nbInscriptions');\n // Contrôler qu'il y a au moins une inscription : soit id_inscription_an_suiv renseigne soit isReinscriptionDemandee==true\n let nbInscriptions = 0;\n this.famille.inscriptions.forEach(inscription => {\n if (inscription['id_inscription_an_suiv'] != null || inscription['isReinscriptionDemandee'] == true) {\n nbInscriptions++;\n }\n });\n this.nbReinscriptions = nbInscriptions;\n if (this.isDebug) console.log('nbInscriptions', nbInscriptions);\n return nbInscriptions > 0;\n }\n valideInscriptions() {\n if (this.isAuMoinsUneInscription()) {\n this.saveDonneesModifiees();\n }\n }\n\n onDeleteInscription(rowIndex, row) {\n if (this.isDebug) console.log({ ou: 'onDeleteInscription', rowIndex, row});\n if (row.id_inscription_an_suiv == null) {\n // /!\\ Dans cestains cas, il est à null alors que l'inscription existe en BDD (si ajouté puis supprimé ensuite)\n // objet n'existe pas encore en BDD => suppression de l'inscription\n\n if (row.idInscription == null) {\n // c'était une nouvelle inscription => on enlève de la liste\n if (this.isDebug) console.log(\"onDeleteInscription objet n'existe pas encore en BDD => suppression de l'inscription\", row, this.famille, this.familleModifiee);\n // suppression de la liste this.familleModifiee.inscriptions\n if (this.familleModifiee.inscriptions) {\n this.familleModifiee.inscriptions = this.familleModifiee.inscriptions.filter(inscription => {\n return row['idCreation'] ? inscription['idCreation'] != row['idCreation'] : inscription['idInscription'] != row['idInscription']\n });\n }\n // Suppression de la liste this.famille.inscriptions\n if (this.famille.inscriptions) {\n this.famille.inscriptions = this.famille.inscriptions.filter(inscription => {\n return row['idCreation'] ? inscription['idCreation'] != row['idCreation'] : inscription['idInscription'] != row['idInscription']\n });\n }\n } else {\n if (this.isDebug) console.log('suppression des informations de reinscriptions uniquement en laissant l inscription concernee dans les listes');\n // c'était une réinscription => il faut juste enlever les éléments concernant la réinscription mais garder les éléments de l'ancienne inscription pour pouvoir le réinscrire\n if (this.famille.inscriptions) {\n this.famille.inscriptions = this.famille.inscriptions.map(inscription => {\n if (row['idCreation'] ? inscription['idCreation'] == row['idCreation'] : inscription['idInscription'] == row['idInscription']) {\n delete inscription['isReinscriptionDemandee'];\n delete inscription['libelleCours'];\n delete inscription['isReinscriptionDemandee'];\n //delete inscription['idInscription'];\n delete inscription['idCoursCible'];\n }\n return inscription;\n });\n }\n if (this.familleModifiee.inscriptions) {\n this.familleModifiee.inscriptions = this.familleModifiee.inscriptions.map(inscription => {\n if (row['idCreation'] ? inscription['idCreation'] == row['idCreation'] : inscription['idInscription'] == row['idInscription']) {\n delete inscription['idCoursCible'];\n delete inscription['libelleCours'];\n delete inscription['isReinscriptionDemandee'];\n };\n return inscription;\n });\n }\n this.famille.inscriptions = [... this.famille.inscriptions]; // Pour rafraichir l'affichage du tableau\n if (this.isDebug) console.log({ inscriptions: this.famille.inscriptions, modif: this.familleModifiee });\n }\n } else {\n if (this.isDebug) console.log('onDeleteInscription objet existe en BDD');\n // mettre isDeleted à 1\n row.isDeleted = 1;\n // Mise à jour liste des éléments modifiés\n const indiceInscriptionDejaModifie = this.familleModifiee.inscriptions ? this.familleModifiee.inscriptions.findIndex((value) => value['id_inscription_an_suiv'] == row.id_inscription_an_suiv) : -1;\n if (indiceInscriptionDejaModifie < 0) {\n if (!this.familleModifiee.inscriptions) {\n this.familleModifiee.inscriptions = [];\n }\n this.familleModifiee.inscriptions.push(row);\n } else {\n this.familleModifiee.inscriptions[indiceInscriptionDejaModifie] = row;\n }\n // Lancer l'enregistrement pour libérer l'inscription et pouvoir réinscrire tout de suite\n this.saveDonneesModifiees(false, false);\n }\n if (this.isDebug) console.log('fin onDeleteInscription', { reinscriptions: this.famille.inscriptions, changemente: this.familleModifiee });\n this.verifieCoherenceInscriptions();\n }\n\n chargeDonneesRendezVous() {\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'selectTypeRDV') //selectTypeRDV selectRDV\n .set('params', JSON.stringify([]))\n };\n this.http.get(api, options).subscribe(data => {\n if (this.isDebug) console.log(data);\n this.listeTypeRendezVous = data;\n let premierTypeRDV = null;\n if (this.listeTypeRendezVous.length > 0) {\n premierTypeRDV = this.listeTypeRendezVous[0];\n }\n if (this.isDebug) console.log({ premierTypeRDV });\n this.formRendezVous = this.formBuilder.group({\n typeRendezVous: [\n premierTypeRDV,\n ],\n consentement: [ false, Validators.required, ],\n });\n //this.resultatForDebug = data;\n if (premierTypeRDV) {\n // Initialiser les RDV\n this.typeRendezVousChanged();\n }\n },\n err => console.log(err));\n }\n typeRendezVousChanged() {\n if (this.isDebug) console.log('typeRendezVousChanged', this.calendarComponent, this.formRendezVous.value.typeRendezVous);\n this.listeRendezVousDisponibles = [];\n if (this.formRendezVous && this.formRendezVous.value && this.formRendezVous.value.typeRendezVous) {\n const idTypeRDV = this.formRendezVous.value.typeRendezVous.id;\n if (this.isDebug) console.log(this.formRendezVous.value.typeRendezVous);\n // TODO Rechercher les creneaux disponibles : selectRDVDisponibles($idTypeRDV, $anneeScolaire)\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'selectRDVDisponibles') //selectTypeRDV selectRDV\n .set('params', JSON.stringify([idTypeRDV]))\n };\n this.http.get(api, options).subscribe(data => {\n if (this.isDebug) console.log(data);\n const listeRdvDispo = data;\n this.initListeRdv(listeRdvDispo);\n },\n err => console.log(err)\n );\n }\n }\n initListeRdv(listeRdvDispo: any[]) {\n this.listeRendezVousDisponibles = [];\n listeRdvDispo.forEach((rdv => {\n // console.log(rdv);\n rdv.extendedProps = {\n start: rdv.start,\n end: rdv.end,\n idTypeRDV: this.formRendezVous.value.typeRendezVous.id,\n };\n rdv.title = 'Sélectionner'\n this.listeRendezVousDisponibles.push(rdv);\n //{ id: 1, title: 'Sélectionner', start: '2019-05-10 10:00', end: '2019-05-10 10:15' },\n }));\n }\n // Rendez-vous\n eventClick(event) {\n this.rdvSelectionne = event.event;\n if (this.isDebug) console.log({ event: event.event, title: event.event.title, start: event.event.start, rdv: event.extendedProps, id: event.id });\n let m = toMoment(event.event.start, this.calendarComponent.getApi());\n let fin = toMoment(event.event.end, this.calendarComponent.getApi());\n this.libelleRendezVous = \"Rendez-vous le \" + m.format(\"DD/MM/YYYY\") + \" de \" + m.format(\"HH:mm\") + \" à \" + fin.format(\"HH:mm\");\n // alert('Vous avez sélectionné le rendez-vous du ' + m.format(\"DD/MM/YYYY HH:mm\") + \". Le rendez-vous se terminera à \" + fin.format(\"HH:mm\"));\n // Test la disponibilité du rendez-vous\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'estRDVDispo')\n .set('params', JSON.stringify([this.rdvSelectionne.extendedProps, false, this.famille['id'], localStorage.getItem('anneeScolaire')]))\n };\n this.http.get(api, options).subscribe(data => {\n if (this.isDebug) console.log(data);\n if (data['isDispo']) {\n if (this.isDebug) console.log('Le rdv est toujours disponible');\n } else {\n if (this.isDebug) console.log('Le rdv n est plus disponible => recupere la liste des rdv dispos dans rdv_dispo');\n this.messageInfoUtilisateur = \"Le rendez-vous sélectionné a été réservé par un autre utilisateur. Veuillez en choisir un autre.\";\n this.messageInfo.open();\n const listeRdvDispo = data['rdv_dispo'];\n this.initListeRdv(listeRdvDispo);\n }\n },\n err => console.log(err));\n }\n\n saveRendezVous() {\n if (this.isDebug) console.log('saveRendezVous');\n if (this.rdvSelectionne) {\n if (this.isDebug) console.log(this.rdvSelectionne.extendedProps);\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'estRDVDispo')\n .set('params', JSON.stringify([this.rdvSelectionne.extendedProps, true, this.famille['id'], localStorage.getItem('anneeScolaire')]))\n };\n this.http.get(api, options).subscribe(data => {\n if (this.isDebug) console.log(data);\n if (data['isValide']) {\n if (this.isDebug) console.log('Le rdv est valide');\n this.initEtape(true);\n // TODO passer à la dernière étape qui affiche message de confirmation et clos la session 5 minutes plus tard\n this.saveDonneesModifiees(true); // Pour valider les inscriptions\n } else if (!data['isDispo']) {\n if (this.isDebug) console.log('Le rdv n est plus disponible => recupere la liste des rdv dispos dans rdv_dispo');\n this.messageInfoUtilisateur = \"Le rendez-vous sélectionné a été réservé par un autre utilisateur. Veuillez en choisir un autre.\";\n this.messageInfo.open();\n const listeRdvDispo = data['rdv_dispo'];\n this.initListeRdv(listeRdvDispo);\n }\n },\n err => console.log(err));\n }\n }\n}\n","\n
\n
\n Mode debug actif
etape {{ etape }} - indice_eleve_selectionne\n {{ indice_eleve_selectionne }} - nbEleves:\n {{ famille && famille.eleves ? famille.eleves.length : 0 }}\n
\n \n\n
\n
\n

Adresse

\n \n {{ famille.adresse.adresse1 ? famille.adresse.adresse1 : \"\" }}\n
{{ famille.adresse.adresse2 ? famille.adresse.adresse2 : \"\" }}\n
{{ famille.adresse.codePostal + \" \" + famille.adresse.ville }}\n
\n
\n\n
\n \n
\n \n \n \n \n \n \n Ligne 1 adresse obligatoire\n
\n
\n
\n \n \n \n Complément adresse obligatoire\n
\n
\n
\n \n \n \n Code postal obligatoire\n
\n
\n
\n \n \n \n Ville adresse obligatoire\n
\n
\n
\n 1\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"goEtapePrecedente()\"\n >\n Etape précédente\n \n \n Valider l'adresse\n \n
\n \n \n \n \n\n
\n

Responsables

\n
\n Le responsable principal est l’interlocuteur privilégié du conservatoire\n pour l’ensemble de la famille. Il ne doit y avoir qu’un seul responsable\n principal par famille.\n
\n \n \n \n
\n Attention : vous devez spécifier un responsable principal en cochant la\n case responsable principal sur l'un des responsables\n
\n
1\">\n Attention : vous devez spécifier un seul responsable principal\n
\n
\n 1\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"etape = etape - 1\"\n >\n Etape précédente\n \n \n Ajouter un responsable\n \n \n Valider les responsables\n \n
\n
\n\n
\n

Elèves

\n \n \n
\n
= 0 && etape == 3\">\n
\n \n

Elève {{ selectedEleve.nom }} {{ selectedEleve.prenom }}

\n \n\n
\n \n

\n Pré-inscriptions de {{ selectedEleve.nom }}\n {{ selectedEleve.prenom }}\n \n Ajouter une nouvelle inscription\n \n

\n \n \n
\n La formation musicale est indissociable de la formation\n instrumentale pour un enseignement musical de qualité. C’est\n pourquoi, toute ré-inscription à une formation instrumentale doit\n être accompagnée obligatoirement d’une ré-inscription à un cours de\n formation musicale\n
\n
\n
\n
\n \n
\n
\n

\n Demande de pré-inscription de {{ eleve.nom }} {{ eleve.prenom }}\n

\n \n \n
\n
\n \n \n Pour un nouvel élève ({{ libelleElevesCreesParFamille() }}), nous vous\n rappelons que l'inscription sera fonction des places disponibles.\n
\n
\n Vous n'avez effectué aucune inscription pour la nouvelle année.\n
\n \n Pour un nouvel élève ({{ libelleElevesCreesParFamille() }}), nous vous\n rappelons que l'inscription sera fonction des places disponibles.\n \n
\n 1\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"goEtapePrecedente()\"\n >\n Etape précédente\n \n \n \n Ajouter un élève\n \n \n \n {{\n indice_eleve_selectionne + 1 == famille.eleves.length\n ? \"Synthèse pré-inscriptions\"\n : \"Elève suivant\"\n }}\n \n \n Valider les pré-inscriptions\n \n
\n \n\n \n
\n

Estimation du coût

\n
\n \n \n

Montant total : {{ facture.montantTotal | currency : \"EUR\" }}

\n
\n Ce coût est une estimation qui sera confirmée lors du rendez-vous avec\n le secrétariat du conservatoire.
\n \n IMPORTANT :
\n La musique, c’est jouer ensemble. Le conservatoire encourage les élèves\n à participer aux ensembles (dits « cours collectifs »). C’est pourquoi,\n pour un élève inscrit en formation instrumentale et musicale, le cours\n collectif est offert dans la limite des places disponibles.\n
\n
\n (Si un cours apparait avec un tarif de 999,99€, ne vous inquiétez pas,\n cela signifie qu'il manque un tarif dans le logiciel. Le cours a pu être\n remplacé par un autre ou c’est une erreur. La correction sera réalisée\n lors du rendez-vous. Merci de votre compréhension.)\n \n \n
\n
\n\n
\n \n
\n

Commentaire à destination du conservatoire

\n \n
\n \n
\n\n
\n 1\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"goEtapePrecedente()\"\n >\n Etape précédente\n \n \n Valider\n \n
\n\n
\n \n \n \n \n \n \n \n
\n \n \n \n

{{ libelleRendezVous }}

\n
\n Votre pré-inscription n'est pas terminée\n
\n

\n
\n
\n
\n \n En soumettant ce formulaire, j'accepte que les informations saisies\n dans ce formulaire soient utilisées dans le cadre de votre\n inscription aux activités du conservatoire.\n
\n 1\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"goEtapePrecedente()\"\n >\n Etape précédente\n \n \n Changer le rendez-vous\n \n \n Envoyer la demande de pré-inscription\n \n \n
\n \n\n
\n

{{ libelleRendezVous }} confirmé

\n

\n Votre inscription sera ferme et définitive une fois qu’elle aura été\n validée par l’administration du Conservatoire suite au rendez-vous

\n IMPORTANT : Lors du rendez-vous, merci de vous munir de :\n
    \n
  • vos moyens de paiement (chèque, espèces, Pass92, Pass+),
  • \n
  • un justificatif de domicile
  • \n
  • carte d'étudiant éventuellement
  • \n
  • le récapitulatif que vous allez recevoir par mail
  • \n
  • \n une procuration, si ce n’est pas vous le responsable principal qui\n venez au rendez-vous\n
  • \n
\n

\n

\n Vous allez recevoir dans quelques minutes un courriel de confirmation.
\n

\n\n

\n Merci de prendre connaissance du Règlement des Etudes disponible sur le\n site du Conservatoire.\n https://conservatoire-bois-colombes.fr/http-conservatoire-bois-colombes-fr-wp-content-uploads-2019-06-reglement-des-etudes-signe-1-pdf\n

\n\n

Vous pouvez fermer votre navigateur

\n
\n\n\n\n \n \n \n \n \n \n \n \n\n\n\n \n \n \n \n \n \n
\n
\n {{ this.params && this.params['text.after.form'] }}
\n
{{ messageUtilisateur }}
\n
\n \n \n
\n","import {Component, OnInit, Input} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {Login} from '../../shared/models/login';\nimport { smoothlyMenu } from '../../shared/helpers/app.helpers';\n\ndeclare var jQuery: any;\n\n@Component({\n selector: 'app-navigation',\n\t\ttemplateUrl: './navigation.component.html',\n\t\tstyleUrls: ['./navigation.component.scss']\n})\nexport class NavigationComponent implements OnInit {\n @Input() loginInfo: Login;\n constructor( private router: Router) { }\n\n ngOnInit() { }\n activeRoute(routename: string): boolean {\n return this.router.url.indexOf(routename) > -1;\n\t\t}\n\t\ttoggleNavigation(): void {\n\n\t\t\tjQuery('body').toggleClass('mini-navbar');\n\t\t\tsmoothlyMenu();\n\t\t}\n}\n","\n","import { Component, OnInit, ViewChild, Input, SimpleChanges, OnChanges } from '@angular/core';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport listPlugin from '@fullcalendar/list';\nimport bootstrapPlugin from '@fullcalendar/bootstrap';\nimport { FullCalendarComponent } from '@fullcalendar/angular';\nimport momentPlugin, { toMoment } from '@fullcalendar/moment';\nimport { Calendar} from '@fullcalendar/core'\n// import momentPlugin from '@fullcalendar/moment'\nimport { HttpParams, HttpClient } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\n\nconst api = environment.API;\n\n@Component({\n selector: 'pre-inscription-rendez-vous',\n templateUrl: './rendez-vous.component.html',\n styleUrls: ['./rendez-vous.component.scss']\n})\nexport class RendezVousComponent implements OnInit, OnChanges {\n calendarPlugins = [dayGridPlugin, listPlugin, bootstrapPlugin, momentPlugin]; // important!\n public listeRendezVousDisponibles = [];\n @Input() listeRdvDispo: any[];\n @Input() idParticipant: number;\n public rdvSelectionne;\n public isRdvConfirme=false;\n public libelleRendezVous = '';\n public messageInfoUtilisateur = '';\n public is_courriel_envoye = false;\n public courriel: string;\n // public formRendezVous: FormGroup;\n @ViewChild('calendar') calendarComponent: FullCalendarComponent;\n public options = {\n locale: 'fr',\n views: {\n listDay: { buttonText: 'jour' },\n listWeek: { buttonText: 'semaine' },\n listMonth: { buttonText: 'mois' }\n },\n header: {\n left: 'title',\n center: 'prev,next today',\n right: ' listDay,listWeek,listMonth dayGridDay,dayGridWeek,dayGridMonth' // listDay,listWeek,listMonth\n },\n buttonText: {\n today: 'Aujourd\\'hui',\n month: 'mois',\n week: 'semaine',\n day: 'jour'\n },\n titleFormat: 'D MMMM YYYY'\n }\n\n constructor(\n private http: HttpClient,\n ) { }\n\n ngOnInit() {\n }\n ngOnChanges(changes: SimpleChanges) {\n // console.log({ changements: changes });\n if (changes.listeRdvDispo) {\n this.initListeRdv();\n }\n }\n initListeRdv() {\n this.listeRendezVousDisponibles = [];\n if (this.listeRdvDispo) {\n this.listeRendezVousDisponibles = [];\n this.listeRdvDispo.forEach((rdv => {\n // console.log(rdv);\n rdv.extendedProps = {\n start: rdv.start,\n end: rdv.end,\n idTypeRDV: rdv.idTypeRDV, //this.formRendezVous.value.typeRendezVous.id,\n };\n rdv.title = 'Sélectionner'\n this.listeRendezVousDisponibles.push(rdv);\n //{ id: 1, title: 'Sélectionner', start: '2019-05-10 10:00', end: '2019-05-10 10:15' },\n }));\n if (this.listeRendezVousDisponibles && this.listeRendezVousDisponibles.length>0) {\n //this.options.;\n let calendarApi = this.calendarComponent.getApi();\n // calendarApi.gotoDate('2020-09-01');\n calendarApi.gotoDate(this.listeRendezVousDisponibles[0].start);\n // console.log({ firstRdv: this.listeRendezVousDisponibles[0].start, calendar: this.calendarComponent });\n }\n // console.log(this.listeRendezVousDisponibles);\n }\n }\n\n eventClick(event) {\n // let calendarApi = this.calendarComponent.getApi();\n this.rdvSelectionne = event.event;\n // console.log({ event: event.event, title: event.event.title, start: event.event.start, rdv: event.extendedProps, id: event.id });\n let m = toMoment(event.event.start, this.calendarComponent.getApi());\n let fin = toMoment(event.event.end, this.calendarComponent.getApi()) ;\n this.libelleRendezVous = m.format(\"DD/MM/YYYY\") + \" de \" + m.format(\"HH:mm\") + \" à \" + fin.format(\"HH:mm\");\n this.messageInfoUtilisateur = '';\n // alert('Vous avez sélectionné le rendez-vous du ' + m.format(\"DD/MM/YYYY HH:mm\") + \". Le rendez-vous se terminera à \" + fin.format(\"HH:mm\"));\n // Test la disponibilité du rendez-vous\n /*const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'estRDVDispo')\n .set('params', JSON.stringify([this.rdvSelectionne.extendedProps, false, this.famille['id'], localStorage.getItem('anneeScolaire')]))\n };\n this.http.get(api, options).subscribe(data => {\n console.log(data);\n if (data['isDispo']) {\n console.log('Le rdv est toujours disponible');\n } else {\n console.log('Le rdv n est plus disponible => recupere la liste des rdv dispos dans rdv_dispo');\n this.messageInfoUtilisateur = \"Le rendez-vous sélectionné a été réservé par un autre utilisateur. Veuillez en choisir un autre.\";\n this.messageInfo.open();\n const listeRdvDispo = data['rdv_dispo'];\n this.initListeRdv(listeRdvDispo);\n }\n },\n err => console.log(err));\n */\n }\n\n saveRendezVous() {\n console.log({ ou: 'saveRendezVous', rdvSelectionne: this.rdvSelectionne, idParticipant: this.idParticipant, rdvToSend: this.rdvSelectionne.extendedProps });\n if (this.rdvSelectionne) {\n console.log(this.rdvSelectionne.extendedProps);\n const options = {\n params: new HttpParams().set('service', 'ServicePortailPreInscription')\n .set('method', 'estRDVDispo')\n .set('params', JSON.stringify([this.rdvSelectionne.extendedProps, true, this.idParticipant]))\n };\n this.http.get(api, options).subscribe(data => {\n console.log(data);\n if (data['isValide']) {\n console.log('Le rdv est valide');\n // TODO passer à la dernière étape qui affiche message de confirmation et clos la session 5 minutes plus tard\n this.isRdvConfirme = true;\n this.is_courriel_envoye = data['courriel_envoye'];\n this.courriel = data['courriel'];\n } else if (!data['isDispo']) {\n console.log('Le rdv n est plus disponible => recupere la liste des rdv dispos dans rdv_dispo');\n this.messageInfoUtilisateur = \"Le rendez-vous sélectionné n'est plus disponible. Veuillez en choisir un autre.\";\n // this.messageInfo.open();\n const listeRdvDispo = data['rdv_dispo'];\n this.listeRdvDispo = listeRdvDispo;\n this.initListeRdv();\n }\n },\n err => console.log(err));\n }\n }\n}\n","\n

Veuillez sélectionner un rendez-vous

\n
\n

{{ messageInfoUtilisateur }}

\n
\n
\n

Vous avez sélectionné le rendez-vous du {{ libelleRendezVous }}

\n \n
\n

Votre rendez-vous est confirmé le {{ libelleRendezVous }}

\n
Un courriel de confirmation vous a été envoyé à l'adresse {{ courriel ? courriel : '' }}
\n
Suite à unproblème technique, le courriel de confirmation n'a pas pu être envoyé.
\n
\n \n \n\n
\n","import { Component, OnInit } from '@angular/core';\nimport { smoothlyMenu } from '../../shared/helpers/app.helpers';\n\ndeclare var jQuery: any;\n@Component({\n\tselector: 'app-topnavbar',\n\ttemplateUrl: 'topnavbar.component.html',\n\tstyleUrls: ['./topnavbar.component.scss']\n})\nexport class TopnavbarComponent implements OnInit {\n\tngOnInit() {\n\t\tlocalStorage.getItem('user')\n\t}\n\ttoggleNavigation(): void {\n\n\t\tjQuery('body').toggleClass('mini-navbar');\n\t\tsmoothlyMenu();\n\t}\n\tlogout() {\n\t\tlocalStorage.clear();\n\t\t// location.href='http://to_login_page';\n\t}\n\tlibelleFamille() {\n\t\tconst libelle = localStorage.getItem('title');\n\t\treturn libelle ? 'Famille ' + libelle : 'Portail famille';\n\t}\n}","
\n \n
\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-error404',\r\n templateUrl: './error404.component.html',\r\n styleUrls: ['./error404.component.scss']\r\n})\r\nexport class Error404Component implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
Terminé
\r\n

Votre lien a expiré.

\r\n
\r\n \r\n \r\n \r\n
\r\n
","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-fin',\n templateUrl: './fin.component.html',\n styleUrls: ['./fin.component.scss']\n})\nexport class FinComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","
\n
\n \n
\n
Vous avez terminé votre saisie
\n

Vous allez recevoir un email de confirmation avec un récapitulatif de vos réinscriptions.

\n
\n
\n
","import {OnInit, Component} from \"@angular/core\";\nimport { ActivatedRouteSnapshot, ActivatedRoute, Router } from \"@angular/router\";\nimport { AuthService } from \"@shared/services/auth/auth.service\";\nimport { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { environment } from \"src/environments/environment\";\n\n@Component({\n selector: 'home',\n templateUrl: './home.component.html',\n\t\tstyleUrls: ['./home.component.scss']\n})\nexport class HomeComponent implements OnInit {\n public session_expire = false;\n public data;\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private authService: AuthService,\n private http: HttpClient,\n ) { }\n\n ngOnInit() {\n // this.route.paramMap;\n console.log('HomeComponent');\n // console.log(this.route.snapshot.paramMap);\n if (this.route.snapshot.paramMap.has('token')) {\n const token = this.route.snapshot.paramMap.get('token');\n console.log('token:', token);\n const res = this.authService.loginAuto(this.route).subscribe(\n data=>{\n console.log(data);\n // Rechercher les données de la famille\n this.searchDonneesFamille(localStorage.getItem('id_famille'), localStorage.getItem('anneeScolaire'));\n \n },\n (error)=>{console.log(error)}\n );\n console.log(res);\n } else if (localStorage.getItem('id_famille') && localStorage.getItem('anneeScolaire')) {\n console.log('Données familles déjà chargées');\n } else {\n console.log('pas de token');\n this.router.navigate(['/']);\n }\n }\n\n dataFamilleSaved(avecValidation) {\n // Recharger les données\n console.log('dataFamilleSaved : rechargement données', avecValidation);\n if (avecValidation) {\n // éventuellement voir pour charger les données factures et les afficher\n this.session_expire=true;\n this.data=null;\n // TODO aller sur une page avec messages personnalisés et stocker le message dans le local storage ?\n this.router.navigate(['/fin']);\n } else {\n // Inutile de recharger car on perd des infos non sauvegardées (eleve validé)\n // this.searchDonneesFamille(localStorage.getItem('id_famille'), localStorage.getItem('anneeScolaire'));\n }\n }\n searchDonneesFamille(id_famille, anneeScolaire) {\n this.session_expire=false;\n console.log('searchDonneesFamille', id_famille);\n const api = environment.API;\n const options = {\n params: new HttpParams().set('service', 'ServicePortailFamille')\n .set('method', 'selectInfosFamille')\n .set('params', JSON.stringify([id_famille, anneeScolaire, true])) // true pour prende en compte les modifications déjà effectuées par la famille et ni validées ni rejetées\n };\n this.http.get(api, options).subscribe(data =>\n {\n console.log(data);\n if (data['success']==false && data['error_code']==99) {\n // Token expiré\n this.session_expire=true;\n }\n this.data = data;\n })\n }\n}","
\n
\n
\n
\n \n
\n
Votre session a expiré.
\n \n
Erreur de récuparation des données.
\n {{ data | json }}\n
\n\n
\n
\n
\n\n\n
\n
","/*\n * Inspinia js helpers:\n *\n * correctHeight() - fix the height of main wrapper\n * detectBody() - detect windows size\n * smoothlyMenu() - add smooth fade in/out on navigation show/ide\n *\n*/\n\ndeclare var jQuery: any;\n\nexport function correctHeight() {\n\n const pageWrapper = jQuery('#page-wrapper');\n const navbarHeigh = jQuery('nav.navbar-default').height();\n const wrapperHeigh = pageWrapper.height();\n\n if (navbarHeigh > wrapperHeigh) {\n pageWrapper.css('min-height', navbarHeigh + 'px');\n }\n\n if (navbarHeigh < wrapperHeigh) {\n if (navbarHeigh < jQuery(window).height()) {\n pageWrapper.css('min-height', jQuery(window).height() + 'px');\n } else {\n pageWrapper.css('min-height', navbarHeigh + 'px');\n }\n }\n\n if (jQuery('body').hasClass('fixed-nav')) {\n if (navbarHeigh > wrapperHeigh) {\n pageWrapper.css('min-height', navbarHeigh + 'px');\n } else {\n pageWrapper.css('min-height', jQuery(window).height() - 60 + 'px');\n }\n }\n}\n\nexport function detectBody() {\n if (jQuery(document).width() < 769) {\n jQuery('body').addClass('body-small');\n } else {\n jQuery('body').removeClass('body-small');\n }\n}\n\nexport function smoothlyMenu() {\n if (!jQuery('body').hasClass('mini-navbar') || jQuery('body').hasClass('body-small')) {\n // Hide menu in order to smoothly turn on when maximize menu\n jQuery('#side-menu').hide();\n // For smoothly turn on menu\n setTimeout(\n function () {\n jQuery('#side-menu').fadeIn(400);\n }, 200);\n } else if (jQuery('body').hasClass('fixed-sidebar')) {\n jQuery('#side-menu').hide();\n setTimeout(\n function () {\n jQuery('#side-menu').fadeIn(400);\n }, 100);\n } else {\n // Remove all inline style from jquery fadeIn function to reset menu state\n jQuery('#side-menu').removeAttr('style');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { AuthService } from '@shared/services/auth/auth.service';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n constructor(\n private authenticationService: AuthService,\n private router: Router,) { }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n //let token = localStorage.getItem(\"id_token\");\n // console.log('intercept', request, next);\n /*const authReq = request.clone({\n headers: new HttpHeaders({\n 'token': token ? token : '',\n })\n });*/\n\n return next.handle(request).pipe(catchError(err => {\n console.log('error request',err);\n if (err.status === 401) {\n // auto logout if 401 response returned from api\n this.authenticationService.logout();\n location.reload(true);\n } else if (err.status === 0 || err.status === 504) {\n // il retourne un status à 0 quand l'API ne répond pas (pourquoi ?), par exemple si le container server n'est pas démarré\n //this.authenticationService.logout();\n //location.href='error';\n console.log('serveur KO');\n this.router.navigate(['error']); // Voir pour créer une page indiquant que le serveur ne répond pas réessayer plus tard dans ce cas.\n }\n\n\n const error = err.error.message || err.statusText;\n return throwError(error);\n }))\n }\n}","export class Login {\n first_name: string;\n last_name: string;\n avatar?: string;\n title?: string;\n}\n","import { Injectable, Output, EventEmitter, Directive } from '@angular/core';\nimport { HttpClient, HttpResponse, HttpParams } from '@angular/common/http';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { Router, ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router';\nimport {Observable, Observer, Subscriber} from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { map } from 'rxjs/operators';\n/**\n * Authentification services\n */\n@Directive()\n@Injectable()\nexport class AuthService {\n\t/**\n\t * Output isAuthenticated using EventEmitter\n\t */\n\t@Output() isAuthenticated: EventEmitter = new EventEmitter();\n\t/**\n\t * Application api url\n\t */\n\tprivate baseUrl: string;\n\t/**\n\t * Current user\n\t */\n\tprivate currentUser: any;\n\t/**\n\t * Promise\n\t */\n\tprivate currentUserPromise: Promise;\n\n\tconstructor(\n\t\tprivate http: HttpClient,\n\t\tprivate router: Router,\n\t\tprivate route: ActivatedRoute,\n\t\tprivate helper: JwtHelperService\n\t) {\n\t}\n\tloginAuto(activatedRoute: ActivatedRoute):Observable {\n\t\tconst token = activatedRoute.snapshot.params.token;\n\t\tconsole.log('loginAuto token=', token, activatedRoute);\n\t\t// Vérifier si le token correspond à un token émis par LEA\n\t\t/*const options = {\n\t\t\tservice: 'token',\n\t\t\tmethod: 'token',\n\t\t\tparams: JSON.stringify([token]),\n\t\t\t//params: new HttpParams().set('service', 'token')\n\t\t\t //.set('method', 'token')\n\t\t\t //.set('params', token)\n\t\t\t //.set('params', JSON.stringify([token]))\n\t\t };*/\n\t\t // Test avec appel service eleve qui retourne bien un resultat\n\t\t /*const options = {\n\t\t\tparams: new HttpParams().set('service', 'ServiceEleve')\n\t\t\t .set('method', 'findById')\n\t\t\t .set('params', JSON.stringify([103, 2013])) // JSON.stringify({ token: token })\n\t\t };*/\n\t\t // ok en passant les paramètres depuis le front\n\t\t const options = {\n\t\t\tparams: new HttpParams().set('service', 'ServicePortailFamille')\n\t\t\t .set('method', 'isLienFamilleValide')\n\t\t\t .set('params', JSON.stringify([token])) // JSON.stringify({ token: token })\n\t\t };\n\t\tconst api = environment.API; // 'https://test.eveasoft.com/php/api/api.php'; // environment.API\n\t\t/*this.http.get(api, { params: options})\n\t\t\t\t.pipe(map(response => console.log(response)))\n\t\t\t\t.subscribe(data => {\n\t\t\t\t\tconsole.log(data);\n\t\t\t\t})*/\n\n\t\tconsole.log('Appel API ', api, );\n\t\treturn new Observable((subscriber: Subscriber )=> {\n\t\t\t// this.http.post(api, { params: options})\n\t\t\tthis.http.get(api, options)\n\t\t\t\t/*.pipe(\n\t\t\t\t\tmap(\n\t\t\t\t\t\t(res:Response) =>\n\t\t\t\t\t\t\tres.json() )) // response.json(); // console.log(response)*/\n\t\t\t\t.subscribe(data => {\n\t\t\t\t\tconsole.log(data);\n\t\t\t\t\tif (data['isLienFamilleValide']) {\n\t\t\t\t\t\tconsole.log('Lien famille valide');\n\t\t\t\t\t\tlocalStorage.setItem('id_token', data['token']);\n\t\t\t\t\t\tlocalStorage.setItem('id_famille', data['idFamille']);\n\t\t\t\t\t\tlocalStorage.setItem('anneeScolaire',data['anneeScolaire']);\n\t\t\t\t\t\tsubscriber.next(data['idFamille']);\n\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log('lien famille erroné => aller à la page d erreur ou de connexion');\n\t\t\t\t\t\tlocalStorage.removeItem('id_token');\n\t\t\t\t\t\tsubscriber.error();\n\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t\tthis.router.navigate(['login']);\n\t\t\t\t\t}\n\t\t\t\t}, error=>{console.log(error)})\n\t\t});\n\t}\n\t/**\n\t * Manage the login\n\t * @param email email from the login form\n\t * @param password password from the login form\n\t */\n\tlogin(email, password) {\n\t\tconsole.log('AuthService');\n\t\tconsole.log('AuthService', this.route, this.route.snapshot, this.route.params, this.route.queryParamMap);\n\t\t/*return Observable.create(subscriber => {\n\n this.http\n .get(this.baseUrl + '/login', { email, password })\n .map(response => response.json())\n .subscribe(\n data => {\n localStorage.setItem('id_token', data.access_token);\n\n this.getCurrentUser().then(\n user => {\n subscriber.next(user);\n subscriber.complete();\n },\n error => {\n subscriber.error(error);\n subscriber.complete();\n }\n );\n },\n error => {\n localStorage.removeItem('id_token');\n console.error(\n 'Service authentification',\n 'Authentication failed ',\n error\n );\n subscriber.error(error);\n },\n () => {\n console.info(\n 'Service authentification',\n 'Authentication request completed'\n );\n }\n );\n\t\t});*/\n\n\n\n\t\t/*if (token) {\n\t\t\tconsole.log(token);\n\t\t\t// Vérifier si le token correspond à un token émis par LEA\n\t\t\tconst options = {\n\t\t\t service: 'token',\n\t\t\t method: 'token',\n\t\t\t params: JSON.stringify([token]),\n\t\t\t //params: new HttpParams().set('service', 'token')\n\t\t\t\t//.set('method', 'token')\n\t\t\t\t//.set('params', token)\n\t\t\t\t//.set('params', JSON.stringify([token]))\n\t\t\t};\n\t\t\tconst api = environment.API; // 'https://test.eveasoft.com/php/api/api.php'; // environment.API\n\t\t\tconsole.log('appel de l API', api, options);\n\t\t\tif (this.sub) {\n\t\t\t this.sub.unsubscribe();\n\t\t\t}\n\t\t\tthis.sub = this.http\n\t\t\t .post(api, { params: options} )\n\t\t\t .subscribe(data=>{\n\t\t\t\tconsole.log(data);\n\t\t\t}, error => {\n\t\t\t console.log(error);\n\t\t\t})\n\t\t } else {\n\t\t\tconsole.log('pas de token');\n\t\t }*/\n\t}\n\t/**\n\t * Boolean, Return if the user is authenticated and if his token is not expired\n\t */\n\tauthenticated() {\n\t\tconsole.log('authenticated');\n\t\tconst token = localStorage.getItem('id_token');\n\t\t// console.log('token', token)\n\t\tif (!this.helper.isTokenExpired(token)) {\n\t\t\tconsole.log('token valide');\n\t\t\tthis.isAuthenticated.emit(true);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.log('token expiré');\n\t\t\tthis.isAuthenticated.emit(false);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Manage the logout\n\t */\n\tlogout() {\n\t\tconsole.log('logout');\n\t\tlocalStorage.removeItem('id_token');\n\t\tthis.isAuthenticated.emit(false);\n\t\tthis.currentUser = null;\n\t\tthis.router.navigate(['login']);\n\t}\n\t/**\n\t * Get the id_token from localStorage\n\t */\n\tgetToken() {\n\t\tconsole.log('getToken');\n\t\treturn localStorage.getItem('id_token');\n\t}\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate } from '@angular/router';\nimport { AuthService } from './auth.service';\n/**\n * Manage the authentification of the current user\n */\n@Injectable()\nexport class AuthenticatedGuard implements CanActivate {\n\tconstructor(private auth: AuthService, private router: Router) { }\n\t/**\n\t * Check if the user is authenticated\n\t */\n\tcanActivate() {\n\t\tif (this.auth.authenticated()) {\n\t\t\treturn true;\n\t\t}\n\t\tthis.router.navigate(['others']);\n\t\treturn false;\n\t}\n}\n","\nimport { Injectable } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { \n\tRouter,\n\tCanActivate,\n\tActivatedRouteSnapshot\n} from '@angular/router';\nimport { AuthService } from './auth.service';\n/**\n * Role guard service\n * Manage the Authorization of the current user\n */\n@Injectable()\nexport class RoleGuardService implements CanActivate {\n\t/**\n\t * Constructeur\n\t * @param auth AuthService\n\t * @param router Router\n\t */\n\tconstructor(public auth: AuthService, public router: Router) {}\n\t/**\n\t * Check if the user can access the target route\n\t * @param route \n\t */\n\tcanActivate(route: ActivatedRouteSnapshot): boolean {\n\t\tconst jwt = new JwtHelperService();\n\t\t// this will be passed from the route config\n\t\t// on the data property\n\t\tconst expectedRole = route.data.expectedRole;\n\t\tconst token = localStorage.getItem('id_token');\n\t\t// decode the token to get its payload\n\t\tconst tokenPayload = jwt.decodeToken(token);\n\t\tif (\n\t\t\t!this.auth.authenticated() || !expectedRole.includes(tokenPayload.role)\n\t\t) {\n\t\t\tthis.router.navigate(['login']);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n","import { EnvService } from './env-service.service';\n\nexport const EnvServiceFactory = () => { \n // Create env\n const env = new EnvService();\n\n // Read environment variables from browser window\n const browserWindow = window || {};\n const browserWindowEnv = browserWindow['__env'] || {};\n\n // Assign environment variables from browser window to env\n // In the current implementation, properties from env.js overwrite defaults from the EnvService.\n // If needed, a deep merge can be performed here to merge properties instead of overwriting them.\n for (const key in browserWindowEnv) {\n if (browserWindowEnv.hasOwnProperty(key)) {\n env[key] = window['__env'][key];\n }\n }\n\n return env;\n};\n\nexport const EnvServiceProvider = { \n provide: EnvService,\n useFactory: EnvServiceFactory,\n deps: [],\n};","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EnvService {\n\n // The values that are defined here are the default values that can\n // be overridden by env.js\n\n // API url\n public API = '';\n // Whether or not to enable debug mode\n\tpublic enableDebug = true;\n\t\n constructor() { }\n}","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { RoleGuardService } from './services/auth/role-guard.service';\nimport { AuthenticatedGuard } from './services/auth/authenticated-guard.service';\nimport { AuthService } from './services/auth/auth.service';\nimport { EnvServiceProvider } from './services/env/env-service.factory';\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n exports: [],\n providers: [RoleGuardService, AuthService, AuthenticatedGuard, EnvServiceProvider]\n})\nexport class SharedModule {}\n","export const environment = {\r\n production: false,\r\n API: 'https://lea.bco.proxy.eveasoft.com/module/fam/api/',\r\n //API: 'https://srv.bco.eveasoft.com/php/api/api.php', //Accès direct au serveur (avant)\r\n //server: 'srv.bco.eveasoft.com', // Sert pour la white list\r\n server: 'lea.bco.proxy.eveasoft.com',\r\n date: '', // Permet de voir quelle version est déployée (à remplacer lors du déploiement)\r\n // version: '1.0.2',\r\n};\r\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"]}