{"version":3,"sources":["./node_modules/moment/locale sync ^\\.\\/.*$","./src/$_lazy_route_resource lazy namespace object","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/components/eleve/eleve.component.ts","./src/app/components/eleve/eleve.component.html","./src/app/components/famille/famille.component.ts","./src/app/components/famille/famille.component.html","./src/app/components/inscriptions/inscriptions.component.ts","./src/app/components/inscriptions/inscriptions.component.html","./src/app/components/navigation/navigation.component.ts","./src/app/components/navigation/navigation.component.html","./src/app/components/rendez-vous/rendez-vous.component.ts","./src/app/components/rendez-vous/rendez-vous.component.html","./src/app/components/topnavbar/topnavbar.component.ts","./src/app/components/topnavbar/topnavbar.component.html","./src/app/pages/error404/error404.component.ts","./src/app/pages/error404/error404.component.html","./src/app/pages/fin/fin.component.ts","./src/app/pages/fin/fin.component.html","./src/app/pages/home/home.component.ts","./src/app/pages/home/home.component.html","./src/app/shared/helpers/app.helpers.ts","./src/app/shared/helpers/error.interceptor.ts","./src/app/shared/models/login.ts","./src/app/shared/services/auth/auth.service.ts","./src/app/shared/services/auth/authenticated-guard.service.ts","./src/app/shared/services/auth/role-guard.service.ts","./src/app/shared/services/env/env-service.factory.ts","./src/app/shared/services/env/env-service.service.ts","./src/app/shared/shared.module.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"main-es2015.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"],"sourceRoot":"webpack:///"}