{"version":3,"sources":["webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/app.resolver.ts","webpack:///./src/app/app.service.ts","webpack:///./src/app/classes/comment.class.ts","webpack:///./src/app/classes/component.ts","webpack:///./src/app/classes/dateAdapter.ts","webpack:///./src/app/classes/etablissement.class.ts","webpack:///./src/app/classes/examen.class.ts","webpack:///./src/app/classes/file.class.ts","webpack:///./src/app/classes/matiere.class.ts","webpack:///./src/app/classes/member.class.ts","webpack:///./src/app/classes/message.class.ts","webpack:///./src/app/classes/note.class.ts","webpack:///./src/app/classes/page.class.ts","webpack:///./src/app/classes/piece.class.ts","webpack:///./src/app/classes/session.class.ts","webpack:///./src/app/classes/specialTime.class.ts","webpack:///./src/app/classes/sujet.class.ts","webpack:///./src/app/classes/task.class.ts","webpack:///./src/app/classes/tools.ts","webpack:///./src/app/classes/user.class.ts","webpack:///./src/app/components/bareme-creator/bareme-creator.component.html","webpack:///./src/app/components/bareme-creator/bareme-creator.component.ts","webpack:///./src/app/components/bareme-to-qcm/bareme-editor/bareme-editor.component.html","webpack:///./src/app/components/bareme-to-qcm/bareme-editor/bareme-editor.component.ts","webpack:///./src/app/components/bareme-to-qcm/bareme-to-qcm.component.html","webpack:///./src/app/components/bareme-to-qcm/bareme-to-qcm.component.ts","webpack:///./src/app/components/comments/comments.component.html","webpack:///./src/app/components/comments/comments.component.ts","webpack:///./src/app/components/comments/modal/commentModal.component.html","webpack:///./src/app/components/comments/modal/commentModal.component.ts","webpack:///./src/app/components/edit-file-name-modal/editFileNameModal.component.html","webpack:///./src/app/components/edit-file-name-modal/editFileNameModal.component.ts","webpack:///./src/app/components/password-editor/passwordEditor.component.html","webpack:///./src/app/components/password-editor/passwordEditor.component.ts","webpack:///./src/app/components/preview-modal/previewModal.component.html","webpack:///./src/app/components/preview-modal/previewModal.component.ts","webpack:///./src/app/components/process-editor/processEditor.component.html","webpack:///./src/app/components/process-editor/processEditor.component.ts","webpack:///./src/app/components/search-bar/popover-search-filter/classes/filter.class.ts","webpack:///./src/app/components/search-bar/popover-search-filter/popover-search-filter.html","webpack:///./src/app/components/search-bar/popover-search-filter/popover-search-filter.component.ts","webpack:///./src/app/components/search-bar/search-bar.component.html","webpack:///./src/app/components/search-bar/search-bar.component.ts","webpack:///./src/app/components/search-bar/search-bar.module.ts","webpack:///./src/app/components/search-bar/services/search-bar.service.ts","webpack:///./src/app/modal/confirmDeleteElement/confirmDeleteElementModal.component.html","webpack:///./src/app/modal/confirmDeleteElement/confirmDeleteElementModal.component.ts","webpack:///./src/app/modal/confirmDeleteUser/confirmDeleteUserModal.component.html","webpack:///./src/app/modal/confirmDeleteUser/confirmDeleteUserModal.component.ts","webpack:///./src/app/modal/confirmGiveFilesKeys/confirmGiveFilesKeysModal.component.html","webpack:///./src/app/modal/confirmGiveFilesKeys/confirmGiveFilesKeysModal.component.ts","webpack:///./src/app/modal/confirmResetRsa/confirmResetRsaModal.component.html","webpack:///./src/app/modal/confirmResetRsa/confirmResetRsaModal.component.ts","webpack:///./src/app/modal/connect/connectApplication.component.html","webpack:///./src/app/modal/connect/connectApplication.component.ts","webpack:///./src/app/modal/connectNewMachine/connectNewMachineModal.component.html","webpack:///./src/app/modal/connectNewMachine/connectNewMachineModal.component.ts","webpack:///./src/app/modal/connectOTP/connectOTPModal.component.html","webpack:///./src/app/modal/connectOTP/connectOTPModal.component.ts","webpack:///./src/app/modal/downloadRsa/downloadRsaModal.component.html","webpack:///./src/app/modal/downloadRsa/downloadRsaModal.component.ts","webpack:///./src/app/modal/forgetPassword/forgetPasswordModal.component.html","webpack:///./src/app/modal/forgetPassword/forgetPasswordModal.component.ts","webpack:///./src/app/modal/forgetPassword/infosForgetPasswordModal.component.html","webpack:///./src/app/modal/forgetPassword/infosForgetPasswordModal.component.ts","webpack:///./src/app/modal/infoResetRsa/infoResetRsaModal.component.html","webpack:///./src/app/modal/infoResetRsa/infoResetRsaModal.component.ts","webpack:///./src/app/modal/infosInitAccount/infosInitAccountModal.component.html","webpack:///./src/app/modal/infosInitAccount/infosInitAccountModal.component.ts","webpack:///./src/app/modal/resetPassword/resetPasswordModal.component.html","webpack:///./src/app/modal/resetPassword/resetPasswordModal.component.ts","webpack:///./src/app/modal/selectAccount/selectAccountModal.component.html","webpack:///./src/app/modal/selectAccount/selectAccountModal.component.ts","webpack:///./src/app/modal/user/userModal.component.html","webpack:///./src/app/modal/user/dialog-overview-example-dialog.html","webpack:///./src/app/modal/user/userModal.component.ts","webpack:///./src/app/modal/warningAddBlockerEnabled/warningAddBlockerEnabledModal.component.html","webpack:///./src/app/modal/warningAddBlockerEnabled/warningAddBlockerEnabledModal.component.ts","webpack:///./src/app/modal/warningRsa/warningRsaModal.component.html","webpack:///./src/app/modal/warningRsa/warningRsaModal.component.ts","webpack:///./src/app/models/message.model.ts","webpack:///./src/app/pages/admin/admin-system/admin-system.component.html","webpack:///./src/app/pages/admin/admin-system/admin-system.component.ts","webpack:///./src/app/pages/admin/admin-system/modals/confirmDeleteProcessusModal.component.html","webpack:///./src/app/pages/admin/admin-system/modals/confirmDeleteProcessusModal.component.ts","webpack:///./src/app/pages/admin/admin-system/modals/editionProcessusModal.component.html","webpack:///./src/app/pages/admin/admin-system/modals/editionProcessusModal.component.ts","webpack:///./src/app/pages/admin/admin-system/modals/infosDeleteProcessusModal.component.html","webpack:///./src/app/pages/admin/admin-system/modals/infosDeleteProcessusModal.component.ts","webpack:///./src/app/pages/admin/admin-users/admin-users.component.html","webpack:///./src/app/pages/admin/admin-users/admin-users.component.ts","webpack:///./src/app/pages/admin/admin.component.html","webpack:///./src/app/pages/admin/admin.component.ts","webpack:///./src/app/pages/calendar/calendar.component.html","webpack:///./src/app/pages/calendar/calendar.component.ts","webpack:///./src/app/pages/canvas/canvas.component.html","webpack:///./src/app/pages/canvas/canvas.component.ts","webpack:///./src/app/pages/canvas/canvas.module.ts","webpack:///./src/app/pages/community/chat-detail/chat-detail.component.html","webpack:///./src/app/pages/community/chat-detail/chat-detail.component.ts","webpack:///./src/app/pages/community/chat-list/chat-list.component.html","webpack:///./src/app/pages/community/chat-list/chat-list.component.ts","webpack:///./src/app/pages/community/community.component.html","webpack:///./src/app/pages/community/community.component.ts","webpack:///./src/app/pages/community/modals/modal-create-chat/modal-create-chat.component.html","webpack:///./src/app/pages/community/modals/modal-create-chat/modal-create-chat.component.ts","webpack:///./src/app/pages/community/module-chat/module-chat.component.html","webpack:///./src/app/pages/community/module-chat/module-chat.component.ts","webpack:///./src/app/pages/community/notification-modal/notification-modal.component.ts","webpack:///./src/app/pages/date-user-friendly/date-user-friendly.component.html","webpack:///./src/app/pages/date-user-friendly/date-user-friendly.component.ts","webpack:///./src/app/pages/footer/footer.component.html","webpack:///./src/app/pages/footer/footer.component.ts","webpack:///./src/app/pages/home/home.component.html","webpack:///./src/app/pages/home/home.component.ts","webpack:///./src/app/pages/login/login.component.html","webpack:///./src/app/pages/login/login.component.ts","webpack:///./src/app/pages/state-stats/state-stats.component.html","webpack:///./src/app/pages/state-stats/state-stats.component.ts","webpack:///./src/app/pages/task/components/editor-panel-task/editor-panel-task.component.html","webpack:///./src/app/pages/task/components/editor-panel-task/editor-panel-task.component.ts","webpack:///./src/app/pages/task/components/editor-panel/editor-panel.component.html","webpack:///./src/app/pages/task/components/editor-panel/editor-panel.component.ts","webpack:///./src/app/pages/task/components/lane/lane.component.html","webpack:///./src/app/pages/task/components/lane/lane.component.ts","webpack:///./src/app/pages/task/components/ticket/ticket.component.html","webpack:///./src/app/pages/task/components/ticket/ticket.component.ts","webpack:///./src/app/pages/task/modal/select-assigned.component.html","webpack:///./src/app/pages/task/modal/select-assigned.component.ts","webpack:///./src/app/pages/task/modal/sendMailModal.component.html","webpack:///./src/app/pages/task/modal/sendMailModal.component.ts","webpack:///./src/app/pages/task/modal/warningUnloggedUserModal.component.html","webpack:///./src/app/pages/task/modal/warningUnloggedUserModal.component.ts","webpack:///./src/app/pages/task/model/task.ts","webpack:///./src/app/pages/task/pipes/taskFilter.pipe.ts","webpack:///./src/app/pages/task/services/task.service.ts","webpack:///./src/app/pages/task/task.component.html","webpack:///./src/app/pages/task/task.component.ts","webpack:///./src/app/pages/user-add-form/user-add-form.component.html","webpack:///./src/app/pages/user-add-form/user-add-form.component.ts","webpack:///./src/app/pages/user-name/user-name.component.html","webpack:///./src/app/pages/user-name/user-name.component.ts","webpack:///./src/app/pages/user/user.component.html","webpack:///./src/app/pages/user/user.component.ts","webpack:///./src/app/pages/workspace/subject/subject-list/modal/validateTaskModal/validateTaskModal.component.html","webpack:///./src/app/pages/workspace/subject/subject-list/modal/validateTaskModal/validateTaskModal.component.ts","webpack:///./src/app/pipes/otherUsers.pipe.ts","webpack:///./src/app/providers/admin-data.ts","webpack:///./src/app/providers/bareme-data.ts","webpack:///./src/app/providers/chat-data.ts","webpack:///./src/app/providers/file-data.ts","webpack:///./src/app/providers/generic-data.ts","webpack:///./src/app/providers/saved-data.ts","webpack:///./src/app/providers/task-data.ts","webpack:///./src/app/providers/user-data.ts","webpack:///./src/app/providers/vault-data.ts","webpack:///./src/app/providers/workspace-data.ts","webpack:///./src/app/providers/workspaceData.service.ts","webpack:///./src/app/services/admin.service.ts","webpack:///./src/app/services/auth.service.ts","webpack:///./src/app/services/bareme.service.ts","webpack:///./src/app/services/candidat.service.ts","webpack:///./src/app/services/encrypt.service.ts","webpack:///./src/app/services/epreuve.service.ts","webpack:///./src/app/services/etablissement.service.ts","webpack:///./src/app/services/event.service.ts","webpack:///./src/app/services/examen.service.ts","webpack:///./src/app/services/file.service.ts","webpack:///./src/app/services/http/authHttp.service.ts","webpack:///./src/app/services/http/chatHttp.service.ts","webpack:///./src/app/services/http/creationHttp.service.ts","webpack:///./src/app/services/http/dataHttp.service.ts","webpack:///./src/app/services/http/epreuveHttp.service.ts","webpack:///./src/app/services/http/etablissementHttp.service.ts","webpack:///./src/app/services/http/examenHttp.service.ts","webpack:///./src/app/services/http/fileHttp.service.ts","webpack:///./src/app/services/http/sessionHttp.service.ts","webpack:///./src/app/services/http/sujetHttp.service.ts","webpack:///./src/app/services/http/taskHttp.service.ts","webpack:///./src/app/services/http/userHttp.service.ts","webpack:///./src/app/services/http/vaultHttp.service.ts","webpack:///./src/app/services/messages.service.ts","webpack:///./src/app/services/passation.service.ts","webpack:///./src/app/services/room.service.ts","webpack:///./src/app/services/session.service.ts","webpack:///./src/app/services/socket.service.ts","webpack:///./src/app/services/socketVault.service.ts","webpack:///./src/app/services/statistics.service.ts","webpack:///./src/app/services/sujet.service.ts","webpack:///./src/app/services/task.service.ts","webpack:///./src/app/services/user.service.ts","webpack:///./src/main.ts","webpack:///zlib (ignored)","webpack:///fs (ignored)","webpack:///http (ignored)","webpack:///https (ignored)","webpack:///url (ignored)"],"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.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\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\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 id;\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 ^\\\\.\\\\/.*$\";","var map = {\n\t\"./pages/workspace/workspace.module.ngfactory\": [\n\t\t\"./src/app/pages/workspace/workspace.module.ngfactory.js\",\n\t\t\"pages-workspace-workspace-module-ngfactory\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";\nmodule.exports = webpackAsyncContext;","\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t 0\">{{this.chatData.getTotalCounter()}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{{ 'common.mail' | translate }}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
{{userData.firstName}} {{userData.lastName}}
{{currentLogin}}
\r\n\t\t\t\t\t\t\tmore_vert\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{{userData.firstName}} {{userData.lastName}}
{{currentLogin}}
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t   \r\n\t
\r\n\t
\r\n\t\r\n\t\r\n\r\n\t
\r\n\t\t\r\n\t
\r\n
","/***********************************************\r\n * Angular\r\n **********************************************/\r\nimport { Component, OnInit, OnChanges, OnDestroy, HostListener }\tfrom '@angular/core';\r\nimport { ViewEncapsulation, ViewChild, EventEmitter }\t\t\t\tfrom '@angular/core';\r\nimport {TranslateService} \t\t\t\t\t\t\t\t\t\t\tfrom '@ngx-translate/core';\r\n\r\nimport { AppState }\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './app.service';\r\nimport { MatSidenav }\t\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { Router, ActivatedRoute, NavigationEnd, NavigationStart }\tfrom '@angular/router';\r\nimport { MatDialog }\t\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { Http }\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/http';\r\n\r\nimport { Location, PlatformLocation }\tfrom '@angular/common';\r\nimport { SCClientSocket }\t\t\t\tfrom 'socketcluster-client';\r\n\r\n/***********************************************\r\n * Classes\r\n **********************************************/\r\nimport { Tools }\t\t\t\tfrom './classes/tools';\r\nimport { Etablissement }\t\tfrom './classes/etablissement.class';\r\nimport { Session }\t\t\t\tfrom './classes/session.class';\r\nimport { Examen }\t\t\t\tfrom './classes/examen.class';\r\nimport { Matiere }\t\t\t\tfrom './classes/matiere.class';\r\nimport { Sujet }\t\t\t\tfrom './classes/sujet.class';\r\nimport { Task }\t\t\t\t\tfrom './classes/task.class';\r\nimport { Piece }\t\t\t\tfrom './classes/piece.class';\r\nimport { File as FileSubject }\tfrom './classes/file.class';\r\nimport { SpecialTime }\t\t\tfrom './classes/specialTime.class';\r\n\r\n\r\n/***********************************************\r\n * Providers\r\n **********************************************/\r\nimport { FooterComponent }\tfrom './pages/footer/footer.component';\r\nimport { UserData }\t\t\tfrom './providers/user-data';\r\nimport { WorkspaceData }\tfrom './providers/workspace-data';\r\nimport { ChatData }\t\t\tfrom './providers/chat-data';\r\nimport { TaskData }\t\t\tfrom './providers/task-data';\r\nimport { AdminData }\t\tfrom './providers/admin-data';\r\nimport { SavedData }\t\tfrom './providers/saved-data';\r\nimport { VaultData }\t\tfrom './providers/vault-data';\r\nimport { BaremeData }\t\tfrom './providers/bareme-data';\r\nimport { FileData }\t\t\tfrom './providers/file-data';\r\n\r\n\r\n/***********************************************\r\n * Service\r\n **********************************************/\r\nimport { SocketService }\t\tfrom './services/socket.service';\r\nimport { SocketVaultService }\tfrom './services/socketVault.service';\r\nimport { EtablissementService } from './services/etablissement.service';\r\nimport { SujetService }\t\t\tfrom './services/sujet.service';\r\nimport { FileService }\t\t\tfrom './services/file.service';\r\nimport { PassationService }\t\tfrom './services/passation.service';\r\nimport { CandidatService }\t\tfrom './services/candidat.service';\r\nimport { MessagesService }\t\tfrom './services/messages.service';\r\nimport { StatisticsService }\tfrom './services/statistics.service';\r\nimport { AuthService }\t\t\tfrom './services/auth.service';\r\nimport { UserService }\t\t\tfrom './services/user.service';\r\nimport { TaskService }\t\t\tfrom './services/task.service';\r\nimport { EncryptService }\t\tfrom './services/encrypt.service';\r\nimport { CreationHttpService }\tfrom './services/http/creationHttp.service';\r\n\r\n// ---------------------------------------\r\n// Modals\r\n// ---------------------------------------\r\nimport { ConnectApplicationModalComponent } \tfrom './modal/connect/connectApplication.component';\r\nimport { ConnectOTPModalComponent }\t\t\t\tfrom './modal/connectOTP/connectOTPModal.component';\r\nimport { ConfirmDeleteElementModalComponent } \tfrom './modal/confirmDeleteElement/confirmDeleteElementModal.component';\r\nimport { InfoResetRsaModalComponent } \t\t\tfrom './modal/infoResetRsa/infoResetRsaModal.component';\r\nimport { DownloadRsaModalComponent } \t\t\tfrom './modal/downloadRsa/downloadRsaModal.component';\r\nimport { ConnectNewMachineModalComponent }\t\tfrom './modal/connectNewMachine/connectNewMachineModal.component';\r\nimport { ResetPasswordModalComponent }\t\t\tfrom './modal/resetPassword/resetPasswordModal.component';\r\nimport { WarningAddBlockerEnabledComponent }\tfrom './modal/warningAddBlockerEnabled/warningAddBlockerEnabledModal.component';\r\nimport { WarningRsaModalComponent }\t\t\t\tfrom './modal/warningRsa/warningRsaModal.component';\r\nimport { SelectAccountModalComponent }\t\t\tfrom './modal/selectAccount/selectAccountModal.component';\r\nimport { ISocketData, SocketWhat }\t\t\t\tfrom './models/message.model';\r\nimport { UserModalComponent }\t\t\t\t\tfrom './modal/user/userModal.component';\r\nimport { InfoInitAccountModalComponent }\t\tfrom './modal/infosInitAccount/infosInitAccountModal.component';\r\n\r\nimport {MatSnackBar} from '@angular/material';\r\n\r\n\r\nimport\r\n{\r\n\tMAT_MOMENT_DATE_FORMATS,\r\n\tMomentDateAdapter,\r\n\tMAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n } from '@angular/material-moment-adapter';\r\n import * as moment from \"moment\";\r\n\r\n import {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';\r\n\r\nimport { MyDateAdapter } from './classes/dateAdapter';\r\n\r\nimport * as _ from 'underscore';\r\nimport * as $ from 'jquery';\r\nimport { timingSafeEqual } from 'crypto';\r\ndeclare var loading_screen: any;\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {NativeDateAdapter} from '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'app',\r\n\tstyleUrls:\t\t['./app.component.scss'],\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\ttemplateUrl:\t'./app.component.html',\r\n providers: [\r\n // The locale would typically be provided on the root module of your application. We do it at\r\n // the component level here, due to limitations of our example generation script.\r\n {provide: MAT_DATE_LOCALE, useValue: 'fr-FR'},\r\n\r\n // `MomentDateAdapter` and `MAT_MOMENT_DATE_FORMATS` can be automatically provided by importing\r\n // `MatMomentDateModule` in your applications root module. We provide it at the component level\r\n // here, due to limitations of our example generation script.\r\n {\r\n provide: DateAdapter,\r\n useClass: MyDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]\r\n },\r\n {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS},\r\n ],\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class AppComponent implements OnChanges, OnInit, OnDestroy\r\n{\r\n\t@ViewChild('sidenav') sidenav: MatSidenav;\r\n\tpages: Array<{ title: string, url: string }>;\r\n\r\n\tpublic canAccessChat:\t\tboolean = false;\r\n\tpublic haveChatData:\t\tboolean = false;\r\n\tpublic showMenu:\t\t\tboolean = false;\r\n\tpublic isConnected:\t\t\tboolean = false;\r\n\tpublic inLoginPanel:\t\tboolean = false;\r\n\tpublic inCreationPart:\t\tboolean = false;\r\n\tpublic timedOut:\t\t\tboolean = false;\r\n\tpublic showBoxForum:\t\tboolean = false;\r\n\tpublic showBoxChat:\t\t\tboolean = false;\r\n\tpublic workspaceLoading:\tboolean = false;\r\n\tpublic showBoxNotification: boolean = false;\r\n\r\n\tpublic socket:\t\t\t\t\tany = null;\r\n\tpublic dialogRef:\t\t\t\tany = null;\r\n\tpublic currentStateApplication: any = {};\r\n\r\n\tpublic currentLogin:\t\tstring = '';\r\n\tpublic pageTitle:\t\t\tstring = 'Accueil';\r\n\tpublic angularclassLogo:\tstring = 'assets/img/angularclass-avatar.png';\r\n\tpublic idleState:\t\t\tstring = 'Not started.';\r\n\tpublic firstLetterIcone:\tstring = '';\r\n\r\n\r\n\tpublic lastPing?:\tDate\t= null;\r\n\tpublic maHomeRooms:\tany\t\t= [];\r\n\tpublic currentName:\tany\t\t= '';\r\n\r\n\tpublic homeInfosEmitter: EventEmitter = new EventEmitter();\r\n\r\n\tpublic isCreationSelected:\tboolean\t= true;\r\n\tpublic isPassationSelected: boolean = false;\r\n\tpublic isResultatSelected:\t\tboolean\t= false;\r\n\tpublic isCheckingRSAKey:\t\tboolean = false;\r\n\tpublic isConfigInitiated: \t\tboolean = false;\r\n\tpublic dialogRefSelectAccount: \tany \t= undefined;\r\n//\tprivate notifier: NotifierService;\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(\r\n\t\tpublic translate: \t\t\t\tTranslateService,\r\n\t\tpublic appState:\t\t\t\tAppState,\r\n\t\tpublic userData:\t\t\t\tUserData,\r\n\t\tpublic baremeData:\t\t\t\tBaremeData,\r\n\t\tpublic workspaceData:\t\t\tWorkspaceData,\r\n\t\tpublic fileData:\t\t\tFileData,\r\n\t\tpublic chatData:\t\t\t\tChatData,\r\n\t\tpublic taskData:\t\t\t\tTaskData,\r\n\t\tpublic adminData:\t\t\t\tAdminData,\r\n\t\tpublic vaultData:\t\t\t\tVaultData,\r\n\t\tpublic router:\t\t\t\t\tRouter,\r\n\t\tpublic route:\t\t\t\t\tActivatedRoute,\r\n\t\tpublic dialog:\t\t\t\t\tMatDialog,\r\n\t\tpublic footerComponent:\t\t\tFooterComponent,\r\n\t\tpublic authService:\t\t\t\tAuthService,\r\n\t\tpublic userService:\t\t\t\tUserService,\r\n\t\tpublic socketService:\t\t\tSocketService,\r\n\t\tpublic socketVaultService:\t\tSocketVaultService,\r\n\t\tpublic etablissementService:\tEtablissementService,\r\n\t\tpublic sujetService:\t\t\tSujetService,\r\n\t\tpublic messagesService:\t\t\tMessagesService,\r\n\t\tpublic taskService:\t\t\t\tTaskService,\r\n\t\tpublic statisticsService:\t\tStatisticsService,\r\n\t\tpublic encryptService:\t\t\tEncryptService,\r\n\t\tpublic savedData:\t\t\t\tSavedData,\r\n\t\tpublic fileService:\t\t\t\tFileService,\r\n\t\tpublic passationService:\t\tPassationService,\r\n\t\tpublic candidatService:\t\t\tCandidatService,\r\n\t\tprivate _location:\t\t\t\tLocation,\r\n\t\tprivate location:\t\t\t\tPlatformLocation,\r\n\t\tpublic snackBar:\t\t\t\tMatSnackBar,\r\n\t\tpublic http:\t\t\t\t\tHttp,\r\n\t\tprivate _adapter: \t\t\t\tDateAdapter)\r\n\t{\r\n\t\t\tthis.translate.setDefaultLang('fr');\r\n\t\t\tthis.translate.use('fr');\r\n\t\t\tthis._adapter.setLocale('fr');\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Code pour déterminer si l'user est afk\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// sets an idle timeout of 30 seconds, for testing purposes.\r\n\t\t\t// idle.setIdle(30);\r\n\t\t\t// sets a timeout period of 30 seconds. after x seconds of inactivity, the user will be considered timed out.\r\n\t\t\t// dle.setTimeout(30);\r\n\t\t\t// sets the default interrupts, in this case, things like clicks, scrolls, touches to the document\r\n\t\t\t// idle.setInterrupts(DEFAULT_INTERRUPTSOURCES);\r\n\t\t\t//\r\n\t\t\t// On désactive par défault le drop sur toute l'application\r\n\t\t\t// $(document).bind('drop dragover', function (e) { e.preventDefault(); });\r\n\t\t\t//\r\n\t\t\t// idle.onIdleEnd.subscribe(() => this.idleState = 'No longer idle.');\r\n\t\t\t// idle.onTimeout.subscribe(() =>\r\n\t\t\t// {\r\n\t\t\t// \t\tthis.idleState = 'Timed out!';\r\n\t\t\t//\t\tthis.timedOut = true;\r\n\t\t\t// });\r\n\t\t\t//\r\n\t\t\t// idle.onIdleStart.subscribe(() => this.idleState = 'You\\'ve gone idle!');\r\n\t\t\t// idle.onTimeoutWarning.subscribe((countdown) => this.idleState = 'You will time out in ' + countdown + ' seconds!');\r\n\t\t\t//\r\n\t\t\t// sets the ping interval to 15 seconds\r\n\t\t\t// keepalive.interval(15);\r\n\t\t\t// keepalive.onPing.subscribe(() => this.lastPing = new Date());\r\n\t\t\t//\r\n\t\t\t// this.reset();\r\n\r\n\r\n\t\t\t// Vérification du compte de l'user => si non loggué => loginmatMenuTriggerFor\r\n\t\t\t// Si logué => home page, ou le controller de l'appli\r\n\t\t\tthis.pages = [\r\n\t\t\t\t{ title: 'Accueil',\t\turl: '/' },\r\n\t\t\t\t{ title: 'Workspace',\turl: 'workspace' },\r\n\t\t\t\t{ title: 'Communauté',\turl: 'community' },\r\n\t\t\t\t{ title: 'Tâches',\t\turl: 'task' },\r\n\t\t\t\t{ title: 'Account',\t\turl: 'login' }\r\n\t\t\t];\r\n\r\n\t\t\tthis.currentStateApplication = this.userData.getStateApplication();\r\n\t\t// this._checkAddBlocker();\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Gestion des chargements des routes !\r\n\t\t\t// ---------------------------------------\r\n\t\t\trouter.events.subscribe((val) =>\r\n\t\t\t{\r\n\t\t\t\tthis.initConfigs().then(res =>\r\n\t\t\t\t{\r\n\t\t\t\t\t// Tant que AddBlock est activé on demande à l'utilisateur de la désactiver\r\n\t\t\t\t\tthis.userData.setStateApplication('application', 'pending');\r\n\r\n\t\t\t\t\tif (val instanceof NavigationStart)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// Affichage du loader quand on charge le workspace\r\n\t\t\t\t\t\tif (val.url === '/workspace')\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.workspaceLoading = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Masque le loader quand le workspace est loaded\r\n\t\t\t\t\tif (val instanceof NavigationEnd)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (val.url === '/workspace')\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.workspaceLoading = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// this._checkAddBlocker();\r\n\r\n\t\t\t\t\t\tthis.inLoginPanel = val && (val.url === '/login' || val.url === '/');\r\n\t\t\t\t\t\t// see also\r\n\r\n\t\t\t\t\t\t// Si on n'est pas dans la fenêtre de login est que l'on n'est pas connecté entièrement (validation mail, machine, otp)\r\n\t\t\t\t\t\t// on est redirigé vers la fenètre de login\r\n\r\n\t\t\t\t\t\t// If we are in the login panel, we don't show the header and the footer menus\r\n\t\t\t\t\t\tthis.inCreationPart = val.url !== '/passation' && val.url !== '/result';\r\n\t\t\t\t\t\tthis.showMenu = !this.inLoginPanel && !this.inCreationPart;\r\n\r\n\t\t\t\t\t\tif (!this.inLoginPanel)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (this.userData.mustReset === true || this.userData.otpAuth === true || this.userData.mustValidateBrowser === true)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// Si on est pas dans le login et que des validations ne sont pas faite on est redirigé vers le login\r\n\t\t\t\t\t\t\t\tthis.userData.logout();\r\n\t\t\t\t\t\t\t\tthis.socketService.logout();\r\n\t\t\t\t\t\t\t\tthis.socketVaultService.logout();\r\n\t\t\t\t\t\t\t\tthis.taskData.initTasks();\r\n\t\t\t\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\t\t\t\tthis.isConnected = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet isConnected = this._checkConnection();\r\n\t\t\t\t\t\t\t\tif (isConnected === true)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.isConnected = true;\r\n\r\n\t\t\t\t\t\t\t\t\tif (this.inLoginPanel)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.router.navigate(['/home']);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.isConnected = false;\r\n\r\n\t\t\t\t\t\t\t\t\tif (this.userData.getUserId())\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.openModalConnectApplication((result) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tthis.userData.dialogRefModalConnection = null;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (result === false)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (this.userData.mustReset === false && this.userData.otpAuth === false && this.userData.mustValidateBrowser === false)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet isConnected = this._checkConnection();\r\n\t\t\t\t\t\t\t\tif (isConnected === true)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.isConnected = true;\r\n\t\t\t\t\t\t\t\t\tthis.router.navigate(['/home']);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.isConnected = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}).catch(err =>\r\n\t\t\t\t{\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis.location.onPopState(() =>\r\n\t\t\t{\r\n\t\t\t});\r\n\t\t\t// this.disableBrowserNavigation();\r\n\t}\r\n\r\n/*\t@HostListener('window:beforeunload', ['$event'])\r\n\tbeforeunloadHandler(event: any)\r\n\t{\r\n\t\tevent.returnValue = \"?\";\r\n\t}\r\n*/\r\n\tbackClicked()\r\n\t{\r\n\t\tthis._location.back();\r\n\t}\r\n\r\n\tngOnDestroy()\r\n\t{\r\n\t\tthis.userData.globalEmitter.unsubscribe();\r\n\t\t/*\tthis.userData.logout();\r\n\t\tthis.socketService.logout();\r\n\t\tthis.socketVaultService.logout();\r\n\t\t*/\r\n\t}\r\n\r\n\r\n\tpublic showNotification(psMessage: string, psType: string= 'success'): void\r\n\t{\r\n\t\tthis.userData.notifEmitter.emit([psType, psMessage]);\r\n\r\n\t}\r\n\r\n\r\n\t/****************************************\r\n\t * Interface Page\r\n\t****************************************/\r\n\t/**\r\n\t * Setter pour le titre de page\r\n\t */\r\n\tpublic setPageTitle(title: string): void\r\n\t{\r\n\t\tthis.pageTitle = title;\r\n\t}\r\n\r\n\r\n\tpublic changeSelected(psName: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// En fonction on va ouvrir le bon formulaire\r\n\t\t// ---------------------------------------\r\n\t\tthis.isCreationSelected\t\t= false;\r\n\t\tthis.isPassationSelected\t= false;\r\n\t\tthis.isResultatSelected\t\t= false;\r\n\t\tthis.showMenu\t\t\t\t= true;\r\n\r\n\t\tswitch (psName)\r\n\t\t{\r\n\t\t\tcase 'creation':\r\n\t\t\t\tthis.isCreationSelected = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'passation':\r\n\t\t\t\tthis.isPassationSelected\t= true;\r\n\t\t\t\tthis.showMenu\t\t\t\t= false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'result':\r\n\t\t\t\tthis.isResultatSelected = true;\r\n\t\t\t\tthis.showMenu\t\t\t= false;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic ngOnChanges()\r\n\t{\r\n\t}\r\n\r\n\r\n\tpublic closeBox(psTitle = '', poEvent: any = null)\r\n\t{\r\n\t\tif (poEvent.target.id === 'commons_header_right_action_forum' || poEvent.target.id === 'commons_header_right_action_chat' || poEvent.target.id === 'commons_header_right_action_notification')\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Switch pour afficher la bonne\r\n\t\tswitch (psTitle)\r\n\t\t{\r\n\t\t\tcase 'forum':\r\n\t\t\t\tthis.showBoxForum = false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'chat':\r\n\t\t\t\tthis.showBoxChat = false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'notification':\r\n\t\t\t\tthis.showBoxNotification = false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tthis.showBoxChat\t\t\t= false;\r\n\t\t\t\tthis.showBoxForum\t\t\t= false;\r\n\t\t\t\tthis.showBoxNotification\t= false;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.userData.globalEmitter.subscribe((value: any) =>\r\n\t\t{\r\n\t\t\tif (value.length && value.length === 3 && value[0] === 'RSA:validate')\r\n\t\t\t{\r\n\t\t\t\tlet currentRsaKey = this.userData.getRSAPrivate();\r\n\r\n\t\t\t\tif (this.isCheckingRSAKey === true && currentRsaKey)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.isCheckingRSAKey \t= false;\r\n\t\t\t\t\tlet dataEncoded\t\t\t= value[1];\r\n\t\t\t\t\tlet dataToValidate \t\t= value[2];\r\n\r\n\t\t\t\t\tthis.encryptService.decryptData(dataEncoded, currentRsaKey).then((decoded: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (dataToValidate === decoded)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis._otpAuthentification();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// On affiche un message d'érreur\r\n\t\t\t\t\t\t\tthis.userData.deleteRSAPrivate();\r\n\t\t\t\t\t\t\tlet dialogRefWarningRsa = this.dialog.open(WarningRsaModalComponent,\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\theight:\t\t\t'210px',\r\n\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_mini_modal',\r\n\t\t\t\t\t\t\t\t\twidth:\t\t\t'600px',\r\n\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttypeWarning: 2\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tdisableClose: true\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tdialogRefWarningRsa.afterClosed().subscribe((resultWarning: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis._otpAuthentification();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}).catch((err: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// On affiche un message d'érreur\r\n\t\t\t\t\t\tthis.userData.deleteRSAPrivate();\r\n\t\t\t\t\t\tlet dialogRefWarningRsa = this.dialog.open(WarningRsaModalComponent,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\theight:\t\t\t'210px',\r\n\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_mini_modal',\r\n\t\t\t\t\t\t\t\t\twidth:\t\t\t'600px',\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttypeWarning: 2\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tdisableClose:\ttrue\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tdialogRefWarningRsa.afterClosed().subscribe((resultWarning: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis._otpAuthentification();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.setListenerAuthenticate();\r\n\r\n\t\tloading_screen.finish();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Applique tt les listener globaux de l'application\r\n\t */\r\n\tpublic setListenerAuthenticate()\r\n\t{\r\n\t\t// Ecouteur pour l'authentification, Une fois que lui est bon on set tt le reste\r\n\t\tthis.socketService.on('authenticate',\t\tthis.onAuth.bind(this));\r\n\t\tthis.socketService.on('authTokenChange',\tthis.updateToken.bind(this));\r\n\r\n\t\tthis.socketService.on('authStateChange',\tthis.authStateChange.bind(this));\r\n\t\tthis.socketService.on('error',\t\t\t\tthis.onErrorServer.bind(this));\r\n\t\tthis.socketService.on('deauthenticate',\t\tthis.onDisconnect.bind(this));\r\n\r\n\t\t// Ecouteurs\r\n\t\tthis.socketService.on('read',\t\t\t\tthis.dataReceivedRead.bind(this));\r\n\t\tthis.socketService.on('error',\t\t\t\tthis.dataReceivedError.bind(this));\r\n\t\tthis.socketService.on('debug',\t\t\t\tthis.dataReceivedDebug.bind(this));\r\n\t\tthis.socketService.on('create',\t\t\t\tthis.dataReceivedCreate.bind(this));\r\n\t\tthis.socketService.on('update',\t\t\t\tthis.dataReceivedUpdate.bind(this));\r\n\t\tthis.socketService.on('delete',\t\t\t\tthis.dataReceivedDelete.bind(this));\r\n\t\tthis.socketService.on('accountUpdates', \tthis.dataReceivedAccountUpdates.bind(this));\r\n\t\tthis.socketService.on('user',\t\t\t\tthis.dataReceivedUser.bind(this));\r\n\t\tthis.socketService.on('message_creation',\tthis.dataReceivedMessage.bind(this));\r\n\t\tthis.socketService.on('machine',\t\t\tthis.fileReceived.bind(this));\r\n\t}\r\n\r\n\t/**\r\n\t * Après l'ajout d'un fichier, ajoute ce dernier après retour serveur\r\n\t * @param datas \r\n\t */\r\n\tpublic fileReceived(datas: any)\r\n\t{\r\n\t\tif (datas.cmd && datas.cmd === 'file')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.resultFinal && datas.args.resultFinal.id && datas.args.resultFinal.file)\r\n\t\t\t{\r\n\t\t\t\tconst fileAdded = FileSubject.fromJsonObject(datas.args.resultFinal.file);\r\n\r\n\t\t\t\tif (datas.args.resultFinal.encodedRsaKey)\r\n\t\t\t\t{\r\n\t\t\t\t\tfileAdded.encryptedAesKeys.push(datas.args.resultFinal.encodedRsaKey);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Si le fichier appartient au sujet courant on met ce dernier à jour sinon on recherche le sujet concerné\r\n\t\t\t\tlet subjectToUpdate: any;\r\n\r\n\t\t\t\tif (this.workspaceData.selectedSujet && this.workspaceData.selectedSujet.id === fileAdded.idSubject)\r\n\t\t\t\t{\r\n\t\t\t\t\tsubjectToUpdate = this.workspaceData.selectedSujet;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tsubjectToUpdate = this.workspaceData.getSujet(fileAdded.idSubject);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (subjectToUpdate)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet fileIndex = -1;\r\n\r\n\t\t\t\t\tif (subjectToUpdate.pj)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfileIndex = _.findIndex(subjectToUpdate.pj, (pj: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn pj.id === datas.args.resultFinal.id;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (fileIndex !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (subjectToUpdate.pj[fileIndex].thumbs.length === 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.fileService.downloadThumbnail(fileAdded).subscribe((res) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (res && res.url)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfileAdded.errorThumb = false;\r\n\t\t\t\t\t\t\t\t\tfileAdded.thumbs.push(res);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tsubjectToUpdate.pj[fileIndex] = fileAdded;\r\n\t\t\t\t\t\t\tthis.workspaceData.globalEmitter2.emit(subjectToUpdate.id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsubjectToUpdate.pj[fileIndex] = fileAdded;\r\n\t\t\t\t\t\t\tthis.workspaceData.globalEmitter2.emit(subjectToUpdate.id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// Si le fichier n'existap as déja on l'ajoute\r\n\t\t\t\t\t\tsubjectToUpdate.pj.push(fileAdded);\r\n\t\t\t\t\t\tthis.workspaceData.globalEmitter2.emit(subjectToUpdate.id);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Si le fichier contient des fichiers attachés, on les mets à jour\r\n\t\t\t\t\tif (datas.args.resultFinal.attachedFiles)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (const attachedFile of datas.args.resultFinal.attachedFiles)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst fileIndexAttached = _.findIndex(subjectToUpdate.pj, (pj: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn pj.id === attachedFile.uuid;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif (fileIndexAttached !== -1 && subjectToUpdate.pj[fileIndexAttached])\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst reference = '*referencedBy::' + fileAdded.id;\r\n\t\t\t\t\t\t\t\tif (subjectToUpdate.pj[fileIndexAttached].tags)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst indexReference = subjectToUpdate.pj[fileIndexAttached].tags.indexOf(reference);\r\n\r\n\t\t\t\t\t\t\t\t\tif (indexReference === -1)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tsubjectToUpdate.pj[fileIndexAttached].tags.push(reference);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Si des fichiers attachés ont été supprimés alors on supprime les références\r\n\t\t\t\t\tif (datas.args.resultFinal.removedAttachedFiles)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (const attachedFileToRemove of datas.args.resultFinal.removedAttachedFiles)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst fileIndexToRemove = _.findIndex(subjectToUpdate.pj, (pj: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn pj.id === attachedFileToRemove.uuid;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif (fileIndexToRemove !== -1 && subjectToUpdate.pj[fileIndexToRemove])\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tconst reference = '*referencedBy::' + fileAdded.id;\r\n\r\n\t\t\t\t\t\t\t\tsubjectToUpdate.pj[fileIndexToRemove].tags = subjectToUpdate.pj[fileIndexToRemove].tags.filter((tag: any) => tag !== reference);\r\n\t\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.fileData.synchronize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd && datas.cmd === 'filePreview')\r\n\t\t{\r\n\t\t\tif (datas.args\r\n\t\t\t\t&& datas.args.id)\r\n\t\t\t{\r\n\t\t\t\tthis.fileService.downloadContentFileFromId(datas.args.id).subscribe((res) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.globalEmitter2.emit(['previewGenerated', res]);\r\n\t\t\t\t\tthis.fileService.deleteFromId(datas.args.id).subscribe((resDelete) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.globalEmitter2.emit(['previewGenerated', null]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd && datas.cmd === 'fileConvert')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.resultFinal && datas.args.resultFinal.id && datas.args.resultFinal.oldName && datas.args.resultFinal.file)\r\n\t\t\t{\r\n\t\t\t\tconst fileAdded = FileSubject.fromJsonObject(datas.args.resultFinal.file);\r\n\r\n\t\t\t\tif (datas.args.resultFinal.encodedRsaKey)\r\n\t\t\t\t{\r\n\t\t\t\t\tfileAdded.encryptedAesKeys.push(datas.args.resultFinal.encodedRsaKey);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.workspaceData.selectedSujet.pj.push(fileAdded);\r\n\t\t\t\tthis.workspaceData.globalEmitter2.emit(this.workspaceData.selectedSujet.id);\r\n\r\n\t\t\t\tthis.userData.notifEmitter.emit(['success', 'Conversion du fichier ' + datas.args.resultFinal.oldName + ' vers ' + fileAdded.name + ' réussie.']);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic updateToken(token: any)\r\n\t{\r\n\t\tif (token)\r\n\t\t{\r\n\r\n\t\t\tthis.userData.connected\t\t= true;\r\n\t\t\tlet splitToken: string[]\t= token.split('.');\r\n\r\n\t\t\tlet base64js = JSON.parse(window.atob(splitToken[1]));\r\n\t\t\tthis.userData.login(base64js.idSN, token, base64js.idUser);\r\n\r\n\t\t\tthis.userData.mail\t\t= base64js.idUser;\r\n\t\t\tthis.userData.accounts\t= base64js.accounts;\r\n\t\t\tthis.userData.account\t= base64js.acc;\r\n\r\n\t\t\tlet mustReset = false;\r\n\t\t\tif (base64js.reset !== undefined)\r\n\t\t\t{\r\n\t\t\t\tmustReset = base64js.reset === true || base64js.reset === 'true';\r\n\t\t\t}\r\n\t\t\tthis.userData.mustReset = mustReset;\r\n\t\t\tif (base64js.lm && base64js.lmd !== undefined)\r\n\t\t\t{\r\n\t\t\t\tthis.userData.methodAuth\t= Number(base64js.lm);\r\n\t\t\t\tthis.userData.otpAuth\t\t= !base64js.lmd;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.userData.otpAuth = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.userData.setFingerPrint(base64js.fp);\r\n\t\t\tthis.userData.setTokenKey(token);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Une fois authentifié on va récupérer les infos pour construire l'appli\r\n\t */\r\n\tpublic onAuth(datas: any)\r\n\t{\r\n\t\tif (datas)\r\n\t\t{\r\n\t\t\tlet splitToken: string[]\t= datas.split('.');\r\n\t\t\tthis.userData.connected\t\t= true;\r\n\t\t\tthis.canAccessChat\t\t\t= true;\r\n\r\n\t\t\tif (splitToken.length > 2)\r\n\t\t\t{\r\n\t\t\t\tthis.updateToken(datas);\r\n\r\n\t\t\t\tif (this.isConnected === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.isConnected = true;\r\n\r\n\t\t\t\t\tthis._checkSelectAccount().then(res =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (res === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.dialogRefSelectAccount = undefined;\r\n\r\n\t\t\t\t\t\t\t// Si l'utilisateur doit réinitialiser son mot de passe une modale s'affiche\r\n\t\t\t\t\t\t\t// afin qu'il en selectionne un nouveau, sinon il se connecte normalement\r\n\t\t\t\t\t\t\tthis._checkResetPassword().then(res =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.userService.checkFingerPrintUser();\r\n\r\n\t\t\t\t\t\t\t}).catch(err =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.userData.logout();\r\n\t\t\t\t\t\t\t\tthis.socketService.logout();\r\n\t\t\t\t\t\t\t\tthis.socketVaultService.logout();\r\n\t\t\t\t\t\t\t\tthis.taskData.initTasks();\r\n\t\t\t\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\t\t\t\tthis.isConnected = false; \r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}).catch(err =>\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tthis.dialogRefSelectAccount = undefined;\r\n\r\n\t\t\t\t\t\tthis.userData.logout();\r\n\t\t\t\t\t\tthis.socketService.logout();\r\n\t\t\t\t\t\tthis.socketVaultService.logout();\r\n\t\t\t\t\t\tthis.taskData.initTasks();\r\n\t\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\t\tthis.isConnected = false;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Vérification et initialisation coté serveur du compte selectionné\r\n\t */\r\n\tprivate _checkSelectAccount(): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tif (this.userData.isAccountSelected === false && this.userData.accounts && this.userData.accounts.length > 1)\r\n\t\t\t{\r\n\t\t\t\tif (this.dialogRefSelectAccount === undefined)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.dialogRefSelectAccount = this.dialog.open(SelectAccountModalComponent,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theight: \t'30%',\r\n\t\t\t\t\t\twidth: \t\t'40%',\r\n\t\t\t\t\t\tpanelClass: 'responsive_modal',\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taccounts: this.userData.accounts\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tdisableClose: true\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// A la fermeture de la box\r\n\t\t\t\t\tthis.dialogRefSelectAccount.afterClosed().subscribe((resultAccount: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.dialogRefSelectAccount = undefined;\r\n\r\n\t\t\t\t\t\tif (resultAccount === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treject();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.isAccountSelected = true;\r\n\t\t\t\t\t\t\tresolve(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tresolve(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tresolve(true);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _checkResetPassword(): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tif (this.userData.mustReset === true)\r\n\t\t\t{\r\n\t\t\t\tlet dialogRefPasswordReset = this.dialog.open(ResetPasswordModalComponent,\r\n\t\t\t\t{\r\n\t\t\t\t\theight: '50%',\r\n\t\t\t\t\twidth: '60%',\r\n\t\t\t\t\tpanelClass: 'responsive_modal',\r\n\t\t\t\t\tdata:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: 'resetForTemporary'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdisableClose: true\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// A la fermeture de la box\r\n\t\t\t\tdialogRefPasswordReset.afterClosed().subscribe((resultReset: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (resultReset && resultReset === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.mustReset = false;\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treject();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _otpAuthentification()\r\n\t{\r\n\t\tif (this.userData.otpAuth === true)\r\n\t\t{\r\n\t\t\tlet dialogRefOtp = this.dialog.open(ConnectOTPModalComponent,\r\n\t\t\t\t{\r\n\t\t\t\t\theight:\t\t\t'50%',\r\n\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\twidth:\t\t\t'60%',\r\n\t\t\t\t\tdata:\t\t\t{},\r\n\t\t\t\t\tdisableClose:\ttrue\r\n\t\t\t\t});\r\n\r\n\t\t\tdialogRefOtp.afterClosed().subscribe((result: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (result && result === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.otpAuth = false;\r\n\t\t\t\t\tthis._initializeClientDatas();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.logout();\r\n\t\t\t\t\tthis.socketService.logout();\r\n\t\t\t\t\tthis.socketVaultService.logout();\r\n\t\t\t\t\tthis.taskData.initTasks();\r\n\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\tthis.isConnected = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._initializeClientDatas();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _initializeClientDatas()\r\n\t{\r\n\t\tlet sUserId\t\t\t\t= this.userData.getUserId();\r\n\t\tthis.currentName\t\t= this.userData.firstName + ' ' + this.userData.lastName;\r\n\r\n\t\t// Récupération des lettres pour l'icone perso\r\n\t\tthis.firstLetterIcone\t= '';\r\n\t\tthis.firstLetterIcone\t+= this.userData.firstName.charAt(0);\r\n\t\tthis.firstLetterIcone\t+= this.userData.lastName.charAt(0);\r\n\r\n\t\tthis.currentLogin\t\t= this.userData.mail;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération de la liste des rooms dispo\r\n\t\t// ---------------------------------------\r\n\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\r\n\t\t// Demande de la liste des utilisateurs, un écouteur est placé,\r\n\t\t// lorsque la réponse arrive la modal s'ouvre automatiquement\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t'cmd': 'user',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tbdata:\ttrue,\r\n\t\t\t\t\t\t\t\tbstate: true,\r\n\t\t\t\t\t\t\t\ttoken:\tthis.userData.getTokenKey()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t'cmd':\t'rooms',\r\n\t\t\t\t\t\t'args': { mail: '' }\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t'ressources',\r\n\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.taskService.getTasksAvailable();\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération des notification\r\n\t\t// ---------------------------------------\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t'cmd':\t'notification',\r\n\t\t\t\t\t\t'args': { 'days': '3' }\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération des calendar\r\n\t\t// ---------------------------------------\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t'cmd':\t'calendar',\r\n\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Param (principalement ici c'est pr le workflow\r\n\t\t// ---------------------------------------\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t'adminParameters',\r\n\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet isConnected = this._checkConnection();\r\n\t\tif (isConnected === true && this.inLoginPanel)\r\n\t\t{\r\n\t\t\tthis.isConnected = true;\r\n\t\t\tthis.router.navigate(['/home']);\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// récupération des barèmes\r\n\t\t// ---------------------------------------\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t'allBaremes',\r\n\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic authStateChange(test: any)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * L'application est déconnectée, on affiche la pop-up de reconnection\r\n\t * Si la reconnection fonctionne, alors on fait un refresh sur la page courante\r\n\t */\r\n\tpublic onErrorServer()\r\n\t{\r\n\t\tif (this.userData.connected)\r\n\t\t{\r\n\t\t\tthis.userData.connected = false;\r\n\t\t\tthis.isConnected\t\t= false;\r\n\r\n\t\t\tsetTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tif (this.userData.connected === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.router.url !== '/' && this.router.url !== '/login')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.openModalConnectApplication((result) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.dialogRefModalConnection = null;\r\n\r\n\t\t\t\t\t\t\tif (result === true)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.router.navigate([this.router.url]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}, 40000);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * L'application est déconnectée, on affiche la pop-up de reconnection\r\n\t * Si la reconnection fonctionne, alors on fait un refresh sur la page courante\r\n\t */\r\n\tpublic onDisconnect()\r\n\t{\r\n\t\tif (this.userData.connected)\r\n\t\t{\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (!socket || !socket.state || socket.state !== SCClientSocket.OPEN)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.connected = false;\r\n\t\t\t\t\tthis.userData.logout();\r\n\t\t\t\t\tthis.workspaceData.logout();\r\n\t\t\t\t\tthis.vaultData.logout();\r\n\t\t\t\t\tthis.taskData.initTasks();\r\n\t\t\t\t\tthis.isConnected = false;\r\n\t\t\t\t\tAuthService.stopGestionRooms();\r\n\t\t\t\t\tthis.socketService.offMachine();\r\n\t\t\t\t\tthis.socketService.init();\r\n\r\n\r\n\t\t\t\t\tif (this.router.url !== '/' && this.router.url !== '/login')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.openModalConnectApplication((result) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.dialogRefModalConnection = null;\r\n\t\t\t\t\t\t\tif (result === true)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.router.navigate([this.router.url]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic setUsersByRoomId()\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Appelé a la reception d'un new message alors que l'user est connecté\r\n\t */\r\n\tpublic newMessageReceived(id: any, data: any)\r\n\t{\r\n\t\tif (data.cmd === 'msg.ack')\r\n\t\t{\r\n\t\t\tlet keyRoom\t\t= data.args.key;\r\n\t\t\tlet userIdRead\t= data.args.userName;\r\n\t\t\tlet ticks\t\t= data.args.ackTo;\r\n\r\n\r\n\t\t\tif (userIdRead === this.userData.getUserId())\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.setLastMessageReceivedByMeByRoom(keyRoom, ticks)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.setLastMessageReceivedByHimByRoom(keyRoom, ticks)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Mettre en place le readed\r\n\t\t// ---------------------------------------\r\n\t\tif (data.cmd === 'msg')\r\n\t\t{\r\n\t\t\tlet keyRoom = id.split('::');\r\n\t\t\tthis.userData.globalEmitter.emit(['chat::newMessage', data]);\r\n\r\n\t\t\tif (data.name && data.name !== this.userData.getUserId())\r\n\t\t\t{\r\n\t\t\t\tlet arrayKey\t\t= [];\r\n\t\t\t\tlet arrayMessage\t= _.toArray(data.args.messages);\r\n\r\n\t\t\t\tfor (const key in data.args.messages)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (data.args.messages[key])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tarrayKey.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t// Boucle seulement sur les messages reçu\r\n\t\t\t\tfor (let item of arrayMessage)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t\t'cmd': 'msg.ack',\r\n\t\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tbucket:\t\t'rooms',\r\n\t\t\t\t\t\t\t\t\t\t\tnotifier:\t[id],\r\n\t\t\t\t\t\t\t\t\t\t\tkey:\t\tkeyRoom[1],\r\n\t\t\t\t\t\t\t\t\t\t\tsub:\t\t'M',\r\n\t\t\t\t\t\t\t\t\t\t\twhen:\t\titem.id\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tsocket.emit('update', data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst user = this.userData.getUser(data.name);\r\n\r\n\t\t\t\tlet nomPrenom = '';\r\n\r\n\t\t\t\tif (user && user.infos && user.infos.nom && user.infos.prenom)\r\n\t\t\t\t{\r\n\t\t\t\t\tnomPrenom = ' de ' + user.infos.prenom + ' ' + user.infos.nom;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.showNotification('Nouveau Message', nomPrenom);\r\n\t\t\t\tthis.chatData.incrementCounterByRoom(keyRoom[1]);\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'msg.read')\r\n\t\t{\r\n\r\n\t\t\tlet keyRoom\t\t= data.args.key;\r\n\t\t\tlet userIdRead\t= data.args.userName;\r\n\t\t\tlet ticks\t\t= data.args.rTo;\r\n\r\n\r\n\t\t\tif (userIdRead === this.userData.getUserId())\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.setCounterByRoom(keyRoom, 0);\r\n\t\t\t\tthis.chatData.setLastMessageReadedByMeByRoom(keyRoom, ticks)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.setLastMessageReadedByHimByRoom(keyRoom, ticks)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'room.delete')\r\n\t\t{\r\n\t\t\tconst elementsRoom = id.split('::');\r\n\t\t\tif (elementsRoom.length === 3 && elementsRoom[2] === 'priv')\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.deleteRoom(elementsRoom[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Récupération des datas\r\n\t */\r\n\tpublic dataReceivedRead(data: any)\r\n\t{\r\n\t\t// les noeuds (info de base)\r\n\t\tif (data.cmd === 'node.info' && !data.err)\r\n\t\t{\r\n\t\t\tthis._parseNodeInfo(data);\r\n\t\t}\r\n\r\n\r\n\t\t// Date du calendrier pour la home\r\n\t\tif (data.cmd === 'calendar' && data.args && data.args.data && data.args.data.dates)\r\n\t\t{\r\n\t\t\tfor (let date of data.args.data.dates)\r\n\t\t\t{\r\n\t\t\t\tthis.userData.addCalendarElement(date.id, date);\r\n\t\t\t\tthis.userData.globalEmitter.emit('calendar:newDate');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// stats de la home => refacto revoir car 2x..\r\n\t\tif (data.cmd === 'epreuve.stats' && data.args && data.args.data)\r\n\t\t{\r\n\t\t\tthis.workspaceData.statsNode = data.args.data.statEpr;\r\n\t\t\tthis.workspaceData.globalEmitter.emit('majStatsEpr');\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'epreuve.stats')\r\n\t\t{\r\n\t\t\tthis._parseEpreuveStats(data);\r\n\t\t}\r\n\r\n\t\t// stats workspace\r\n\t\tif (data.cmd === 'statEpr' && data.args && data.args.data)\r\n\t\t{\r\n\t\t\tthis.workspaceData.statsNodeEpr = data.args.data.stats;\r\n\t\t\tthis.workspaceData.globalEmitter.emit('majStatsEpr');\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'statSuj' && data.args && data.args.data)\r\n\t\t{\r\n\t\t\tif (this.workspaceData.selectedTask && this.workspaceData.selectedTask.idSujet === data.args.data.idSuj)\r\n\t\t\t\tthis.workspaceData.statsNode2 = data.args.data.stats;\r\n\r\n\t\t\tthis.workspaceData.globalEmitter.emit('majStatsEpr');\r\n\t\t}\r\n\r\n\r\n\t\t// Listing sujet\r\n\t\tif (data.cmd === 'subjects' && data.args && data.args.data && data.args.data.result && data.args.data.result.subjects)\r\n\t\t{\r\n\t\t\tthis._parseSubject(data);\r\n\t\t}\r\n\r\n\t\t// File des sujets\r\n\t\tif (data.cmd === 'files' && data.args && data.args.data && data.args.data.result && data.args.data.result.files)\r\n\t\t{\r\n\t\t\tthis._parseFile(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'mail2name')\r\n\t\t{\r\n\t\t\tthis.dataReceivedUsers(data);\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Gestion des tache de la home\r\n\t\t// ---------------------------------------\r\n\t\tif (data.cmd === 'tasks.stats')\r\n\t\t{\r\n\t\t\tthis._parseTasksStats(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'tasks.assigned')\r\n\t\t{\r\n\t\t\tthis._parseTasksAssigned(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'tasks.bynode')\r\n\t\t{\r\n\t\t\tthis.setTasksBySubject(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'history.readed' && !data.args.err)\r\n\t\t{\r\n\t\t\tthis._parseHistoryReaded(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'history.count' && !data.args.err)\r\n\t\t{\r\n\t\t\tthis._parseHistoryCount(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'roles')\r\n\t\t{\r\n\t\t\tif (data.args.data.roles.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.handleRolesReceived(data.args.data.roles);\r\n\r\n\t\t\t} else { this.userData.status = UserData.STATUS_USER; }\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Lorsqu'on récupère les ressources on initialise les rooms\r\n\t\t// pour écouter les évènements relatifs aux ressources dont\r\n\t\t// on a accès\r\n\t\t// ---------------------------------------\r\n\t\tif (data.cmd === 'ressources')\r\n\t\t{\r\n\t\t\tthis._parseRessources(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'rooms' && !Tools.isEmpty(data) && !data.err)\r\n\t\t{\r\n\t\t\tthis.setRooms(data);\r\n\t\t\tthis.userData.globalEmitter.emit('subject::get');\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'room' && !Tools.isEmpty(data) && !data.err)\r\n\t\t{\r\n\t\t\tthis.setRoom(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'msg.count')\r\n\t\t{\r\n\t\t\tif (!data.args.err)\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.setCounterByRoom(data.args.data.key, parseInt(data.args.data.nbmessages));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération des infos sur les rooms\r\n\t\t// ---------------------------------------\r\n\t\tif (data.cmd === 'msg.readed')\r\n\t\t{\r\n\t\t\tthis._parseMessagesReaded(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'user')\r\n\t\t{\r\n\t\t\tthis.setUsers(data);\r\n\t\t}\r\n\r\n\t\tif (data.idc === 'getUserChatInit')\r\n\t\t{\r\n\t\t\tthis.userData.globalEmitter.emit(['chat::getUsers', '']);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'msg')\r\n\t\t{\r\n\t\t\tthis._parseMessages(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'messages')\r\n\t\t{\r\n\t\t\tif (data.args.data && data.args.data.messages && Object.keys(data.args.data.messages).length > 0)\r\n\t\t\t{\r\n\t\t\t\tlet messagesRead = this.workspaceData.parseHistoric(data.args.data);\r\n\t\t\t\tthis.workspaceData.setHistoric(data.args.data.key, messagesRead);\r\n\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', data.args.data.key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'messages.readed')\r\n\t\t{\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'encryptDatasForValidation')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.datasEncoded && data.args.data.datasToValid)\r\n\t\t\t{\r\n\r\n\t\t\t\tthis.userData.globalEmitter.emit(['RSA:validate', data.args.data.datasEncoded, data.args.data.datasToValid]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'adminParameters')\r\n\t\t{\r\n\t\t\tthis._parseAdminParameters(data);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'epreuve.stats')\r\n\t\t{\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'passations')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.passations && data.args.data.passations.length > 0)\r\n\t\t\t{\r\n\t\t\t\tlet passations = data.args.data.passations;\r\n\r\n\t\t\t\tfor (let passation of passations)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.vaultData.addConcours(passation);\r\n\t\t\t\t}\r\n\t\t\t\tthis.vaultData.vaultEmitter.emit('passations::get');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'candidatsPassations')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.idPassation && data.args.data.candidats)\r\n\t\t\t{\r\n\t\t\t\tconst currentPassation: any = this.vaultData.getConcourByid(data.args.data.idPassation);\r\n\r\n\t\t\t\ttry{\r\n\t\t\t\t\tconst candidats = JSON.parse(data.args.data.candidats);\r\n\t\t\t\t\tcurrentPassation.datas.candidats = candidats;\r\n\t\t\t\t\tthis.vaultData.addConcours(currentPassation);\r\n\t\t\t\t\tthis.vaultData.vaultEmitter.emit(['candidats::get', currentPassation.id]);\r\n\t\t\t\t}catch(e){}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (data.cmd === 'candidatByParent')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.candidats)\r\n\t\t\t{\r\n\t\t\t\tfor(let candidat of data.args.data.candidats)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (candidat.idparents && candidat.idparents.length > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor(let idparent of candidat.idparents)\r\n\t\t\t\t\t\t{\r\n//\t\t\t\t\t\t\tthis.vaultData.addCandidatByElement(idparent, candidat);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vaultData.vaultEmitter.emit('candidats::read');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'importResultsPassations2')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.resultatsCandidats && data.args.data.idPassation)\r\n\t\t\t{\r\n\t\t\t\tthis.vaultData.vaultEmitter.emit(['results::read', data.args.data]);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.err === true && data.args.mId)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst messageParts = data.args.mId.split('::');\r\n\t\t\t\t\tif (messageParts[0] === 'error_import_result_passation')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.vaultData.vaultEmitter.emit(['results::error', messageParts[1]]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'importResultsPassations')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.result)\r\n\t\t\t{\r\n//\t\t\t\tthis.showNotification('Nouveau jeu de résultat', '');\r\n\t\t\t\tthis.vaultData.vaultEmitter.emit(['results::read', data.args.data]);\r\n\t\t\t}else\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.err === true && data.args.mId)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst messageParts = data.args.mId.split('::');\r\n\t\t\t\t\tif (messageParts[0] === 'error_import_result_passation')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.vaultData.vaultEmitter.emit(['results::error', messageParts[1]]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (data.cmd === 'allBaremes')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.baremes)\r\n\t\t\t{\r\n//\t\t\t\tthis.showNotification('Nouveau jeu de résultat', '');\r\n//\t\t\t\tthis.vaultData.vaultEmitter.emit(['results::read', data.args.data.result]);\r\n\t\t\t\tthis.baremeData.addBaremes(data.args.data.baremes);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'getAesKeysFromUser')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.result)\r\n\t\t\t{\r\n\t\t\t\tthis.userData.globalEmitter.emit(['getAesKeysFromUser', data.args.data.result]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'candidatsEmargement')\r\n\t\t{\r\n\t\t\tif (data.args\r\n\t\t\t\t&& data.args.err === false\r\n\t\t\t\t&& data.args.data\r\n\t\t\t\t&& data.args.data.candidats\r\n\t\t\t\t&& data.args.data.passationId\r\n\t\t\t\t&& data.args.data.candidats.data\r\n\t\t\t\t&& data.args.data.candidats.data.candidats)\r\n\t\t\t{\r\n\t\t\t\tconst epreuveId = data.args.data.passationId;\r\n\t\t\t\tconst candidats = data.args.data.candidats.data.candidats;\r\n\r\n\t\t\t\tfor (const candidat of candidats)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (candidat && candidat.signature && candidat.signature !== '')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tcandidat.signature = JSON.parse(candidat.signature);\r\n\t\t\t\t\t\t}catch(e)\r\n\t\t\t\t\t\t{}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.workspaceData.globalEmitter.emit(['emargements::' + epreuveId, candidats]);\r\n\t\t\t}\r\n\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * a la récupération des taches, on va les affecter dans les noeuds correspondants\r\n\t */\r\n\tprivate _addTasksToEpreuves(tasks: any)\r\n\t{\r\n\t\tfor (let task of tasks)\r\n\t\t{\r\n\t\t\tif (task.idepreuve)\r\n\t\t\t{\r\n\t\t\t\tlet epreuve: any = this.workspaceData.getEpreuve(task.idepreuve);\r\n\r\n\t\t\t\tif (epreuve)\r\n\t\t\t\t{\r\n\t\t\t\t\t//On vérifie si la tache est présente dans l'épreuve\r\n\t\t\t\t\t//Si ce n'est pas le cas on l'insère dans l'épreuve et on demande le sujet concerné\r\n\t\t\t\t\tlet objTask = Task.fromJsonObject(task);\r\n\t\t\t\t\tobjTask\t\t= this.taskData.buildTask(objTask);\r\n\r\n\r\n\t\t\t\t\tlet taskFinded = _.find(epreuve.tasks, (task: any) => { return task.id === objTask.id; });\r\n\r\n\t\t\t\t\tif (taskFinded === undefined)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tepreuve.tasks.push(objTask);\r\n\t\t\t\t\t\tthis.sujetService.getSujets(epreuve.id, objTask.idSujet);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//On récupère les messages lus par l'utilisateur afin de savoir si\r\n\t\t\t\t\t//la tache contient des messages non lus\r\n\t\t\t\t\tthis.messagesService.getReadedMessages(objTask.id, 'task');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Enregistrement des infos de base\r\n\t */\r\n\tprivate _parseNodeInfo(data: any)\r\n\t{\r\n\t\tlet sUserId = this.userData.getUserId();\r\n\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\tif (data.args && data.args.data && !data.err && data.args.data.nodes[0])\r\n\t\t{\r\n\t\t\t// RAZ des etabs, pour éviter de retrouver les anciennes\r\n\t\t\tthis.workspaceData.etablissements\t= [];\r\n\t\t\tlet datasStruct\t\t\t\t\t\t= data.args.data.nodes[0];\r\n\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Parcours des data reçu par le socket pour les affecter dans workspaceData\r\n\t\t\t// Appels socket pour récupérer les commentaires et historique pour chaque palier\r\n\t\t\t// ---------------------------------------\r\n\t\t\tif (datasStruct.structure)\r\n\t\t\t{\r\n\t\t\t\tfor (let etabTemporaire of datasStruct.structure)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (etabTemporaire && etabTemporaire.type === 'etablissement' && etabTemporaire.type)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet etabObject \t= Etablissement.fromJsonObject(etabTemporaire);\r\n\t\t\t\t\t\tetabObject.show = true;\r\n\r\n\t\t\t\t\t\tthis.workspaceData.addEtablissement(etabObject.id, etabObject);\r\n\t\t\t\t\t\t// this.sujetService.getSujets(this.workspaceData.selectedMatiere.id);\r\n\r\n\t\t\t\t\t\t//On récupère les sujets d'une épreuve si on est administrateur ou un superutilisateur\r\n\t\t\t\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfor (let session of etabObject.sessions)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfor (let epreuve of examen.matieres)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t// pour chaque epreuve on va apeller les sujets..\r\n\t\t\t\t\t\t\t\t\t\tthis.sujetService.getSujets(epreuve.id);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.workspaceData.etablissements.length === 0)\r\n\t\t\t{\r\n\t\t\t\tthis.savedData.lastGroup = '';\r\n\t\t\t}\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Récupération des tasks\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd': 'tasks.stats',\r\n\t\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd': 'tasks.assigned',\r\n\t\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// call des stats des épreuves\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t'cmd': 'epreuve.stats',\r\n\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tparentNodes: null,\r\n\t\t\t\t\t\t\t\tlimit: 160\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.workspaceData.isInfoNodeOk = true;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Récupère la liste des rooms pour le module de chat global\r\n\t */\r\n\tpublic getGlobalRooms()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ajout les rooms dans le trableau des rooms à écouter pour recevoir les messages\r\n\t */\r\n\tpublic addRoomToChanel(room: any)\r\n\t{\r\n\t\t// Construction de la cdc pour avoir les retours de messages pour chaques rooms\r\n\t\tlet roomState = '::priv';\r\n\t\tlet roomReadOnly = '';\r\n\r\n\t\tif (room.isPublic)\r\n\t\t{\r\n\t\t\troomState = '::public';\r\n\t\t}\r\n\t\tif (room.isReadOnly)\r\n\t\t{\r\n\t\t\troomReadOnly = '::' + room.owner;\r\n\t\t}\r\n\r\n\t\tlet roomId\t\t= this.socketService.findRoomAGerer(name);\r\n\t\tlet roomName\t= '*room::' + room.uuid + roomState + roomReadOnly;\r\n\r\n\t\t// room non trouvé, donc juste à push\r\n\t\tif (roomId === -1)\r\n\t\t{\r\n\t\t\tthis.socketService.roomsAGerer.push({ name: roomName, state: 'nosub', watch: true, fct: this.newMessageReceived.bind(this, roomName), channel: undefined });\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sauvegarde locale des rooms pour la construction du chat\r\n\t */\r\n\tpublic setRooms(data: any)\r\n\t{\r\n\t\tthis.userData.rooms = [];\r\n\t\tthis.chatData.rooms = [];\r\n\r\n\t\tif (data && data.args && data.args.data && data.args.data.rooms && !data.err)\r\n\t\t{\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Pour chaque room on va demander les infos sur les messages et les compteurs\r\n\t\t\t// ---------------------------------------\r\n\t\t\tfor (let room of data.args.data.rooms)\r\n\t\t\t{\r\n\t\t\t\t// Message.readead, pour savoir si on a des nouveaus messages et les flaguer comme lu\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t'cmd': 'msg.readed',\r\n\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tbucket:\t\t'rooms',\r\n\t\t\t\t\t\t\t\t\t\tkey:\t\troom.uuid\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// Sauvegarde des infos dans le privoder\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tthis.addRoomToChanel(room);\r\n\t\t\t\tthis.chatData.setRoom(room.uuid, Piece.fromJsonObject(room));\r\n\t\t\t}\r\n\r\n\t\t\tthis.chatData.isRoomOk = true;\r\n\t\t\tthis.homeInfosEmitter.emit('homeRoomsOk');\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sauvegarde locale des rooms pour la construction du chat\r\n\t */\r\n\tpublic setRoom(data: any)\r\n\t{\r\n\t\tif (data && data.args && data.args.data && data.args.data.rooms && !data.err)\r\n\t\t{\r\n\t\t\tfor (let room of data.args.data.rooms)\r\n\t\t\t{\r\n\t\t\t\t// Place l'écouteur sur la room pour l'arriver de new message\r\n\t\t\t\tthis.addRoomToChanel(room);\r\n\r\n\t\t\t\t// On enregistre la room\r\n\t\t\t\tthis.chatData.setRoom(room.uuid, Piece.fromJsonObject(room));\r\n\t\t\t\tif (room.owner != this.userData.getUserId())\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.chatData.setUserByRoom2(room.uuid, room.owner);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Message.readead, pour savoir si on a des nouveaus messages et les flaguer comme lu\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t'cmd': 'msg.readed',\r\n\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tbucket: 'rooms',\r\n\t\t\t\t\t\t\t\t\t\tkey: room.uuid\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t\tthis.chatData.isRoomOk = true;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sauvegarde locale des rooms pour la construction du chat, spécifique à lla création de chat..\r\n\t */\r\n\tpublic setRoomForCreate(room: any)\r\n\t{\r\n\t\t// Place l'écouteur sur la room pour l'arriver de new message\r\n\t\tthis.addRoomToChanel(room);\r\n\r\n\t\t// On enregistre la room\r\n\t\tlet oRoom = Piece.fromJsonObject(room);\r\n\t\tthis.chatData.setRoom(room.uuid, oRoom);\r\n\r\n\r\n\t\tthis.chatData.setSelectedRoomBy(room.uuid);\r\n\r\n\r\n\t\t// Message.readead, pour savoir si on a des nouveaus messages et les flaguer comme lu\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'msg.readed',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbucket: 'rooms',\r\n\t\t\t\t\t\t\tkey: room.uuid\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.chatData.isRoomOk = true;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * affectation des taches directement dans les sujets\r\n\t */\r\n\tpublic setTasksBySubject(data: any)\r\n\t{\r\n\t\tif (data && !data.err && data.args && data.args.data && data.args.data.tasks)\r\n\t\t{\r\n\t\t\tthis.workspaceData.setTasksBySubject(data.args.data.tasks);\r\n\t\t\tthis.taskData.addTasks(data.args.data.tasks);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Enregistre les infos des user et init les classes\r\n\t */\r\n\tpublic setUsers(data: any)\r\n\t{\r\n\t\tlet arrayUser = data.args.data.users;\r\n\r\n\t\tif (arrayUser)\r\n\t\t{\r\n\t\t\tfor (let user of arrayUser)\r\n\t\t\t{\r\n\r\n\t\t\t\t// super ... 2 fonctions pas le meme nom, pas le meme ordre des params, gg à moi ... =>virer celui qui ne sert à rien refacto\r\n\t\t\t\tthis.userData.addUser(user, user.mail);\r\n\t\t\t\tthis.chatData.setUser(user.mail, user);\r\n\r\n\t\t\t\tthis.userData.userForChatInvite = user;\r\n\t\t\t\tlet me = this.userData.getUserId();\r\n\r\n\r\n\t\t\t\tif (me === user.mail)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (user.infos.nom\t\t!== '')\t{ this.userData.firstName\t= user.infos.nom; }\r\n\t\t\t\t\tif (user.infos.prenom\t!== '')\t{ this.userData.lastName\t= user.infos.prenom; }\r\n\t\t\t\t\tif (user.infos.color\t!== '')\t{ this.userData.color\t\t= user.infos.color; }\r\n\r\n\t\t\t\t\t// gestion de l'icone user avec la 1er lettre du prénom ou du mail\r\n\t\t\t\t\tif (user.infos.prenom !== '')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.firstLetterIcone = user.infos.nom.charAt(0);\r\n\t\t\t\t\t\tthis.userData.firstLetterIcone += user.infos.prenom.charAt(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet userId\t\t\t\t\t\t= this.userData.getUserId();\r\n\r\n\t\t\t\t\t\tthis.userData.firstLetterIcone\t= '';\r\n\t\t\t\t\t\tthis.userData.firstLetterIcone\t+= userId.charAt(0);\r\n\t\t\t\t\t\tthis.userData.firstLetterIcone\t+= userId.charAt(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// Ajout de l'user dans la room\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tif (data.idc)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Pour ouvrir le chat, on affecte les users, la room selectionné et on bascule\r\n\t\t\t\t\tthis.chatData.setUserByRoom2(data.idc, user.mail);\r\n\t\t\t\t\tthis.chatData.setSelectedRoomBy(data.idc);\r\n\t\t\t\t\tthis.userData.globalEmitter.emit(['chat::openRoomAfterData', '']);\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet idRoom = this.userData.idNewRoom;\r\n\t\tthis.userData.globalEmitter.emit(['majRooms', idRoom]);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _parseFile(data: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// RAJ des fichiers\r\n\t\t// ---------------------------------------\r\n\t\tlet subjectId;\r\n\t\tlet promises: Promise[] = [];\r\n\r\n\t\tfor (let fileReturned of data.args.data.result.files)\r\n\t\t{\r\n\t\t\tpromises.push(this._addFileToWorkspace(fileReturned, data.args.data.result.encodedRsaKeys));\r\n\t\t}\r\n\r\n\t\tPromise.all(promises).then(results =>\r\n\t\t{\r\n\t\t\tif (results && results.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.userData.globalEmitter.emit('files::get');\r\n\t\t\t}\r\n\t\t\tthis.workspaceData.globalEmitter2.emit(data.args.data.result.idSubject);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Ajoute un fichier récupéré en base de données, téléchargement et décodage éventuel d'un thumbnail\r\n\t */\r\n\tprivate _addFileToWorkspace(fileJson: any, encodedRsaKeys: any): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n {\r\n\t\t\tif (fileJson && fileJson.id)\r\n\t\t\t{\r\n\t\t\t\tlet fileObj = FileSubject.fromJsonObject(fileJson);\r\n\r\n\t\t\t\t// Si le fichier possède le tag 'corbeille', on le définit comme étant supprimé\r\n\t\t\t\tif (_.indexOf(fileObj.tags, 'corbeille') !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tfileObj.deleted = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (encodedRsaKeys && encodedRsaKeys[fileObj.id])\r\n\t\t\t\t{\r\n\t\t\t\t\tfileObj.encryptedAesKeys = encodedRsaKeys[fileObj.id];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//On effectue l'appel socket pour récupérer les historique et les commentaires du fichier\r\n\t\t\t\tthis.messagesService.getMessages(fileObj.id, 'files');\r\n\r\n\t\t\t\tif (fileObj.pathThumbs.length > 0 && fileObj.pathThumbs.length !== fileObj.thumbs.length)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.fileService.downloadThumbnail(fileObj).subscribe((res) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (res && res.url)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileObj.thumbs.push(res);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.workspaceData.addFile(fileObj.idSubject, fileObj);\r\n\t\t\t\t\t\tresolve(fileObj.idSubject);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.addFile(fileObj.idSubject, fileObj);\r\n\t\t\t\t\tresolve(fileObj.idSubject);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Les stats sur les taches\r\n\t */\r\n\tprivate _parseTasksStats(data: any)\r\n\t{\r\n\t\tif (data.args.mess === 'ok')\r\n\t\t{\r\n\t\t\tlet tasks:\t\t\tany[] = [];\r\n\t\t\tlet tasksExpired:\tany[] = [];\r\n\t\t\tlet tasksToClose:\tany[] = [];\r\n\r\n\t\t\tif (data.args.data)\r\n\t\t\t{\r\n\t\t\t\t// affectation des taches arrivant à expiration\r\n\t\t\t\tif (data.args.data.expired)\r\n\t\t\t\t{\r\n\t\t\t\t\ttasks\t\t\t= tasks.concat(data.args.data.expired);\r\n\t\t\t\t\ttasksExpired\t= tasks.concat(data.args.data.expired);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// les taches à valider (taff ok mais non validé)\r\n\t\t\t\tif (data.args.data.toclose)\r\n\t\t\t\t{\r\n\t\t\t\t\ttasks\t\t\t= tasks.concat(data.args.data.toclose);\r\n\t\t\t\t\ttasksToClose\t= tasks.concat(data.args.data.toclose);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Les taches pour la home / expiration\r\n\t\t\tfor (let task of tasksExpired)\r\n\t\t\t{\r\n\t\t\t\tlet oTask\t= Task.fromJsonObject(task);\r\n\t\t\t\toTask\t\t= this.taskData.buildTask(oTask);\r\n\r\n\t\t\t\tthis.workspaceData.setTaskHomeAdminExpired(oTask.id, oTask);\r\n\t\t\t}\r\n\r\n\t\t\t// Les taches pour la home / à fermer\r\n\t\t\tfor (let task of tasksToClose)\r\n\t\t\t{\r\n\t\t\t\tlet oTask\t= Task.fromJsonObject(task);\r\n\t\t\t\toTask\t\t= this.taskData.buildTask(oTask);\r\n\r\n\r\n\t\t\t\tif (oTask.state === 'review')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.setTaskHomeAdminToValid(oTask.id, oTask);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.workspaceData.setTaskHomeAdmin(oTask.id, oTask);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis.workspaceData.isInfoTaskAdminOk = true;\r\n\t\t\t// Au cas ou on les assigne, pas obligatoire ..\r\n\t\t\tthis._addTasksToEpreuves(tasks);\r\n\t\t\tthis.homeInfosEmitter.emit('homeTasksOk');\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\tpublic _updateTasksFromDatas(taskData: any)\r\n\t{\r\n\t\tthis.workspaceData.setTasksBySubject([taskData], true);\r\n\r\n\t\tlet oTask\t= Task.fromJsonObject(taskData);\r\n\t\toTask\t\t= this.taskData.buildTask(oTask);\r\n\r\n\r\n\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t{\r\n\t\t\tthis.workspaceData.setTaskHomeAdmin(oTask.id, oTask);\r\n\t\t}\r\n\r\n\t\tfor (let etablissement of this.workspaceData.etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of etablissement.sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let epreuve of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let task of epreuve.tasks)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (task.id === oTask.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttask = oTask;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (oTask.endDate && oTask.endDate > new Date())\r\n\t\t{\r\n\t\t\t// Pas expiré\r\n\t\t\tlet aArrayKey2 = [];\r\n\t\t\tlet key3: any;\r\n\t\t\tfor (key3 in this.workspaceData.taskHomeAdminExpired)\r\n\t\t\t{\r\n\t\t\t\taArrayKey2.push(key3);\r\n\t\t\t}\r\n\r\n\t\t\tlet nIndice2 =\t0;\r\n\t\t\tlet key4:\t\tany;\r\n\r\n\t\t\tfor (key4 of aArrayKey2)\r\n\t\t\t{\r\n\t\t\t\tif (this.workspaceData.taskHomeAdminExpired[key4] && this.workspaceData.taskHomeAdminExpired[key4].id === oTask.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.removeTaskExpired(nIndice2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnIndice2++;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// expiré\r\n\t\t\tthis.workspaceData.setTaskHomeExpired(oTask.id, oTask);\r\n\t\t}\r\n\r\n\t\tif (oTask.assigneduser === this.userData.getUserId())\r\n\t\t{\r\n\t\t\tthis.workspaceData.setTaskHomeMine(oTask.id, oTask);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlet aArrayKey2 = [];\r\n\t\t\tlet key3: any;\r\n\r\n\t\t\tfor (key3 in this.workspaceData.taskHomeMine)\r\n\t\t\t{\r\n\t\t\t\taArrayKey2.push(key3);\r\n\t\t\t}\r\n\t\t\tlet nIndice2 = 0;\r\n\t\t\tlet key4:\t\tany;\r\n\r\n\t\t\tfor (key4 of aArrayKey2)\r\n\t\t\t{\r\n\t\t\t\tif (this.workspaceData.taskHomeMine[key4] && this.workspaceData.taskHomeMine[key4].id === oTask.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.removeTaskToMine(nIndice2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnIndice2++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Regarder si la tache n'est pas déjà dans la variable, à valider\r\n\t\tlet aArrayKey = [];\r\n\r\n\t\tfor (let key in this.workspaceData.taskHomeAdminToValid)\r\n\t\t{\r\n\t\t\taArrayKey.push(key);\r\n\t\t}\r\n\t\tlet nIndice = 0;\r\n\r\n\t\tfor (let key2 of aArrayKey)\r\n\t\t{\r\n\t\t\tif (this.workspaceData.taskHomeAdminToValid[key2] && this.workspaceData.taskHomeAdminToValid[key2].id === oTask.id)\r\n\t\t\t{\r\n\r\n\t\t\t\tthis.workspaceData.removeTaskToValid(nIndice);\r\n\t\t\t}\r\n\r\n\t\t\tnIndice++;\r\n\t\t}\r\n\r\n\t\tthis.taskData.setGlobalTask(oTask.id, oTask);\r\n\t\t// Ajout après gros bug taks\r\n\t\tlet sUserId = this.userData.getUserId();\r\n\t\tlet eSocketWhat: SocketWhat.request;\r\n\t/*\r\n\t\tif (!this.workspaceData.statsNode2)\r\n\t\t{*/\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd': 'tasks.stats',\r\n\t\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd': 'tasks.assigned',\r\n\t\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t/*\r\n\t\t}\r\n*/\r\n\t\tif (this.workspaceData.selectedTask && this.workspaceData.selectedTask.id === oTask.id)\r\n\t\t{\r\n\r\n\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true || (oTask.assigneduser === this.userData.mail && oTask.state !== 'done'))\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedTask = oTask;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedTask = undefined;\r\n\t\t\t\tthis.taskData.taskDataEmitter.emit(['task::done', oTask.id]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.taskData.taskDataEmitter.emit('task::update');\r\n\t}\r\n\r\n\r\n\tpublic socketToArray(data: any)\r\n\t{\r\n\t\tlet keyArray\t= [];\r\n\t\tlet array\t\t= [];\r\n\t\tlet arrayReturn = [];\r\n\r\n\t\tfor (let key in data)\r\n\t\t{\r\n\t\t\tkeyArray.push(key);\r\n\t\t}\r\n\t\tarray = _.toArray(data);\r\n\r\n\t\tlet indice = 0;\r\n\t\tfor (let item of array)\r\n\t\t{\r\n\t\t\titem.id = keyArray[indice];\r\n\t\t\tarrayReturn.push(item)\r\n\t\t\tindice++;\r\n\t\t}\r\n\r\n\t\treturn arrayReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _parseEpreuveStats(data: any)\r\n\t{\r\n\t\tif (data.args && data.args.mess === 'ok' && !data.args.err && data.args.data.statEpr)\r\n\t\t{\r\n\t\t\tlet epreuves = this.socketToArray(data.args.data.statEpr)\r\n\r\n\t\t\tfor (let epreuve of epreuves)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.setEpreuveHomeAdmin(epreuve.id, epreuve);\r\n\t\t\t}\r\n\r\n\t\t\tthis.homeInfosEmitter.emit('homeEpreuveOk');\r\n\t\t\tthis.workspaceData.isHomeEpreuveOk = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Construit les taches pr celles qui me sont affectés\r\n\t */\r\n\tprivate _parseTasksAssigned(data: any)\r\n\t{\r\n\t\tif (data.args.mess === 'ok')\r\n\t\t{\r\n\t\t\t// On est dans le cas des tache qui me sont affecté\r\n\t\t\tfor (let task of data.args.data.tasks)\r\n\t\t\t{\r\n\t\t\t\tlet oTask = Task.fromJsonObject(task);\r\n\t\t\t\t// Récupération du nom d'épeuvre et du sujet pour affichage ds la vignette\r\n\r\n\t\t\t\toTask = this.taskData.buildTask(oTask);\r\n\t\t\t\tthis.workspaceData.setTaskHomeMine(oTask.id, oTask);\r\n\t\t\t}\r\n\t\t\tthis.workspaceData.isInfoTaskMineOk = true;\r\n\t\t\tthis._addTasksToEpreuves(data.args.data.tasks);\r\n\t\t\tthis.workspaceData.setTasksBySubject(data.args.data.tasks);\r\n\t\t\tthis.taskData.addTasks(data.args.data.tasks);\r\n\r\n\t\t\t// voir si il sert tjr\r\n\t\t\tthis.homeInfosEmitter.emit('homeTasksOk');\r\n\t\t\tthis.taskData.taskDataEmitter.emit('task::update');\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _parseHistoryReaded(data: any)\r\n\t{\r\n\t\tif (data.args.data && data.args.data.history_readed && data.args.data.bucket && data.args.data.key)\r\n\t\t{\r\n\t\t\tlet datesKeys = Object.keys(data.args.data.history_readed);\r\n\r\n\t\t\tif (datesKeys && datesKeys.length > 0)\r\n\t\t\t{\r\n\t\t\t\tlet date = datesKeys[0];\r\n\t\t\t\t// pas de limit sur le count, fonctionne pas - si on veut limiter demander directement les n derniers messages\r\n\t\t\t\tthis.messagesService.getMessagesCount(data.args.data.key, data.args.data.bucket, date);\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _parseSubject(data: any)\r\n\t{\r\n\t\tthis._addSubjectToUserDatas(data.args.data.result.subjects);\r\n\r\n\t\t//On effectue les appels pour récupérer les historiques et les commentaires des sujets\r\n\t\tfor (let subjectJson of data.args.data.result.subjects)\r\n\t\t{\r\n\t\t\tif (subjectJson.idsujet)\r\n\t\t\t{\r\n\t\t\t\tthis.messagesService.getMessages(subjectJson.idsujet, 'subjects');\r\n\t\t\t}\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Mise à jour des nom des taches\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.taskData.majSubjectName(subjectJson.idsujet);\r\n\t\t}\r\n\r\n\t\tthis.userData.globalEmitter.emit('subject::get');\r\n\t\tthis.workspaceData.isInfoSubjectOk = true;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _parseHistoryCount(data: any)\r\n\t{\r\n\t\tif (data.args.data.bucket && data.args.data.key && data.args.data.nbmessages)\r\n\t\t{\r\n\t\t\tswitch (data.args.data.bucket)\r\n\t\t\t{\r\n\t\t\t\tcase 'task':\r\n\t\t\t\t\tif (data.args.data.nbmessages > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet currentTask: Task = this.workspaceData.getGlobalTaskById(data.args.data.key);\r\n\t\t\t\t\t\tif (currentTask)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcurrentTask.containsNewDatas = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _parseRessources(data: any)\r\n\t{\r\n\t\tlet sUserId = this.userData.getUserId();\r\n\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\tif (Object.keys(data.args.data.ressources).length > 0)\r\n\t\t{\r\n\t\t\tfor (let keyRessource in data.args.data.ressources)\r\n\t\t\t{\r\n\t\t\t\t// keyRessource est une chaine contenant le type de ressource\r\n\t\t\t\t// et son identifiant séparées par ::\r\n\t\t\t\tif (data.args.data.ressources[keyRessource])\r\n\t\t\t\t{\r\n\t\t\t\t\tlet ressource = data.args.data.ressources[keyRessource];\r\n\r\n\t\t\t\t\t// On récupère l'identifient de la ressource\r\n\t\t\t\t\tlet nodid = keyRessource.split('::');\r\n\t\t\t\t\tif (nodid.length > 1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// On vérifie si l'identifiant est bien défini\r\n\t\t\t\t\t\tif (nodid[1] && nodid[1] !== 'undefined')\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// Si la ressource est une tache on appelle la fonction d'écoute\r\n\t\t\t\t\t\t\t// de tâches\r\n\t\t\t\t\t\t\tif (_.indexOf(ressource, 'task') !== -1)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis._listenTaskBySocket(nodid[1]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// Sinon il s'agit d'un node et on vérifie si on la droit en lecture\r\n\t\t\t\t\t\t\t\tif (_.indexOf(ressource, 'read') !== -1)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis._listenNodeBySocket(nodid[1]);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (data.args && data.args.data && data.args.data.ressources)\r\n\t\t\t{\r\n\t\t\t\tlet nodes = _.keys(data.args.data.ressources);\r\n\r\n\t\t\t\tthis.userData.setRessources(nodes);\r\n\r\n\t\t\t\t// Cas user est admin\r\n\t\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t\t'cmd':\t'node.info',\r\n\t\t\t\t\t\t\t\t\t'args': {\r\n\t\t\t\t\t\t\t\t\t\tnodes:\t\tnodes,\r\n\t\t\t\t\t\t\t\t\t\tnodeOption: 'wc',\r\n\t\t\t\t\t\t\t\t\t\tdepth:\t\t-1\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tlet idNodes = _.map(nodes, (node: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet idNodes = node.split('::');\r\n\t\t\t\t\t\t// AaarG !\r\n\t\t\t\t\t\treturn idNodes.length > 1 ? idNodes[1] : idNodes[0];\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd':\t'node.info',\r\n\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tnodes: idNodes,\r\n\t\t\t\t\t\t\t\t\t\tnodeOption: 'wp'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate _parseMessagesReaded(data: any)\r\n\t{\r\n\t\tlet indice\t\t= 0;\r\n\t\tlet indiceFinal = 0;\r\n\r\n\t\tlet indiceInfoCurrent\t= 0;\r\n\t\tlet sUserId\t\t\t\t= this.userData.getUserId();\r\n\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ici on va réaliser l'appel pour récup les infos de l'user.\r\n\t\t// ---------------------------------------\r\n\t\tif (!data.args.err)\r\n\t\t{\r\n\t\t\tlet key = data.args.data.key;\r\n\r\n\t\t\t// Récupération du mail du mail du mec d'en face\r\n\t\t\t// (principalement pour la récup des infos et la construction du titre de la room)\r\n\t\t\tfor (let test in data.args.data.messages_readed)\r\n\t\t\t{\r\n\t\t\t\tlet mail: any;\r\n\t\t\t\tif (test.startsWith('*'))\r\n\t\t\t\t{\r\n\t\t\t\t\tmail = test.substr(7);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tmail = test;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userData.getUserId() !== mail)\r\n\t\t\t\t{\r\n\t\t\t\t\t// si on trouve on met à jour l'indice final pour la suite\r\n\t\t\t\t\tthis.chatData.setUserByRoom2(key, mail);\r\n\r\n\t\t\t\t\t// On demande les infos des users des rooms\r\n\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.socket = socket;\r\n\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t\t'cmd':\t'user',\r\n\t\t\t\t\t\t\t\t\tidc:\tkey,\r\n\t\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t'mail': mail,\r\n\t\t\t\t\t\t\t\t\t\tbdata:\ttrue,\r\n\t\t\t\t\t\t\t\t\t\tbstate: true,\r\n\t\t\t\t\t\t\t\t\t\ttoken:\tthis.userData.getTokenKey()\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// dans ce cas là c'est l'user en cours\r\n\t\t\t\t\tindiceFinal = indice;\r\n\t\t\t\t}\r\n\t\t\t\tindice++;\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Récup de l'id du dernier message que j'ai lu\r\n\t\t\t// on transforme le json en array qu'on parse, quand on a l'user = a nous on ajoute ds la room.\r\n\t\t\t// Servira à renseigner les messages non lu et lu ds les compteurs\r\n\t\t\t// ---------------------------------------\r\n\t\t\tlet indiceForTest = 0;\r\n\r\n\t\t\tlet arrayMessageReaded = _.toArray(data.args.data.messages_readed);\r\n\r\n\t\t\tfor (let test of arrayMessageReaded)\r\n\t\t\t{\r\n\t\t\t\t// Cas user en cours\r\n\t\t\t\tif (indiceForTest === indiceFinal && test.sub.M)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (test && test.sub && test.sub.M)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// Message.count, récupération des compteurs de messages non lu\r\n\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t\t\t'cmd':\t'msg.count',\r\n\t\t\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tbucket:\t\t'rooms',\r\n\t\t\t\t\t\t\t\t\t\t\tkey:\t\tkey,\r\n\t\t\t\t\t\t\t\t\t\t\tfromDate:\ttest.sub.M.readed\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tthis.chatData.setLastMessageReadedByMeByRoom(key, test.sub.M.readed);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (test && test.sub && test.sub.M)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.chatData.setLastMessageReadedByHimByRoom(key, test.sub.M.readed);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tindiceForTest++;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _parseMessages(data: any)\r\n\t{\r\n\t\tif (data.args && !data.args.err && data.args.data.key)\r\n\t\t{\r\n\t\t\tlet idRoom = data.args.data.key;\r\n\t\t\tthis.chatData.setMessagesByRoom(idRoom, data.args.data.messages);\r\n\r\n\t\t\t// dans ce cas c'est une demande de message ancien, donc ne pas lancer (\r\n\t\t\tif (data.idc !== 'true')\r\n\t\t\t{\r\n\t\t\t\tthis.userData.globalEmitter.emit(['chat::openRoomAfterData', '']);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate _parseAdminParameters(data: any)\r\n\t{\r\n\t\tif (data.args && data.args.data && data.args.data.result)\r\n\t\t{\r\n\t\t\tlet result: any = data.args.data.result;\r\n\t\t\tlet generalParameters: any =\r\n\t\t\t{\r\n\t\t\t\tmailAdmin:\t\t\tresult['@admin'],\r\n\t\t\t\tmailSystem:\t\t\tresult['@sys'],\r\n\t\t\t\tdomain:\t\t\t\tresult['domaine'],\r\n\t\t\t\thostMailServer: \tresult['hostmailserver'],\r\n\t\t\t\tloginAccount:\t\tresult['loginaccount'],\r\n\t\t\t\tpasswdAccount:\t\tresult['passwdaccount'],\r\n\t\t\t\tportMailServer: \tresult['portmailserver'],\r\n\t\t\t\tsecure:\t\t\t\tresult['secure'],\r\n\t\t\t\ttypeMailServer: \tresult['typemailserver'],\r\n\t\t\t\tuseAccount:\t\t\tresult['useaccount'],\r\n\t\t\t\tnumericEnabled:\t\tresult['numericEnabled'] \t\t=== '1' ? true : false,\r\n\t\t\t\tspecialTimeEnabled: result['specialTimeEnabled']\t=== '1' ? true : false,\r\n\t\t\t};\r\n\r\n\t\t\tgeneralParameters.specialTimeArray = [];\r\n\r\n\t\t\tif (result['specialTimeEnabled'])\r\n\t\t\t{\r\n\r\n\t\t\t\tconst jsonSpecialTimeArray = JSON.parse(result['specialTimeArray']);\r\n\t\t\t\tfor (const jsonSpecialTime of jsonSpecialTimeArray)\r\n\t\t\t\t{\r\n\t\t\t\t\tgeneralParameters.specialTimeArray.push(SpecialTime.fromJsonObject(jsonSpecialTime));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis.adminData.generalParameters = generalParameters;\r\n\r\n\t\t\tif (result['scenarios'])\r\n\t\t\t{\r\n\t\t\t\tlet scenariosObj: any = result['scenarios'];\r\n\r\n\t\t\t\tif (typeof scenariosObj === 'string')\r\n\t\t\t\t{\r\n\t\t\t\t\tscenariosObj = JSON.parse(scenariosObj);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.adminData.scenariosAvailable = scenariosObj;\r\n\t\t\t}\r\n\r\n\t\t\tif (result['mailsTemplates'])\r\n\t\t\t{\r\n\t\t\t\tlet mailsTemplates: any = result['mailsTemplates'];\r\n\r\n\t\t\t\tif (typeof mailsTemplates === 'string')\r\n\t\t\t\t{\r\n\t\t\t\t\tmailsTemplates = JSON.parse(mailsTemplates);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (const template of mailsTemplates)\r\n\t\t\t\t{\r\n\t\t\t\t\tswitch(template.type)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\ttemplate.title = 'Inconnu';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'accountCreation':\r\n\t\t\t\t\t\t\ttemplate.title = 'Création de compte';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'updatePassword':\r\n\t\t\t\t\t\t\ttemplate.title = 'Mise à jour du mot de passe';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'newTempPassword':\r\n\t\t\t\t\t\t\ttemplate.title = 'Nouveau mot de passe';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'newCodeMachine':\r\n\t\t\t\t\t\t\ttemplate.title = 'Nouveau code machine';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'newTask':\r\n\t\t\t\t\t\t\ttemplate.title = 'Affectation de tâche';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'terminatedTask':\r\n\t\t\t\t\t\t\ttemplate.title = 'Tâche terminée';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'validatedTask':\r\n\t\t\t\t\t\t\ttemplate.title = 'Tâche validée';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'unassignedTask':\r\n\t\t\t\t\t\t\ttemplate.title = 'Tâche désassignée';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'resetPassword':\r\n\t\t\t\t\t\t\ttemplate.title = 'Réinitialisation du mot de passe';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (template.datas && template.datas.jetons)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttemplate.datas.jetons = template.datas.jetons.split(';');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.adminData.mailsTemplates = mailsTemplates;\r\n\t\t\t}\r\n\r\n\t\t\tthis.adminData.adminEmitter.emit('admin::parameters::read');\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic _checkConnection()\r\n\t{\r\n\t\tlet result = false;\r\n\t\tthis.authService.checkTokenWsHttp().subscribe(resAuth =>\r\n\t\t{\r\n\t\t\t// auth, on peut aller sur le home, ou rester sur la page en cours\r\n\t\t\tif (resAuth === true)\r\n\t\t\t{\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// création de l'object currentUser\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tthis.userData.setStateApplication('application', 'online');\r\n\r\n\t\t\t\tif (!this.isConnected)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userService.getCurrentUser().subscribe(res =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet body = JSON.parse(res.text());\r\n\r\n\t\t\t\t\t\tlet etatc = 'online';\r\n\r\n\t\t\t\t\t\tif (body && body.data && body.data.data && body.data.data.stateChat)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tetatc = body.data.data.stateChat;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t// \"authToken\":\tthis.userToken,\r\n\t\t\t\t\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t\t\t\t\t'name':\tthis.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t\t\t'what':\t\tSocketWhat.info,\r\n\t\t\t\t\t\t\t\t\t\t'cmd':\t\t'state',\r\n\t\t\t\t\t\t\t\t\t\t'args':\t\t{ 'state': etatc }\r\n\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\tsocket.emit('update', data);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tthis.activateMenu();\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.userData.setStateApplication('application', 'offline');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Fonction permettant d'écouter une tache dont l'identifient est donné\r\n\t * @param idTask\r\n\t */\r\n\tpublic _listenTaskBySocket(idTask: string)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Fonction permettant d'écouter un noeud dont l'identifient est donné en paramètre\r\n\t * afin de le mettre à jour quand la bdd est modif (mise à J coté provider)\r\n\t * @param idNode\r\n\t */\r\n\tpublic _listenNodeBySocket(idNode: string)\r\n\t{\r\n\t\t// Construction du channel que l'on va écouter\r\n\t\tlet channel = '*soft::' + this.userData.account + '::creation::tree::' + idNode;\r\n\t\t/**\r\n\t\t * On vérifie si on écoute pas déja sur le channe!\r\n\t\t * Si ce n'est pas le cas on ajoute une room pour écouter sur ce channel\r\n\t\t * en transmettant une fonction pour gérer les evènements\r\n\t\t */\r\n\t\tlet value = this.socketService.findRoomAGerer(channel);\r\n\r\n\t\tif (value < 0)\r\n\t\t{\r\n\t\t\tthis.socketService.roomsAGerer.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tname:\t\tchannel,\r\n\t\t\t\t\tstate:\t\t'nosub',\r\n\t\t\t\t\twatch:\t\ttrue,\r\n\t\t\t\t\tfct:\t\tthis._handleNodeEvent.bind(this),\r\n\t\t\t\t\tchannel:\tundefined\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Fonction permettant de gérer les évènement relatifs à un node provenant\r\n\t * du serveur\r\n\t * @param datas\r\n\t */\r\n\tpublic _handleNodeEvent(datas: any)\r\n\t{\r\n\t\tif (datas.cmd === 'node' && datas.args.node)\r\n\t\t{\r\n\r\n\t\t\t//S'il s'agit d'informations relatives au noeud\r\n\t\t\t//On vérifie un noeud et son type sont bien transmis\r\n\t\t\tif (datas.args.node && datas.args.node.type)\r\n\t\t\t{\r\n\t\t\t\tlet node = datas.args.node;\r\n\r\n\t\t\t\tlet objectToUpdate: any;\r\n\t\t\t\tlet idParent:\t\tstring;\r\n\r\n\t\t\t\tlet cptParents = node.idparents.length;\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// Récupération de l'id parents....\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// On déduit le type du parent en fonction du nombre de parents\r\n\t\t\t\t// contenus dans le noeud\r\n\t\t\t\tswitch (cptParents)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t// Le parent est un classeur\r\n\t\t\t\t\t\tidParent = _.find(node.idparents, (parent: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet elemnts = parent.split('::');\r\n\r\n\t\t\t\t\t\t\treturn elemnts[0] === '*etab';\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\t//Le parent est une session\r\n\t\t\t\t\t\tidParent = _.find(node.idparents, (parent: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet elemnts = parent.split('::');\r\n\r\n\t\t\t\t\t\t\treturn elemnts[0] === '*sess';\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 4:\r\n\t\t\t\t\t\t// Le parent est un examen\r\n\t\t\t\t\t\tidParent = _.find(node.idparents, (parent: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet elemnts = parent.split('::');\r\n\r\n\t\t\t\t\t\t\treturn elemnts[0] === '*exam';\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 5:\r\n\t\t\t\t\t\tidParent = _.find(node.idparents, (parent: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet elemnts = parent.split('::');\r\n\r\n\t\t\t\t\t\t\treturn elemnts[0] === '*epr';\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (idParent)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (idParent.split('::').length > 1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tidParent = idParent.split('::')[1];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\t\t\t\tlet sUserId = this.userData.getUserId();\r\n\r\n\r\n\t\t\t\tconst sCreatorMail = datas.args.node.createur;\r\n\r\n\t\t\t\tif (node.datas && datas.args.node.createur)\r\n\t\t\t\t{\r\n\t\t\t\t\tnode.datas.author = datas.args.node.createur;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// On créé l'objet du noeud correspondant en fonction de son type\r\n\t\t\t\tswitch (node.type)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase 'info':\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'etablissement':\r\n\r\n\t\t\t\t\t\tobjectToUpdate = Etablissement.fromJsonObject(node);\r\n\r\n\t\t\t\t\t\tif (sCreatorMail === this.userData.mail)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.workspaceData.resetSelect();\r\n\t\t\t\t\t\t\tobjectToUpdate.show = true;\r\n\t\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (socket && this.workspaceData.selectedEtablissement)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t\t\t\t'cmd': 'statNode',\r\n\t\t\t\t\t\t\t\t\t\t\t'args': { idNodePrefix: '*etab::' + objectToUpdate.id }\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedEtablissement = objectToUpdate;\r\n\t\t\t\t\t\t\tthis.workspaceData.resetSelectedSession();\r\n\t\t\t\t\t\t\tthis.workspaceData.resetSelectedExamen();\r\n\t\t\t\t\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\r\n\t\t\t\t\t\t\tthis.savedData.lastGroup = 'etablissement';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.workspaceData.majEtablissement(objectToUpdate.id, objectToUpdate);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\t\tcase 'session':\r\n\r\n\t\t\t\t\t\tobjectToUpdate = Session.fromJsonObject(node);\r\n\t\t\t\t\t\tif (sCreatorMail === this.userData.mail)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tobjectToUpdate.show = true;\r\n\r\n\t\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (socket && this.workspaceData.selectedSession)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t\t\t\t'cmd': 'statNode',\r\n\t\t\t\t\t\t\t\t\t\t\t'args': { idNodePrefix: '*sess::' + objectToUpdate.id }\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedSession = objectToUpdate;\r\n\t\t\t\t\t\t\tthis.workspaceData.resetSelectedExamen();\r\n\t\t\t\t\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\t\t\t\t\tthis.savedData.lastGroup = 'session';\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.workspaceData.setSession(objectToUpdate.id, objectToUpdate, idParent);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\t\tcase 'examen':\r\n\r\n\t\t\t\t\t\tobjectToUpdate = Examen.fromJsonObject(node);\r\n\r\n\t\t\t\t\t\tif (sCreatorMail === this.userData.mail)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tobjectToUpdate.show = true;\r\n\r\n\t\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (socket && this.workspaceData.selectedExamen)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t\t\t\t'cmd': 'statNode',\r\n\t\t\t\t\t\t\t\t\t\t\t'args': { idNodePrefix: '*exam::' + objectToUpdate.id }\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedExamen = objectToUpdate;\r\n\t\t\t\t\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\t\t\t\t\tthis.savedData.lastGroup = 'examen';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.workspaceData.setExamen(objectToUpdate.id, objectToUpdate, idParent);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\t\tcase 'epreuve':\r\n\r\n\t\t\t\t\t\tobjectToUpdate = Matiere.fromJsonObject(node);\r\n\t\t\t\t\t\tif (sCreatorMail === this.userData.mail)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tobjectToUpdate.show = true;\r\n\r\n\t\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (socket && this.workspaceData.selectedMatiere)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t\t\t\t'cmd': 'statEpr',\r\n\t\t\t\t\t\t\t\t\t\t\t'args': { idEpr: objectToUpdate.id }\r\n\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedMatiere = objectToUpdate;\r\n\t\t\t\t\t\t\tthis.savedData.lastGroup = 'epreuve';\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.workspaceData.setMatiere(objectToUpdate.id, objectToUpdate, idParent);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t\tif (sCreatorMail === this.userData.mail)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.selectedItems = [];\r\n\r\n\t\t\t\t\tif (this.workspaceData.selectedEtablissement)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.selectedItems[0] = this.workspaceData.selectedEtablissement.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedSession)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.selectedItems[1] = this.workspaceData.selectedSession.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedExamen)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.selectedItems[2] = this.workspaceData.selectedExamen.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedMatiere)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.selectedItems[3] = this.workspaceData.selectedMatiere.id;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.userData.globalEmitter.emit(['node::updateTree', objectToUpdate]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (datas.args.message && datas.args.message.key)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet messageAdded = this.workspaceData.parseHistoric(datas.args.message);\r\n\t\t\t\t\tthis.workspaceData.addHistoricToElement(datas.args.message.key, messageAdded);\r\n\t\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', datas.args.message.key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// On met à jours la liste de dates pour le calendrier\r\n\t\t\tif (datas.args.dates)\r\n\t\t\t{\r\n\t\t\t\tfor (let data of datas.args.dates)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (data.id)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.addCalendarElement(data.id, data);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'node' && datas.args.message)\r\n\t\t{\r\n\t\t\t//S'il s'agit d'informations relatives aux messages du noeud\r\n\t\t\tif (datas.args.message && datas.args.message.key)\r\n\t\t\t{\r\n\t\t\t\tlet messageAdded = this.workspaceData.parseHistoric(datas.args.message);\r\n\t\t\t\tthis.workspaceData.addHistoricToElement(datas.args.message.key, messageAdded);\r\n\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', datas.args.message.key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'subject' || datas.cmd === 'subjects')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.subject)\r\n\t\t\t{\r\n\t\t\t\tif (datas.args.action !== 'update')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis._addSubjectToUserDatas([datas.args.subject]);\r\n\r\n\t\t\t\t\t// On met a jour les stat epreuves de la matière du sujet recu\r\n\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet sUserId = this.userData.getUserId();\r\n\t\t\t\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t\t'cmd': 'statEpr',\r\n\r\n\t\t\t\t\t\t\t\t\t'args': { idEpr: datas.args.subject.idepreuve }\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (datas.args.message && datas.args.message.key)\r\n\t\t\t{\r\n\t\t\t\tlet messageAdded = this.workspaceData.parseHistoric(datas.args.message);\r\n\t\t\t\tthis.workspaceData.addHistoricToElement(datas.args.message.key, messageAdded);\r\n\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', datas.args.message.key]);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (datas.args.data && datas.args.data.idsujet && datas.args.data.data && datas.args.action !== 'update')\r\n\t\t\t{\r\n\t\t\t\tlet currentSujet = this.workspaceData.getSujet(datas.args.data.idsujet);\r\n\t\t\t\tif (currentSujet && currentSujet.name)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (const key in datas.args.data.data)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcurrentSujet.datas[key] = datas.args.data.data[key];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Si l'état d'un sujet à été modifié, on reporte la modification dans les passations\r\n\t\t\t\t\tif (datas.args.data.data['etat'])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t_.map(this.vaultData.concours, (concours: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (concours.epreuve && concours.epreuve.id === currentSujet.idMatiere)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfor (const sujet of concours.epreuve.sujets)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (sujet.id === currentSujet.id)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tsujet.datas.etat = datas.args.data.data['etat'];\r\n\t\t\t\t\t\t\t\t\t\tthis.vaultData.vaultEmitter.emit(['passation::update', concours]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (datas.cmd === 'statEpr')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.statsToUpdate && datas.args.statsToUpdate.idepreuve)\r\n\t\t\t{\r\n\t\t\t\tlet currentStatEpr = _.find(this.workspaceData.epreuveHomeAdmin, (statEpr: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\treturn statEpr.id === datas.args.statsToUpdate.idepreuve;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (currentStatEpr)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let key in datas.args.statsToUpdate)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tswitch (key)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcase 'ava':\r\n\t\t\t\t\t\t\t\tcurrentStatEpr.avancement.autre\t\t\t= datas.args.statsToUpdate[key];\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'avp':\r\n\t\t\t\t\t\t\t\tcurrentStatEpr.avancement.principal\t\t= datas.args.statsToUpdate[key];\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'avs':\r\n\t\t\t\t\t\t\t\tcurrentStatEpr.avancement.secondaire\t= datas.args.statsToUpdate[key];\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'nbp':\r\n\t\t\t\t\t\t\t\tcurrentStatEpr.nombre.deprincipal\t\t= datas.args.statsToUpdate[key];\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'nbr':\r\n\t\t\t\t\t\t\t\tcurrentStatEpr.nombre.derejete\t\t\t= datas.args.statsToUpdate[key];\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'nbs':\r\n\t\t\t\t\t\t\t\tcurrentStatEpr.nombre.desecondaire\t\t= datas.args.statsToUpdate[key];\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'nbsuj':\r\n\t\t\t\t\t\t\t\tcurrentStatEpr.nombre.desujet\t\t\t= datas.args.statsToUpdate[key];\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.workspaceData.setEpreuveHomeAdmin(currentStatEpr.id, currentStatEpr);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'task')\r\n\t\t{\r\n\t\t\tif (datas.args&& datas.args.objResult && datas.args.objResult.task)\r\n\t\t\t{\r\n\t\t\t\tthis._updateTasksFromDatas(datas.args.objResult.task);\r\n\t\t\t}\r\n\r\n\t\t\tif (datas.args.message && datas.args.message.key && datas.args.message.bucket)\r\n\t\t\t{\r\n\t\t\t\tlet messageAdded = this.workspaceData.parseHistoric(datas.args.message);\r\n\t\t\t\tthis.workspaceData.addHistoricToElement(datas.args.message.key, messageAdded);\r\n\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', datas.args.message.key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'nodeDeleted')\r\n\t\t{\r\n\r\n\t\t\tif (datas.args && datas.args.deletedNode)\r\n\t\t\t{\r\n\t\t\t\tlet nodeToRemove = datas.args.deletedNode;\r\n\r\n\t\t\t\tif (nodeToRemove.id && nodeToRemove.type && nodeToRemove.idparents)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst strucParents = this.workspaceData.removeNode(nodeToRemove.id, nodeToRemove.type, nodeToRemove.idparents);\r\n\t\t\t\t\t// Si l'élément supprimé est selectionné, on le déselectionne et on sélectionne son parent si il en possède un\r\n\r\n\t\t\t\t\tif (this.workspaceData.selectedElement.id === nodeToRemove.id)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet parentToSelect;\r\n\t\t\t\t\t\tswitch(nodeToRemove.type)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'etablissement':\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedElement \t\t\t\t= undefined;\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedEtablissement \t\t= undefined;\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedHomeEtablissement\t= undefined;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'session':\r\n\t\t\t\t\t\t\t\tparentToSelect = this.workspaceData.getEtablissement(strucParents.etab);\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedSession = undefined;\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedHomeSession = undefined;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'examen':\r\n\t\t\t\t\t\t\t\tparentToSelect = this.workspaceData.getSession(strucParents.session);\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedExamen = undefined;\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedHomeExamen = undefined;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'epreuve':\r\n\t\t\t\t\t\t\t\tparentToSelect = this.workspaceData.getExamen(strucParents.examen);\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedMatiere = undefined;\r\n\t\t\t\t\t\t\t\tthis.workspaceData.selectedHomeMatiere = undefined;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (parentToSelect)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.globalEmitter.emit(['node::updateTree', parentToSelect]);\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'userCodeMachine')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.idUser && datas.args.codeMachine)\r\n\t\t\t{\r\n\t\t\t\tconst currentUser = this.userData.getUser(datas.args.idUser);\r\n\r\n\t\t\t\tif (currentUser && currentUser.privates && currentUser.privates.fp)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet fp = currentUser.privates.fp;\r\n\t\t\t\t\tif (typeof fp === 'string')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfp = JSON.parse(fp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfp.code = datas.args.codeMachine;\r\n\t\t\t\t\tcurrentUser.privates.fp = fp;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (currentUser)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcurrentUser.privates =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfp: {\r\n\t\t\t\t\t\t\t\tcode: datas.args.codeMachine\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.userData.addUser(currentUser, currentUser.mail);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'userRsaPublicKey')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.compte && datas.args.idUser && datas.args.publicKey)\r\n\t\t\t{\r\n\t\t\t\t// On enregistre en local la clé rsa publique de l'utilisateur concerné et on affiche une notification\r\n\t\t\t\t// indiquant que l'utilisateur s'est connecté pour la première fois\r\n\t\t\t\tlet currentUserId = this.userData.getUserId();\r\n\r\n\t\t\t\tif (currentUserId !== datas.args.idUser)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet currentUser = this.userData.getUser(datas.args.idUser);\r\n\t\t\t\t\tcurrentUser.publics.rsaPublicKey = datas.args.publicKey;\r\n\t\t\t\t\tthis.userData.globalEmitter.emit(['user::update']);\r\n\t\t\t\t\tthis.showNotification(\"Compte \" + currentUser.mail + \": première connection.\", '');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gestion des sujets transmis par socket et enregistrement de ces sujets dans la structure user-data\r\n\t * @param jsonSujets\r\n\t */\r\n\tpublic _addSubjectToUserDatas(jsonSujets: any[])\r\n\t{\r\n\t\tconst subjectsAdded = this.workspaceData._addSubjectFromJSON(jsonSujets);\r\n\r\n\t\tfor (const subj of subjectsAdded)\r\n\t\t{\r\n\t\t\tthis.sujetService.listenSubjectChannel(subj);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedUsers(data: any)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedDebug(data: any)\r\n\t{\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedError(data: any)\r\n\t{\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedCreate(data: any)\r\n\t{\r\n\t\tif (data)\r\n\t\t{\r\n\t\t\tif (data.cmd === 'bareme')\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.data && data.args.data.baremeAdded)\r\n\t\t\t\t{\r\n\t\t\t\t\t// this.showNotification('Nouveau jeu de résultat', '');\r\n\t\t\t\t\t// this.vaultData.vaultEmitter.emit(['results::read', data.args.data.result]);\r\n\t\t\t\t\tthis.baremeData.addBareme(data.args.data.baremeAdded);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet userForInvite = this.userData.userForChatInvite;\r\n\t\t\tif (data.cmd === 'room.addp' && !data.args.err)\r\n\t\t\t{\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (data.cmd === 'room' && userForInvite !== null && !data.args.err && userForInvite.mail !== this.userData.getUserId() )\r\n\t\t\t{\r\n\r\n\t\t\t\tlet roomId\t= data.args.data.room.uuid;\r\n\t\t\t\tlet room\t= data.args.data.room;\r\n\r\n\t\t\t\tlet oRoom = Piece.fromJsonObject(room);\r\n\t\t\t\tthis.chatData.addRooms(oRoom, roomId);\r\n\t\t\t\tthis.setRoomForCreate(data);\r\n\t//\t\t\tthis.chatData.setSelectedRoomBy(roomId);\r\n\r\n\r\n\t\t\t\t// Construction de la cdc pour avoir les retours de messages pour chaques rooms\r\n\t\t\t\tlet roomState = '::priv';\r\n\t\t\t\tlet roomReadOnly = '';\r\n\r\n\t\t\t\tif (room.isPublic)\r\n\t\t\t\t{\r\n\t\t\t\t\troomState = '::pub';\r\n\t\t\t\t}\r\n\t\t\t\tif (room.isReadOnly)\r\n\t\t\t\t{\r\n\t\t\t\t\troomReadOnly = '::' + room.owner;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet roomId2 = this.socketService.findRoomAGerer(name);\r\n\t\t\t\tlet roomName = '*room::' + room.uuid + roomState + roomReadOnly;\r\n\r\n\t\t\t\tif (roomId2 === -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.socketService.roomsAGerer.push({ name: roomName, state: 'nosub', watch: true, fct: this.newMessageReceived.bind(this, roomName), channel: undefined });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t\t\t'name': localStorage.getItem('userid'),\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd': 'room.addp',\r\n\t\t\t\t\t\t\t\t'args': { 'chan': '*room::' + roomId, 'list': '*user::' + userForInvite.mail }\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tsocket.emit('create', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.userData.globalEmitter.emit(['notify2', roomId]);\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// TODO => remplacer\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': localStorage.getItem('userid'),\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd': 'rooms',\r\n\t\t\t\t\t\t\t\t'args': { mail: '' }\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'subject')\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.data && data.args.data.result && data.args.data.result.subject)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet newSubject = data.args.data.result.subject;\r\n\t\t\t\t\tthis._addSubjectToUserDatas([newSubject]);\r\n\t\t\t\t\tthis.userData.globalEmitter.emit('subject::get');\r\n\r\n\t\t\t\t\tlet subjectToAdd: Sujet = Sujet.fromJsonObject(newSubject);\r\n\r\n\t\t\t\t\t//On récupère l'épreuve correspondante\r\n\t\t\t\t\tlet epreuve = this.workspaceData.getEpreuve(subjectToAdd.idMatiere);\r\n\r\n\t\t\t\t\tif (epreuve)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.selectedSujet = subjectToAdd;\r\n\t\t\t\t\t\tthis.workspaceData.globalEmitter2.emit(epreuve.id);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//Si la nouvelle épreuve contient une première tache crée automatiquement, on l'ajoute\r\n\t\t\t\t\t//aux taches existantes\r\n\t\t\t\t\tif (data.args.data.result.firstTask && data.args.data.result.firstTask.task)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.setTasksBySubject([data.args.data.result.firstTask.task]);\r\n\t\t\t\t\t\tthis.taskData.addTasks([data.args.data.result.firstTask.task]);\r\n\r\n\t\t\t\t\t\tif (data.args.data.result.firstTask.dates)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfor (let date of data.args.data.result.firstTask.dates)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.userData.addCalendarElement(date.id, date);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.userData.globalEmitter.emit('calendar:newDate');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'newkey')\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.data)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.sujetKey = data.args.data.keyType + '#' + data.args.data.val;\r\n\t\t\t\t\tthis.userData.globalEmitter.emit('subject::getKey');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'task')\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.data && data.args.data.result && data.args.data.result.task)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (data.args.data.result.dates)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let date of data.args.data.result.dates)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.addCalendarElement(date.id, date);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.userData.globalEmitter.emit('calendar:newDate');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.workspaceData.setTasksBySubject([data.args.data.result.task]);\r\n\t\t\t\t\tthis.showNotification('Nouvelle tâche', '');\r\n\r\n\t\t\t\t\t\t\t\t\tlet tatta = false;\r\n\t\t\t\t\t\t\t\t\tif(data.idc && data.idc === 'true')\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttatta = true;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\tthis.taskData.addTasks([data.args.data.result.task], tatta);\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'createOTP')\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.data && data.args.data.result && data.args.data.result.otpval)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet valOtpCode = data.args.data.result.otpval;\r\n\t\t\t\t\tthis.userData.globalEmitter.emit(['OTP:newCode', valOtpCode]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'validateOtp')\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.data && data.args.data.result && data.args.data.result.mail && data.args.data.result.method)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet accountInfos = this.userData.getAccountInfo();\r\n\r\n\t\t\t\t\tif (accountInfos.infosUser.mail === data.args.data.result.mail)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.methodAuth = Number(data.args.data.result.method);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.userData.globalEmitter.emit('OTP:codeValidated');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (data.cmd === 'password')\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.data && data.args.data.result)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.globalEmitter.emit(['user::newPassword', data.args.data.result]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'checkUserFingerprint')\r\n\t\t\t{\r\n\t\t\t\tif (data.args && data.args.data && data.args.data.result && data.args.data.result.fingerPrint)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (data.args.data.result.mustValidMachine === false || data.args.data.result.rsaGenerated === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.mustValidateBrowser = false;\r\n\t\t\t\t\t\tif (data.args.data.result.mustGenerateRsa === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// On génère en local les clé RSA privé et public, on envoie la clé publique au serveur\r\n\t\t\t\t\t\t\t// et on stocke la clé privé en local\r\n\t\t\t\t\t\t\tthis.encryptService.generateRsaKeyPair().then(resultRsa =>\r\n\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\tif (resultRsa && resultRsa.privateKey && resultRsa.publicKey)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.userData.setRSAPrivate(resultRsa.privateKey);\r\n\t\t\t\t\t\t\t\t\tthis.encryptService.sendRsaPublic(resultRsa.publicKey);\r\n\r\n\t\t\t\t\t\t\t\t\tlet dialogRefDownloadRsa = this.dialog.open(DownloadRsaModalComponent,\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\theight:\t\t\t'250px',\r\n\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_mini_modal',\r\n\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'600px',\r\n\t\t\t\t\t\t\t\t\t\tdata:\t\t\t{},\r\n\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tdialogRefDownloadRsa.afterClosed().subscribe((resultWarning: any) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis._otpAuthentification();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet currentRsaPrivate = this.userData.getRSAPrivate();\r\n\r\n\t\t\t\t\t\t\tif (currentRsaPrivate)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.checkCurrentRsaKey();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet dialogRefWarningRsa = this.dialog.open(WarningRsaModalComponent,\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\theight:\t\t\t'210px',\r\n\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_mini_modal',\r\n\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'600px',\r\n\t\t\t\t\t\t\t\t\t\tdata:\t\t\t{},\r\n\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tdialogRefWarningRsa.afterClosed().subscribe((resultWarning: any) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis._otpAuthentification();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.mustValidateBrowser = true;\r\n\t\t\t\t\t\t// On doit valider le code numérique envoyer par mail et valider la machine\r\n\t\t\t\t\t\tlet dialogRefValidMachine = this.dialog.open(ConnectNewMachineModalComponent,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\theight:\t\t'300px',\r\n\t\t\t\t\t\t\t\tpanelClass: 'responsive_mini_modal',\r\n\t\t\t\t\t\t\t\twidth:\t\t'600px',\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfingerprint: data.args.data.result.fingerPrint\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tdisableClose: true\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tdialogRefValidMachine.afterClosed().subscribe((result: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (result && result === true)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.userData.mustValidateBrowser = false;\r\n\r\n\t\t\t\t\t\t\t\tlet currentRsaPrivate = this.userData.getRSAPrivate();\r\n\r\n\t\t\t\t\t\t\t\tif (currentRsaPrivate)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.checkCurrentRsaKey();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet dialogRefWarningRsa = this.dialog.open(WarningRsaModalComponent,\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\theight:\t\t\t'210px',\r\n\t\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_mini_modal',\r\n\t\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'600px',\r\n\t\t\t\t\t\t\t\t\t\t\tdata:\t\t\t{},\r\n\t\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tdialogRefWarningRsa.afterClosed().subscribe((resultWarning: any) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis._otpAuthentification();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.userData.logout();\r\n\t\t\t\t\t\t\t\tthis.socketService.logout();\r\n\t\t\t\t\t\t\t\tthis.socketVaultService.logout();\r\n\t\t\t\t\t\t\t\tthis.taskData.initTasks();\r\n\t\t\t\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\t\t\t\tthis.isConnected = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.logout();\r\n\t\t\t\t\tthis.socketService.logout();\r\n\t\t\t\t\tthis.socketVaultService.logout();\r\n\t\t\t\t\tthis.taskData.initTasks();\r\n\t\t\t\t\tthis.router.navigate(['/login']);\r\n\t\t\t\t\tthis.isConnected = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'generateNewCodeMachine')\r\n\t\t\t{\r\n\t\t\t\tthis.userData.globalEmitter.emit('machineCode:new');\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'checkOtp')\r\n\t\t\t{\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'candidats')\r\n\t\t\t{\r\n\t\t\t\t// On ajoute au modele les candidats créés\r\n\t\t\t\tif (data.args && data.args.data && data.args.data.candidats)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor(let candidat of data.args.data.candidats)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (candidat.idparents && candidat.idparents.length > 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfor(let idparent of candidat.idparents)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// this.vaultData.addCandidatByElement(idparent, candidat);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.vaultData.vaultEmitter.emit('candidats::create');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'passation')\r\n\t\t\t{\r\n\t\t\t\tif (data.args\r\n\t\t\t\t\t&& data.args.data\r\n\t\t\t\t\t&& data.args.data.passationAdded)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet passationAdded = data.args.data.passationAdded;\r\n\t\t\t\t\tpassationAdded.candidats = [];\r\n\t\t\t\t\tthis.vaultData.addConcours(passationAdded);\r\n\r\n\t\t\t\t\tthis.showNotification('Nouvelle passation créée', '');\r\n\r\n\t\t\t\t\tthis.vaultData.vaultEmitter.emit('passation::create');\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (data.cmd === 'userFileKey')\r\n\t\t\t{\r\n\t\t\t\tif (data.args\r\n\t\t\t\t\t&& data.args.data\r\n\t\t\t\t\t&& data.args.data.fileId)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.globalEmitter.emit(['userFileKey', data.args.data.fileId]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Retourne true si une chaine str commence par la sous-chaine word\r\n\t * @param str\r\n\t * @param word\r\n\t */\r\n\tpublic startsWith(str: any, word: any)\r\n\t{\r\n\t\treturn str.lastIndexOf(word, 0) === 0;\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedUpdate(data: any)\r\n\t{\r\n\t\tif (data.cmd === 'file' && data.args.data && data.args.data.result && data.args.data.result.file)\r\n\t\t{\r\n\t\t\tlet fileUpdate = FileSubject.fromJsonObject(data.args.data.result.file);\r\n\r\n\t\t\tthis.workspaceData.addFile(fileUpdate.idSubject, fileUpdate);\r\n\t\t\tthis.workspaceData.globalEmitter2.emit(fileUpdate.idSubject);\r\n\t\t}\r\n\r\n\r\n\t\tif (data.cmd === 'task')\r\n\t\t{ \r\n\t\t\tif (data && data.args && data.args.data && data.args.data.result && data.args.data.result.task)\r\n\t\t\t{\r\n\t\t\t\tif (data.args.data.result.dates)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let date of data.args.data.result.dates)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.addCalendarElement(date.id, date);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.userData.globalEmitter.emit('calendar:newDate');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (data.args.data.result.datesToRemove)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let date of data.args.data.result.datesToRemove)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.removeCalendarElement(date);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.userData.globalEmitter.emit('calendar:newDate');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (data.args.data.result.subject)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// enregistrement des sujets à la bonne place dans workspaceData\r\n\t\t\t\t\t\tthis.workspaceData._addSubjectFromJSON([data.args.data.result.subject]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._updateTasksFromDatas(data.args.data.result.task);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (data.cmd === 'user')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.datasUpdated && data.args.data.userId)\r\n\t\t\t{\r\n\t\t\t\tlet accountInfos = this.userData.getAccountInfo();\r\n\r\n\t\t\t\t//S'il s'agit de l'utilisateur courant on met à jour les infos dans user data\r\n\t\t\t\tif (accountInfos.infosUser.mail === data.args.data.userId)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (data.args.data.datasUpdated.infos)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taccountInfos.infosUser.infos = data.args.data.datasUpdated.infos;\r\n\r\n\t\t\t\t\t\tif (accountInfos.infosUser.infos.nom)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.firstName = accountInfos.infosUser.infos.nom;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (accountInfos.infosUser.infos.prenom)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.lastName = accountInfos.infosUser.infos.prenom;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (accountInfos.infosUser.infos.color)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.color = accountInfos.infosUser.infos.color;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (data.args.data.datasUpdated.publics)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taccountInfos.infosUser.publics = data.args.data.datasUpdated.publics;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.userData.setAccountInfo(accountInfos);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t//Sinon on retourve l'utilisateur concerné et on le met à jour\r\n\t\t\t\t\tdata.args.data.datasUpdated.mail\t= data.args.data.userId;\r\n\t\t\t\t\tdata.args.data.datasUpdated.userId\t= data.args.data.userId;\r\n\r\n\t\t\t\t\tif (data.args.data.datasUpdated.infos && data.args.data.datasUpdated.infos.nom && data.args.data.datasUpdated.infos.prenom)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdata.args.data.datasUpdated.completeName = data.args.data.datasUpdated.infos.nom + ' ' + data.args.data.datasUpdated.infos.prenom;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.userData.addUser(data.args.data.datasUpdated, data.args.data.userId);\r\n\t\t\t\t\tthis.userData.globalEmitter.emit(['user::add', data.args.data.datasUpdated]);\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'updateUserPassword')\r\n\t\t{\r\n\t\t\tthis.userData.globalEmitter.emit('user::passwordUpdated');\r\n\t\t}\r\n\r\n\r\n\t\tif (data.cmd === 'changeOtpMethod')\r\n\t\t{\r\n\t\t\t// Si le changement de méthode de connexion concerne l'utilisateur cournat on met à jour\r\n\t\t\t// ses informations\r\n\t\t\tif (data.args && data.args.data && data.args.data.result && data.args.data.result.mail && data.args.data.result.method)\r\n\t\t\t{\r\n\t\t\t\tlet accountInfos = this.userData.getAccountInfo();\r\n\t\t\t\tif (accountInfos.infosUser.mail === data.args.data.result.mail)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.methodAuth = Number(data.args.data.result.method);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.userData.globalEmitter.emit('user::newAuthMethod');\r\n\t\t}\r\n\r\n\r\n\t\tif (data.cmd === 'checkCodeNewMachine')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.result && data.args.data.result === true)\r\n\t\t\t{\r\n\t\t\t\tthis.userData.globalEmitter.emit('FP::machineValidated');\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.userData.globalEmitter.emit('FP::machineUnvalidated');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (data.cmd === 'adminParameters')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.result)\r\n\t\t\t{\r\n\t\t\t\tlet result: any = data.args.data.result;\r\n\r\n\t\t\t\tif (result['@admin'])\t\t\t\tthis.adminData.generalParameters.mailAdmin\t\t\t= result['@admin'];\r\n\t\t\t\tif (result['@sys'])\t\t\t\t\tthis.adminData.generalParameters.mailSystem\t\t\t= result['@sys'];\r\n\t\t\t\tif (result['domaine'])\t\t\t\tthis.adminData.generalParameters.domain\t\t\t\t= result['domaine'];\r\n\t\t\t\tif (result['hostmailserver'])\t\tthis.adminData.generalParameters.hostMailServer \t= result['hostmailserver'];\r\n\t\t\t\tif (result['loginaccount'])\t\t\tthis.adminData.generalParameters.loginAccount\t\t= result['loginaccount'];\r\n\t\t\t\tif (result['passwdaccount'])\t\tthis.adminData.generalParameters.passwdAccount\t\t= result['passwdaccount'];\r\n\t\t\t\tif (result['portmailserver'])\t\tthis.adminData.generalParameters.portMailServer \t= result['portmailserver'];\r\n\t\t\t\tif (result['secure'])\t\t\t\tthis.adminData.generalParameters.secure\t\t\t\t= result['secure'];\r\n\t\t\t\tif (result['typemailserver'])\t\tthis.adminData.generalParameters.typeMailServer \t= result['typemailserver'];\r\n\t\t\t\tif (result['useaccount'])\t\t\tthis.adminData.generalParameters.useAccount\t\t\t= result['useaccount'];\r\n\t\t\t\tif (result['numericEnabled'])\t\tthis.adminData.generalParameters.numericEnabled\t\t= result['numericEnabled'];\r\n\t\t\t\tif (result['specialTimeEnabled'])\tthis.adminData.generalParameters.specialTimeEnabled\t= result['specialTimeEnabled'];\r\n\t\t\t//\tif (result['specialTimeArray'])\t\tthis.adminData.generalParameters.specialTimeArray\t\t= result['specialTimeArray'];\r\n\r\n\t\t\t\tthis.adminData.generalParameters.specialTimeArray = [];\r\n\t\t\t\tif (result['specialTimeEnabled'])\r\n\t\t\t\t{\r\n\t\t\t\t\tconst jsonSpecialTimeArray = JSON.parse(result['specialTimeArray']);\r\n\t\t\t\t\tfor (const jsonSpecialTime of jsonSpecialTimeArray)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.adminData.generalParameters.specialTimeArray.push(SpecialTime.fromJsonObject(jsonSpecialTime));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif (result['scenarios'])\r\n\t\t\t\t{\r\n\t\t\t\t\tlet scenariosObj: any = result['scenarios'];\r\n\r\n\t\t\t\t\tif (typeof scenariosObj === 'string')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tscenariosObj = JSON.parse(scenariosObj);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.adminData.scenariosAvailable = scenariosObj;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.adminData.adminEmitter.emit('admin::parameters::update');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'userAccess')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.user && data.args.data.enable !== undefined)\r\n\t\t\t{\r\n\t\t\t\tlet user\t\t= this.userData.getUser(data.args.data.user);\r\n\t\t\t\tuser.enabled\t= data.args.data.enable;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'passation')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.datasUpdated && data.args.data.passationId)\r\n\t\t\t{\r\n\t\t\t\t// Mise à jours du bareme\r\n\t\t\t\tthis.vaultData.updateNode(data.args.data.passationId, data.args.data.datasUpdated);\r\n\r\n\t\t\t\tconst currentPassation = this.vaultData.getNodeById(data.args.data.passationId);\r\n\r\n\t\t\t\tif (currentPassation && currentPassation.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet canditatsError: any = [];\r\n\t\t\t\t\tif (data.args.data.candidatsError)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcanditatsError = data.args.data.candidatsError;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.vaultData.vaultEmitter.emit(['passation::update', currentPassation, canditatsError]);\r\n\t\t\t\t\tthis.showNotification('Nouvelle passation mise à jour', '');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n//TestUPEC-09-06-2021-01\r\n\r\n\t\tif (data.cmd === 'bareme')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.datasUpdated && data.args.data.datasUpdated.datas && data.args.data.baremeId)\r\n\t\t\t{\r\n\t\t\t\tthis.baremeData.updateBaremeDatasById(data.args.data.baremeId, data.args.data.datasUpdated);\r\n//\t\t\t\tthis.showNotification('Nouvelle passation mise à jour 1', '');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'sendPassation')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.idPassation && data.args.data.subjects)\r\n\t\t\t{\r\n\t\t\t\tlet passationId = data.args.data.idPassation;\r\n\r\n\t\t\t\tif (passationId)\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tif (data.args.data.subjects)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet subjectsPass: any = {};\r\n\r\n\t\t\t\t\t\tfor (let subject of data.args.data.subjects)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsubjectsPass[subject.idSubject] = subject.passwordUser;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet datasToUpdate: any =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpasswordSubjects:\tsubjectsPass,\r\n\t\t\t\t\t\t\t\tdatePassationSend:\tdata.args.data.datePassationSend,\r\n\t\t\t\t\t\t\t\tpassationSend:\t\tdata.args.data.isPassationSend,\r\n\t\t\t\t\t\t\t\tmustUpdate:\t\t\tdata.args.data.mustUpdate\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tthis.vaultData.updateNode(passationId, datasToUpdate);\r\n\r\n\t\t\t\t\t\tthis.showNotification('Passation synchronisée sur Vault', '');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'adminMailsTemplates')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.result)\r\n\t\t\t{\r\n\t\t\t\tthis.showNotification('Modèles de mails mis à jour', '');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedDelete(data: any)\r\n\t{\r\n\t\tif (data.cmd === 'deleteRsaKeyUser')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.data && data.args.data.idUser)\r\n\t\t\t{\r\n\t\t\t\tconst currentUser = this.userData.getUser(data.args.data.idUser);\r\n\r\n\t\t\t\tif (currentUser)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet dialogRef = this.dialog.open(InfoResetRsaModalComponent,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theight:\t\t\t'40%',\r\n\t\t\t\t\t\twidth:\t\t\t'50%',\r\n\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'user': currentUser,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'deleteScenario')\r\n\t\t{\r\n\t\t\tif (data && data.args && data.args.data)\r\n\t\t\t{\r\n\t\t\t\tthis.adminData.adminEmitter.emit(['admin::scenario::delete', data.args.data]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedAccountUpdates(data: any)\r\n\t{\r\n\t\tif (data.cmd === 'user')\r\n\t\t{\r\n\t\t\tlet newUser = data.args;\r\n\t\t\tthis.userData.addUser(newUser, newUser.mail);\r\n\t\t\tthis.userData.globalEmitter.emit(['user::update']);\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'deleteUser'\r\n\t\t\t&& data.args && data.args && data.args.userMail)\r\n\t\t{\r\n\t\t\tthis.userData.removeUser(data.args.userMail);\r\n\t\t\tthis.userData.globalEmitter.emit('user::remove');\r\n\t\t\tthis.showNotification('L\\'utilisateur ' + data.args.userMail + ' a été supprimé.', '');\r\n\r\n\t\t\tif (data.args.tasksUnassigned)\r\n\t\t\t{\r\n\t\t\t\tfor (const task of data.args.tasksUnassigned)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet oTask\t= Task.fromJsonObject(task);\r\n\t\t\t\t\toTask\t\t= this.taskData.buildTask(oTask);\r\n\r\n\t\t\t\t\toTask.assigneduser \t= '';\r\n\t\t\t\t\toTask.state \t\t= 'new';\r\n\t\t\t\t\toTask.stateLib \t\t= 'Non assigné';\r\n\r\n\t\t\t\t\tthis.taskData.setGlobalTask(oTask.id, oTask);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'state')\r\n\t\t{\r\n\t\t\tif (data.args.state === 'offline' && data.args.userName === this.userData.getUserId())\r\n\t\t\t{\r\n\t\t\t\tlet etatc = 'imhere';\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// \"authToken\":\tthis.userToken,\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t'cmd': 'state',\r\n\t\t\t\t\t\t\t\t'args': { 'state': etatc }\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tsocket.emit('update', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.chatData.setUserState(data.args.state, data.args.userName);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedUser(data: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Cas de la reception d'une invitation\r\n\t\t// ---------------------------------------\r\n\t\tif (data.cmd === 'room.addp')\r\n\t\t{\r\n\t\t\tlet sUserId = this.userData.getUserId();\r\n\r\n\t\t\tlet who = data.args.who;\r\n\t\t\tlet chanRoom = data.args.chan;\r\n\r\n\t\t\t// Suis-je la personne invité ?\r\n\t\t\tthis.userData.idNewRoom = chanRoom;\r\n\r\n\t\t\tif (who === '*user::' + sUserId)\r\n\t\t\t{\r\n\t\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd': 'room',\r\n\t\t\t\t\t\t\t\t'idc': chanRoom,\r\n\t\t\t\t\t\t\t\t'args': { chan: chanRoom }\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'file')\r\n\t\t{\r\n\t\t\tif (data.args\r\n\t\t\t\t&& data.args.file)\r\n\t\t\t{\r\n\t\t\t\tlet fileObj = FileSubject.fromJsonObject(data.args.file);\r\n\r\n\t\t\t\tif (data.args.encodedRsaKey)\r\n\t\t\t\t{\r\n\t\t\t\t\tfileObj.encryptedAesKeys = [data.args.encodedRsaKey];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.workspaceData.addFile(fileObj.idSubject, fileObj);\r\n\t\t\t\tthis.workspaceData.globalEmitter2.emit(fileObj.idSubject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Suppression des taches\r\n\t\t// On vérifie si la tache reçu est dans ma liste de tache et si la nouvelle affectation est pas pour moi\r\n\t\t// ---------------------------------------------------------\r\n\t\tif (data.cmd === 'deletetask')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.task)\r\n\t\t\t{\r\n\t\t\t\tlet taskToDelete = Task.fromJsonObject(data.args.task);\r\n\t\t\t\t// On supprime la taches des taches globales\r\n\r\n\t\t\t\tlet tasks: any[] \t\t= this.workspaceData.globalTask;\r\n\t\t\t\tlet keysTasks: any[] \t= [];\r\n\t\t\t\tlet indexToDelete\t\t= -1;\r\n\r\n\t\t\t\ttasks = _.filter(tasks,(task: any) => { return taskToDelete.id !== task.id });\r\n\t\t\t\tthis.workspaceData.globalTask = tasks;\r\n\r\n\t\t\t\tkeysTasks \t\t= Object.keys(this.workspaceData.taskHomeAdminExpired);\r\n\t\t\t\tindexToDelete \t= keysTasks.findIndex(val => { return val === taskToDelete.id });\r\n\t\t\t\tthis.workspaceData.removeTaskExpired(indexToDelete);\r\n\r\n\t\t\t\tkeysTasks \t\t= Object.keys(this.workspaceData.taskHomeMine);\r\n\t\t\t\tindexToDelete \t= keysTasks.findIndex(val => { return val === taskToDelete.id });\r\n\t\t\t\tthis.workspaceData.removeTaskToMine(indexToDelete);\r\n\r\n\r\n\t\t\t\tkeysTasks \t\t= Object.keys(this.workspaceData.taskHomeAdminToValid);\r\n\t\t\t\tindexToDelete \t= keysTasks.findIndex(val => { return val === taskToDelete.id });\r\n\t\t\t\tthis.workspaceData.removeTaskToValid(indexToDelete);\r\n\r\n\t\t\t\tif (this.workspaceData.selectedTask && this.workspaceData.selectedTask.id === taskToDelete.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.selectedTask = undefined;\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t/**Supression des taches */\r\n\r\n\r\n\t\t\t\tthis.taskData.globalTaskDatas = this.taskData.globalTaskDatas.filter(task =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (taskToDelete.id !== task.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//return tasksToRemove.includes(task.id);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.taskData.taskDatas = this.taskData.taskDatas.filter(task =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (taskToDelete.id !== task.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//return tasksToRemove.includes(task.id);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tkeysTasks \t\t= Object.keys(this.workspaceData.taskHomeAdminToValid);\r\n\t\t\t\tindexToDelete \t= keysTasks.findIndex(val => { return val === taskToDelete.id });\r\n\t\t\t\tthis.workspaceData.removeTaskToValid(indexToDelete);\r\n\r\n\t\t\t\tif (this.workspaceData.selectedTask && this.workspaceData.selectedTask.id === taskToDelete.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.workspaceData.selectedTask = undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (taskToDelete.idSujet && taskToDelete.idEpreuve)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst epreuve = this.workspaceData.getEpreuve(taskToDelete.idEpreuve);\r\n\r\n\t\t\t\t\tif (epreuve && epreuve.sujets)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tepreuve.sujets = _.filter(epreuve.sujets,(sujet: any) => { return sujet.id !== taskToDelete.idSujet; });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (epreuve && epreuve.tasks)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tepreuve.tasks = _.filter(epreuve.tasks,(task: any) => { return task.id !== taskToDelete.id; });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet statsToClean2 = this.workspaceData.statsNode2;\r\n\t\t\t\t\tstatsToClean2 = _.filter(statsToClean2,(stat: any) => { return stat.idTask !== taskToDelete.id; });\r\n\t\t\t\t\tthis.workspaceData.statsNode2 = statsToClean2;\r\n\r\n\t\t\t\t\tlet statsToClean = this.workspaceData.statsNode;\r\n\t\t\t\t\tstatsToClean = _.filter(statsToClean,(stat: any) => { return stat.idTask !== taskToDelete.id; });\r\n\t\t\t\t\tthis.workspaceData.statsNode = statsToClean;\r\n\r\n\t\t\t\t\tthis.workspaceData.globalEmitter.emit('majStatsEpr');\r\n\t\t\t\t\tthis.workspaceData.globalEmitter.emit(['deleteTask', taskToDelete]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'task')\r\n\t\t{\r\n\t\t\tif (data.args)\r\n\t\t\t{\r\n\t\t\t\tif (data.args.task)\r\n\t\t\t\t{\r\n\t\t\t\t\t/**\r\n\t\t\t\t\t * Si la tache récupérée implique des resssources que l'on ne possède pas on les récupère\r\n\t\t\t\t\t */\r\n\t\t\t\t\tif (data.args.task.idepreuve)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet epreuve = this.workspaceData.getEpreuve(data.args.task.idepreuve);\r\n\t\t\t\t\t\tlet sUserId\t= this.userData.getUserId();\r\n\r\n\t\t\t\t\t\tif (epreuve === undefined)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t\t\t\t'cmd': 'ressources',\r\n\t\t\t\t\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// Si on possède déja les nodes on vérifie si on possède le sujet\r\n\t\t\t\t\t\t\tif (data.args.task.idsujet)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet sujet = this.workspaceData.getSujet(data.args.task.idsujet);\r\n\t\t\t\t\t\t\t\tif (sujet === undefined)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.sujetService.getSujets(data.args.task.idepreuve, data.args.task.idsujet);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t\t\t * On rafraichie les statistiques relatives à l'épreuve de la tache concernée\r\n\t\t\t\t\t\t\t\t */\r\n\t\t\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet onlyMe: boolean = this.userData.isAdmin() === true || this.userData.isSuperviseur() === true ? false : true;\r\n\t\t\t\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet dataSocket: ISocketData =\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t\t\t\t'cmd': 'statSuj',\r\n\t\t\t\t\t\t\t\t\t\t\t'args': { idSuj: data.args.task.idsujet, onlyMe: onlyMe }\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t\tsocket.emit('read', dataSocket);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._updateTasksFromDatas(data.args.task);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (data.args.dates)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let date of data.args.dates)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.addCalendarElement(date.id, date);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.userData.globalEmitter.emit('calendar:newDate');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (data.args.datesToRemove)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let date of data.args.datesToRemove)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.removeCalendarElement(date);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.userData.globalEmitter.emit('calendar:newDate');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'sendPassation')\r\n\t\t{\r\n\t\t\tif (data.args)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.globalEmitter2.emit(['passation:sending', data.args]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (data.cmd === 'passations')\r\n\t\t{\r\n\t\t\tif (data.args && data.args.passations && data.args.passations.length > 0)\r\n\t\t\t{\r\n\t\t\t\tlet passations = data.args.passations;\r\n\r\n\t\t\t\tfor (let passation of passations)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.vaultData.addConcours(passation);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vaultData.vaultEmitter.emit(['passations::get', data.args]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic dataReceivedMessage(data: any)\r\n\t{\r\n\t\tif (data && data.content)\r\n\t\t{\r\n\t\t\tif (data.content === 'account_initializing')\r\n\t\t\t{\r\n\t\t\t\tthis.dialog.open(InfoInitAccountModalComponent,\r\n\t\t\t\t{\r\n\t\t\t\t\theight:\t\t\t'40%',\r\n\t\t\t\t\twidth:\t\t\t'40%',\r\n\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\tdata:\r\n\t\t\t\t\t{}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic openPage()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic userLogged()\r\n\t{\r\n\r\n\t\treturn this.userData.hasLoggedIn();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic disconnect()\r\n\t{\r\n\t\tthis.userData.isAccountSelected = false;\r\n\r\n\t\tthis.userData.logout();\r\n\t\tthis.socketService.logout();\r\n\t\tthis.socketVaultService.logout();\r\n\t\tthis.workspaceData.logout();\r\n\t\tthis.savedData.logout();\r\n\t\tthis.vaultData.logout();\r\n\t\tthis.taskData.initTasks();\r\n\t\tAuthService.stopGestionRooms();\r\n\t\tthis.socketService.init();\r\n\t\tthis.router.navigate(['/login']);\r\n\t\tthis.isConnected = false;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic help()\r\n\t{\r\n\t\tthis.router.navigate(['/help']);\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic openAdminPanel()\r\n\t{\r\n\t\tthis.router.navigate(['/admin']);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic openAccountPanel()\r\n\t{\r\n\t\tlet dialogRef = this.dialog.open(UserModalComponent,\r\n\t\t\t{\r\n\t\t\t\theight:\t\t\t'80%',\r\n\t\t\t\twidth:\t\t\t'65%',\r\n\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\t'edition': true,\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Active le footer après la connexion\r\n\t */\r\n\tpublic activateMenu()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\r\n\t\tlet isLogged = this.userData.hasLoggedIn();\r\n\t\tif (isLogged === true && this.inLoginPanel === false)\r\n\t\t{\r\n\t\t\tthis.showMenu = true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.showMenu = false;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Lecture des rôles recus et affectation du status correspondant\r\n\t *\r\n\t * @param roles\r\n\t */\r\n\tpublic handleRolesReceived(roles: any)\r\n\t{\r\n\t\tlet rolesReturned:\tstring[] = [];\r\n\t\tlet partsSplit:\t\tstring[];\r\n\r\n\t\tfor (let role of roles)\r\n\t\t{\r\n\t\t\tpartsSplit = role.split('::');\r\n\t\t\tif (partsSplit.length > 1)\r\n\t\t\t{\r\n\t\t\t\trolesReturned.push(partsSplit[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (_.indexOf(rolesReturned, '*super') !== -1)\r\n\t\t{\r\n\t\t\tthis.userData.status = UserData.STATUS_SUPERVISEUR;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (_.indexOf(rolesReturned, '*resp') !== -1)\r\n\t\t\t{\r\n\t\t\t\tthis.userData.status = UserData.STATUS_RESPONSABLE;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (_.indexOf(rolesReturned, '*admin') !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.status = UserData.STATUS_ADMIN;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userData.status = UserData.STATUS_USER;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.userData.globalEmitter.emit('role::get');\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Vérification sur serveur de la clé RSA courante\r\n\t * Si la clé RSA courante n'est pas valide, on efface la clé RSA courante du navigateur\r\n\t * et on affiche un message d'avertissement pour l'utilisateur\r\n\t */\r\n\tpublic checkCurrentRsaKey()\r\n\t{\r\n\t\tlet date\t\t= new Date();\r\n\t\tlet bucketDate\t= date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate();\r\n\t\tlet encryptStr\t= this.userData.getUserId() + bucketDate;\r\n\r\n\t\tthis.isCheckingRSAKey = true;\r\n\t\tthis.userService.encryptDatasForValidation(encryptStr);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Apelle la modal de connexion si on pert cette dernière\r\n\t */\r\n\tpublic openModalConnectApplication(callback: (result: any) => any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\r\n\t\tif (!this.userData.dialogRefModalConnection)\r\n\t\t{\r\n\t\t\tthis.userData.dialogRefModalConnection = this.dialog.open(ConnectApplicationModalComponent,\r\n\t\t\t\t{\r\n\t\t\t\t\theight:\t\t\t'50%',\r\n\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\twidth:\t\t\t'60%',\r\n\t\t\t\t\tdata:\t\t\t{},\r\n\t\t\t\t\tdisableClose:\ttrue\r\n\t\t\t\t});\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.userData.dialogRefModalConnection.afterClosed().subscribe((result: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (result !== undefined)\r\n\t\t\t\t{\r\n\t\t\t\t\tcallback(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic reset()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\t// this.idle.watch();\r\n\t\t// this.idleState = 'Started.';\r\n\t\t// this.timedOut = false;\r\n\t}\r\n\r\n\r\n\tpublic initConfigs(): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tif (this.isConfigInitiated === false)\r\n\t\t\t{\r\n\t\t\t\tCreationHttpService.initConfigs(this.http).then(res =>\r\n\t\t\t\t{\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}).catch(err =>\r\n\t\t\t\t{\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tprivate _checkAddBlocker()\r\n\t{\r\n\t\tlet addBlockerEnabled = document.getElementById('adsChecker') === null;\r\n\r\n\t\tif (addBlockerEnabled === true)\r\n\t\t{\r\n\t\t\tlet dialogRefWarningRsa = this.dialog.open(WarningAddBlockerEnabledComponent,\r\n\t\t\t\t{\r\n\t\t\t\t\theight:\t\t'220px',\r\n\t\t\t\t\twidth:\t\t'40%',\r\n\t\t\t\t\tpanelClass: 'responsive_mini_modal',\r\n\t\t\t\t\tdata:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttypeWarning: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdisableClose: true\r\n\t\t\t\t});\r\n\r\n\t\t\tdialogRefWarningRsa.afterClosed().subscribe((resultWarning: any) =>\r\n\t\t\t{\r\n\t\t\t\twindow.location.reload(true);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","/***********************************************\r\n * Angular\r\n ***********************************************/\r\nimport { NgModule, ApplicationRef, Sanitizer }\t\t\t\t\tfrom '@angular/core';\r\nimport { BrowserModule }\t\t\t\t\t\t\t\t\t\tfrom '@angular/platform-browser';\r\nimport { TranslateModule, TranslateLoader } \t\t\t\t\tfrom '@ngx-translate/core';\r\nimport { TranslateHttpLoader } \t\t\t\t\t\t\t\t\tfrom '@ngx-translate/http-loader';\r\nimport { FormsModule, ReactiveFormsModule }\t\t\t\t\t\tfrom '@angular/forms';\r\nimport { HttpModule }\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/http';\r\nimport { HttpClientModule, HttpClient} \t\t\t\t\t\t\tfrom '@angular/common/http';\r\nimport { Routes, RouterModule, PreloadAllModules }\t\t\t\tfrom '@angular/router';\r\nimport { removeNgStyles, createNewHosts, createInputTransfer }\tfrom '@angularclass/hmr';\r\nimport { Http }\t\t\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/http';\r\nimport { CUSTOM_ELEMENTS_SCHEMA }\t\t\t\t\t\t\t\tfrom '@angular/core';\r\nimport { MAT_DATE_LOCALE }\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { LocationStrategy, HashLocationStrategy, CommonModule } from '@angular/common';\r\nimport { DomSanitizer }\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/platform-browser';\r\nimport { AngularDateTimePickerModule } \t\t\t\t\t\t\tfrom 'angular2-datetimepicker';\r\nimport { NotifierModule, NotifierOptions }\t\t\t\t\t\tfrom 'angular-notifier';\r\nimport { ValidateTaskModalComponent }\t\t\t\t\t\t\tfrom './pages/workspace/subject/subject-list/modal/validateTaskModal/validateTaskModal.component';\r\n\r\nimport {VgCoreModule} \t\t\t\t\t\t\t\t\t\t\tfrom 'videogular2/core';\r\nimport {VgControlsModule} \t\t\t\t\t\t\t\t\t\tfrom 'videogular2/controls';\r\nimport {VgOverlayPlayModule} \t\t\t\t\t\t\t\t\tfrom 'videogular2/overlay-play';\r\nimport {VgBufferingModule} \t\t\t\t\t\t\t\t\t\tfrom 'videogular2/buffering';\r\n\r\nimport { ColorPickerModule }\t\t\tfrom 'ngx-color-picker';\r\nimport { CalendarModule, DateAdapter }\tfrom 'angular-calendar';\r\nimport { adapterFactory }\t\t\t\tfrom 'angular-calendar/date-adapters/date-fns';\r\nimport { DragDropModule }\t\t\t\tfrom '@angular/cdk/drag-drop';\r\n\r\nimport { registerLocaleData }\tfrom '@angular/common';\r\nimport localeFr\t\t\t\t\tfrom '@angular/common/locales/fr';\r\nregisterLocaleData(localeFr);\r\nimport {DateAdapter as test } from '@angular/material/core';\r\n\r\n\r\nimport \r\n{\r\n\tMatToolbarModule,\r\n\tMatTableModule,\r\n\tMatExpansionModule,\r\n\tMatButtonModule,\r\n\tMatButtonToggleModule,\r\n\tMatCardModule,\r\n\tMatCheckboxModule,\r\n\tMatSortModule,\r\n\tMatDialogModule,\r\n\tMatIconModule,\r\n\tMatSnackBarModule,\r\n\tMatGridListModule,\r\n\tMatSliderModule,\r\n\tMatTabsModule,\r\n\tMatFormFieldModule,\r\n\tMatListModule,\r\n\tMatMenuModule,\r\n\tMatSlideToggleModule,\r\n\tMatTooltipModule,\r\n\tMatSidenavModule,\r\n\tMatProgressBarModule,\r\n\tMatProgressSpinnerModule,\r\n\tMatRadioModule,\r\n\tMatSelectModule,\r\n\tMatStepperModule,\r\n\tMatDatepickerModule,\r\n\tMatChipsModule,\r\n\tMatAutocompleteModule,\r\n\tMatPaginatorModule,\r\n\tMatInputModule,\r\n} from '@angular/material';\r\n\r\n//import { ClickOutsideModule } from 'ng-click-outside';\r\nimport { PdfViewerModule }\t\t\tfrom 'ng2-pdf-viewer';\r\nimport { MatNativeDateModule }\t\tfrom '@angular/material';\r\nimport { NgxQRCodeModule }\t\t\tfrom 'ngx-qrcode2';\r\nimport { QuillModule }\t\t\t\tfrom 'ngx-quill';\r\n\r\n\r\n\r\n/************************************************\r\n * Platform and Environment providers/directives/pipes/services\r\n ***********************************************/\r\nimport { ENV_PROVIDERS }\t\t\tfrom './environment';\r\nimport { DeviceDetectorModule }\tfrom 'ngx-device-detector';\r\n\r\nimport { ROUTES }\t\t\t\t\t\tfrom './app.routes';\r\nimport { APP_RESOLVER_PROVIDERS }\t\tfrom './app.resolver';\r\nimport { AppState, InternalStateType }\tfrom './app.service';\r\n\r\nimport { CreationHttpService }\tfrom './services/http/creationHttp.service';\r\nimport { SocketService }\t\tfrom './services/socket.service';\r\n\r\nimport { VaultHttpService }\t\tfrom './services/http/vaultHttp.service';\r\nimport { SocketVaultService }\tfrom './services/socketVault.service';\r\n\r\nimport { AuthHttpService }\tfrom './services/http/authHttp.service';\r\nimport { AuthService }\t\tfrom './services/auth.service';\r\n\r\nimport { EtablissementHttpService } from './services/http/etablissementHttp.service';\r\nimport { EtablissementService }\t\tfrom './services/etablissement.service';\r\n\r\nimport { SessionHttpService }\tfrom './services/http/sessionHttp.service';\r\nimport { SessionService }\t\tfrom './services/session.service';\r\n\r\nimport { ExamenHttpService }\tfrom './services/http/examenHttp.service';\r\nimport { ExamenService }\t\tfrom './services/examen.service';\r\n\r\nimport { EpreuveHttpService }\tfrom './services/http/epreuveHttp.service';\r\nimport { EpreuveService }\t\tfrom './services/epreuve.service';\r\n\r\nimport { SujetHttpService } from './services/http/sujetHttp.service';\r\nimport { SujetService }\t\tfrom './services/sujet.service';\r\n\r\nimport { UserHttpService }\tfrom './services/http/userHttp.service';\r\nimport { UserService }\t\tfrom './services/user.service';\r\n\r\nimport { ChatHttpService }\tfrom './services/http/chatHttp.service';\r\nimport { RoomService }\t\tfrom './services/room.service';\r\n\r\nimport { FileService }\t\tfrom './services/file.service';\r\nimport { FileHttpService }\tfrom './services/http/fileHttp.service';\r\n\r\nimport { MessagesService }\t\tfrom './services/messages.service';\r\nimport { StatisticsService }\tfrom './services/statistics.service';\r\nimport { EncryptService }\t\tfrom './services/encrypt.service';\r\n\r\nimport { TaskService as TaskService2 }\tfrom './services/task.service';\r\nimport { AdminService }\t\t\t\t\tfrom './services/admin.service';\r\nimport { TaskHttpService }\t\t\t\tfrom './services/http/taskHttp.service';\r\n\r\nimport { PassationService }\t\tfrom './services/passation.service';\r\nimport { CandidatService }\t\tfrom './services/candidat.service';\r\nimport { BaremeService }\t\tfrom './services/bareme.service';\r\n\r\nimport { EventService } from './services/event.service';\r\n\r\nimport { UserData }\t\t\t\tfrom './providers/user-data';\r\nimport { AdminData }\t\t\tfrom './providers/admin-data';\r\nimport { BaremeData }\t\t\tfrom './providers/bareme-data';\r\nimport { TaskData }\t\t\t\tfrom './providers/task-data';\r\nimport { WorkspaceData }\t\tfrom './providers/workspace-data';\r\nimport { FileData }\t\t\t\tfrom './providers/file-data';\r\nimport { ChatData }\t\t\t\tfrom './providers/chat-data';\r\nimport { SavedData }\t\t\tfrom './providers/saved-data';\r\nimport { VaultData }\t\t\tfrom './providers/vault-data';\r\nimport { WorkspaceDataService } from './providers/workspaceData.service';\r\nimport { Tools }\t\t\t\tfrom './classes/tools';\r\nimport { Page }\t\t\t\t\tfrom './classes/page.class';\r\n\r\nimport { MyDateAdapter }\t\tfrom './classes/dateAdapter';\r\n// import { Fingerprint2 }\t\t\t\t\tfrom 'fingerprintjs2';\r\nimport { SafePipe }\t\t\tfrom './services/safepipe';\r\nimport { TaskService }\t\tfrom './pages/task/services/task.service';\r\nimport { AutoFocus }\t\tfrom './pages/task/directives/autoFocus';\r\nimport { AppearDirective }\tfrom './pages/community/directives/AppearDirective';\r\nimport { SafeHtmlPipe }\t\tfrom './pipes/safeHtml.pipe';\r\n\r\n// App is our top level component\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { TaskFilterPipe }\tfrom './pages/task/pipes/taskFilter.pipe';\r\nimport { HomeFilterPipe }\tfrom './pages/home/pipes/homeFilter.pipe';\r\nimport { OtherUsersFilter } from './pipes/otherUsers.pipe';\r\n\r\n\r\n/************************************************\r\n * Composants npm\r\n ***********************************************/\r\nimport { NgsRevealModule }\tfrom 'ngx-scrollreveal';\r\nimport { DragulaModule }\tfrom 'ng2-dragula';\r\nimport 'hammerjs';\r\n\r\n\r\nimport { CanvasModule }\t\t\t\t\t\tfrom './pages/canvas/canvas.module';\r\n\r\n\r\n//import { MasonryModule }\t\t\tfrom 'angular2-masonry';\r\n//import { MomentModule }\t\t\tfrom 'angular2-moment'; // optional, provides moment-style pipes for date formatting\r\n//import { NgMasonryGridModule }\t\tfrom 'ng-masonry-grid';\r\n\r\n\r\n/************************************************\r\n * Composants Neoptec\r\n ***********************************************/\r\n// Structure\r\nimport { FooterComponent }\tfrom './pages/footer/footer.component';\r\n\r\n\r\n// Générique\r\nimport { HomeComponent }\t\t\t\tfrom './pages/home/home.component';\r\nimport { LoginComponent }\t\t\t\tfrom './pages/login/login.component';\r\nimport { UserComponent }\t\t\t\tfrom './pages/user/user.component';\r\nimport { CommentsComponent }\t\t\tfrom './components/comments/comments.component';\r\nimport { CommentModalComponent }\t\tfrom './components/comments/modal/commentModal.component';\r\nimport { PreviewModalComponent }\t\tfrom './components/preview-modal/previewModal.component';\r\nimport { EditFileNameModalComponent }\tfrom './components/edit-file-name-modal/editFileNameModal.component';\r\nimport { PasswordEditorComponent }\t\tfrom './components/password-editor/passwordEditor.component';\r\nimport { ProcessEditorComponent }\t\tfrom './components/process-editor/processEditor.component';\r\n\r\n\r\n// administration\r\nimport { AdminComponent }\t\t\t\t\t\tfrom './pages/admin/admin.component';\r\nimport { AdminUsersComponent }\t\t\t\t\tfrom './pages/admin/admin-users/admin-users.component';\r\nimport { AdminSystemComponent } \t\t\t\tfrom './pages/admin/admin-system/admin-system.component';\r\nimport { EditionProcessusModalComponent } \t\tfrom './pages/admin/admin-system/modals/editionProcessusModal.component';\r\nimport { ConfirmDeleteProcessusModalComponent } from './pages/admin/admin-system/modals/confirmDeleteProcessusModal.component';\r\nimport { InfosDeleteProcessusModalComponent } \tfrom './pages/admin/admin-system/modals/infosDeleteProcessusModal.component';\r\n\r\nimport { AdminEtablissementComponent }\t\t\t\t\t\tfrom './pages/admin/admin-etablissement/admin-etablissement.component';\r\nimport { ModalCreateChatComponent }\t\t\t\t\t\t\tfrom './pages/community/modals/modal-create-chat/modal-create-chat.component';\r\nimport { UserModalComponent,DialogOverviewExampleDialog }\tfrom './modal/user/userModal.component';\r\nimport { ConnectApplicationModalComponent } \t\t\t\tfrom './modal/connect/connectApplication.component';\r\nimport { ConnectOTPModalComponent } \t\t\t\t\t\tfrom './modal/connectOTP/connectOTPModal.component';\r\nimport { ConfirmDeleteElementModalComponent } \t\t\t\tfrom './modal/confirmDeleteElement/confirmDeleteElementModal.component';\r\nimport { ConfirmDeleteUserModalComponent } \t\t\t\t\tfrom './modal/confirmDeleteUser/confirmDeleteUserModal.component';\r\nimport { ConnectNewMachineModalComponent } \t\t\t\t\tfrom './modal/connectNewMachine/connectNewMachineModal.component';\r\nimport { ResetPasswordModalComponent } \t\t\t\t\t\tfrom './modal/resetPassword/resetPasswordModal.component';\r\nimport { ForgetPasswordModalComponent } \t\t\t\t\tfrom './modal/forgetPassword/forgetPasswordModal.component';\r\nimport { InfosForgetPasswordModalComponent } \t\t\t\tfrom './modal/forgetPassword/infosForgetPasswordModal.component';\r\nimport { WarningRsaModalComponent }\t\t\t\t\t\t\tfrom './modal/warningRsa/warningRsaModal.component';\r\nimport { SelectAccountModalComponent }\t\t\t\t\t\tfrom './modal/selectAccount/selectAccountModal.component';\r\nimport { WarningAddBlockerEnabledComponent }\t\t\t\tfrom './modal/warningAddBlockerEnabled/warningAddBlockerEnabledModal.component';\r\n\r\n// Taches\r\nimport { TaskComponent }\t\t\t\t\t\tfrom './pages/task/task.component';\r\nimport { DetailPanelComponent }\t\t\t\t\tfrom './pages/task/components/detail-panel/detail-panel.component';\r\nimport { EditorPanelComponent }\t\t\t\t\tfrom './pages/task/components/editor-panel/editor-panel.component';\r\nimport { EditorPanelTaskComponent } \t\t\tfrom './pages/task/components/editor-panel-task/editor-panel-task.component';\r\nimport { LaneComponent }\t\t\t\t\t\tfrom './pages/task/components/lane/lane.component';\r\nimport { TicketComponent }\t\t\t\t\t\tfrom './pages/task/components/ticket/ticket.component';\r\nimport { SelectAssignedComponent }\t\t\t\tfrom './pages/task/modal/select-assigned.component';\r\nimport { SendMailModalComponent }\t\t\t\tfrom './pages/task/modal/sendMailModal.component';\r\nimport { WarningUnloggedUserModalComponent }\tfrom './pages/task/modal/warningUnloggedUserModal.component';\r\n\r\n\r\n// Resultats\r\nimport { ResultComponent } from './pages/result/result.component';\r\n\r\n// Communauté\r\nimport { CommunityComponent }\t\t\tfrom './pages/community/community.component';\r\nimport { ChatListComponent }\t\t\tfrom './pages/community/chat-list/chat-list.component';\r\nimport { ChatDetailComponent }\t\t\tfrom './pages/community/chat-detail/chat-detail.component';\r\nimport { NotificationListComponent }\tfrom './pages/community/notification-list/notification-list.component';\r\nimport { NotificationDetailComponent }\tfrom './pages/community/notification-detail/notification-detail.component';\r\n\r\n\r\nimport { UserAddFormComponent }\t\tfrom './pages/user-add-form/user-add-form.component';\r\nimport { BrowserAnimationsModule }\tfrom '@angular/platform-browser/animations';\r\nimport { SearchBarModule }\t\t\tfrom './components/search-bar/search-bar.module';\r\nimport { CalendarComponent }\t\tfrom './pages/calendar/calendar.component';\r\n\r\n\r\n// ---------------------------------------\r\n// Edition\r\n// ---------------------------------------\r\nimport { ModuleChatComponent }\t\t\tfrom './pages/community/module-chat/module-chat.component';\r\nimport { ModuleNotificationComponent }\tfrom './pages/community/module-notification/module-notification.component';\r\n\r\n\r\n// ---------------------------------------\r\n// HELP\r\n// ---------------------------------------\r\nimport { NotificationModalComponent } from './pages/community/notification-modal/notification-modal.component';\r\n\r\n\r\nimport { UserNameComponent }\t\t\tfrom './pages/user-name/user-name.component';\r\nimport { DateUserFriendlyComponent }\tfrom './pages/date-user-friendly/date-user-friendly.component';\r\nimport { StateStatsComponent }\t\t\tfrom './pages/state-stats/state-stats.component';\r\n\r\n\r\nimport { BaremeCreatorComponent }\tfrom './components/bareme-creator/bareme-creator.component';\r\nimport { BaremeToQcmComponent }\t\tfrom './components/bareme-to-qcm/bareme-to-qcm.component';\r\nimport { BaremeEditorComponent }\tfrom './components/bareme-to-qcm/bareme-editor/bareme-editor.component';\r\n\r\n\r\nimport { ConfirmResetRsaModalComponent }\t\tfrom './modal/confirmResetRsa/confirmResetRsaModal.component';\r\nimport { InfoResetRsaModalComponent }\t\t\tfrom './modal/infoResetRsa/infoResetRsaModal.component';\r\nimport { ConfirmGiveFilesKeysModalComponent }\tfrom './modal/confirmGiveFilesKeys/confirmGiveFilesKeysModal.component';\r\nimport { InfoInitAccountModalComponent }\t\tfrom './modal/infosInitAccount/infosInitAccountModal.component';\r\nimport { DownloadRsaModalComponent }\t\t\tfrom './modal/downloadRsa/downloadRsaModal.component';\r\n\r\n\r\n\r\n// Application wide providers\r\nconst APP_PROVIDERS = [\r\n\t...APP_RESOLVER_PROVIDERS,\r\n\tAppState\r\n];\r\n\r\ntype StoreType =\r\n\t{\r\n\t\tstate:\t\t\t\tInternalStateType,\r\n\t\trestoreInputValues: () => void,\r\n\t\tdisposeOldHosts:\t() => void\r\n\t};\r\n\r\n/**\r\n *\r\n */\r\nexport function createTranslateLoader(http: Http)\r\n{\r\n\t// return new TranslateStaticLoader(http, 'assets/i18n', '.json');\r\n}\r\n\r\nexport function HttpLoaderFactory(http: HttpClient)\r\n{\r\n\treturn new TranslateHttpLoader(http);\r\n}\r\n\r\nexport const BROWSER_SANITIZATION_PROVIDERS: Array = [\r\n\t{ provide: Sanitizer, useExisting: DomSanitizer },\r\n];\r\n\r\nexport const routes: Routes = [\r\n\t{ path: '',\t\t\t\t\t\tcomponent: LoginComponent },\r\n\t{ path: 'workspace',\t\t\tloadChildren: './pages/workspace/workspace.module#WorkspaceModule' },\r\n//\t{ path: 'workspace/passation',\tcomponent: PassationComponent },\r\n//\t{ path: 'workspace/result',\t\tcomponent: ResultComponent },\r\n\t{ path: 'community',\t\t\tcomponent: CommunityComponent },\r\n\t{ path: 'login',\t\t\t\tcomponent: LoginComponent },\r\n\t{ path: 'task',\t\t\t\t\tcomponent: TaskComponent },\r\n\t{ path: 'admin',\t\t\t\tcomponent: AdminComponent },\r\n\t{ path: 'home',\t\t\t\t\tcomponent: HomeComponent },\r\n\t{ path: 'task/NewTicket',\t\tcomponent: TaskComponent }\r\n];\r\n\r\n\r\n/************************************************\r\n* `AppModule` is the main entry point into Angular2's bootstraping process\r\n***********************************************/\r\n@NgModule({\r\n\tbootstrap: [AppComponent],\r\n\tdeclarations:\r\n\t\t[\r\n\t\t\tAutoFocus,\r\n//\t\t\troutes,\r\n\t\t\tConfirmResetRsaModalComponent,\r\n\t\t\tConfirmGiveFilesKeysModalComponent,\r\n\t\t\tInfoResetRsaModalComponent,\r\n\t\t\tDownloadRsaModalComponent,\r\n\t\t\tInfoInitAccountModalComponent,\r\n\t\t\tAppearDirective,\r\n\t\t\tAppComponent,\r\n\t\t\tHomeComponent,\r\n\t\t\tLoginComponent,\r\n\t\t\tDateUserFriendlyComponent,\r\n\t\t\tStateStatsComponent,\r\n\t\t\tCommentsComponent,\r\n\t\t\tPasswordEditorComponent,\r\n\t\t\tProcessEditorComponent,\r\n\t\t\tCommentModalComponent,\r\n\t\t\tPreviewModalComponent,\r\n\t\t\tEditFileNameModalComponent,\r\n\t\t\tEditionProcessusModalComponent,\r\n\t\t\tConfirmDeleteProcessusModalComponent,\r\n\t\t\tInfosDeleteProcessusModalComponent,\r\n\t\t\tSelectAssignedComponent,\r\n\t\t\tSendMailModalComponent,\r\n\t\t\tAdminComponent,\r\n\t\t\tAdminUsersComponent,\r\n\t\t\tAdminSystemComponent,\r\n\t\t\tChatListComponent,\r\n\t\t\tAdminEtablissementComponent,\r\n\t\t\tUserModalComponent,\r\n\t\t\tDialogOverviewExampleDialog,\r\n\t\t\tFooterComponent,\r\n//\t\t\tWorkspaceComponent,\r\n\t\t\tConnectApplicationModalComponent,\r\n\t\t\tConnectOTPModalComponent,\r\n\t\t\tConfirmDeleteElementModalComponent,\r\n\t\t\tConfirmDeleteUserModalComponent,\r\n\t\t\tConnectNewMachineModalComponent,\r\n\t\t\tResetPasswordModalComponent,\r\n\t\t\tSelectAccountModalComponent,\r\n\t\t\tForgetPasswordModalComponent,\r\n\t\t\tInfosForgetPasswordModalComponent,\r\n\t\t\tWarningRsaModalComponent,\r\n\t\t\tWarningAddBlockerEnabledComponent,\r\n\t\t\tModalCreateChatComponent,\r\n\t\t\tCommunityComponent,\r\n\t\t\tChatDetailComponent,\r\n\t\t\tNotificationListComponent,\r\n\t\t\tNotificationDetailComponent,\r\n\t\t\tUserComponent,\r\n\t\t\tTaskComponent,\r\n\t\t\tResultComponent,\r\n\t\t\tWarningUnloggedUserModalComponent,\r\n\t\t\tDetailPanelComponent,\r\n\t\t\tEditorPanelComponent,\r\n\t\t\tEditorPanelTaskComponent,\r\n\t\t\tLaneComponent,\r\n\t\t\tUserNameComponent,\r\n\t\t\tSafePipe,\r\n\t\t\tTicketComponent,\r\n\t\t\tTaskFilterPipe,\r\n\t\t\tHomeFilterPipe,\r\n\t\t\tSafeHtmlPipe,\r\n\t\t\tOtherUsersFilter,\r\n\t\t\tUserAddFormComponent,\r\n\t\t\tCalendarComponent,\r\n\t\t\tModuleChatComponent,\r\n\t\t\tModuleNotificationComponent,\r\n//\t\t\tClickOutsideModule,\r\n\t\t\tBaremeCreatorComponent,\r\n\t\t\tBaremeToQcmComponent,\r\n\t\t\tBaremeEditorComponent,\r\n\t\t\tNotificationModalComponent,\r\n\t\t\tValidateTaskModalComponent\r\n\t],\r\n\tentryComponents:\r\n\t[\r\n\t\tValidateTaskModalComponent,\r\n\t\tUserModalComponent,\r\n\t\tDialogOverviewExampleDialog,\r\n\t\tConfirmResetRsaModalComponent,\r\n\t\tConfirmGiveFilesKeysModalComponent,\r\n\t\tInfoResetRsaModalComponent,\r\n\t\tDownloadRsaModalComponent,\r\n\t\tInfoInitAccountModalComponent,\r\n\t\tConnectApplicationModalComponent,\r\n\t\tConnectOTPModalComponent,\r\n\t\tConfirmDeleteElementModalComponent,\r\n\t\tConfirmDeleteUserModalComponent,\r\n\t\tResetPasswordModalComponent,\r\n\t\tSelectAccountModalComponent,\r\n\t\tConnectNewMachineModalComponent,\r\n\t\tForgetPasswordModalComponent,\r\n\t\tInfosForgetPasswordModalComponent,\r\n\t\tWarningRsaModalComponent,\r\n\t\tWarningAddBlockerEnabledComponent,\r\n\t\tModalCreateChatComponent,\r\n\t\tUserAddFormComponent,\r\n\t\tCommentModalComponent,\r\n\t\tPreviewModalComponent,\r\n\t\tEditFileNameModalComponent,\r\n\t\tEditionProcessusModalComponent,\r\n\t\tConfirmDeleteProcessusModalComponent,\r\n\t\tInfosDeleteProcessusModalComponent,\r\n\t\tSelectAssignedComponent,\r\n\t\tSendMailModalComponent,\r\n\t\tWarningUnloggedUserModalComponent,\r\n\t\tEditorPanelComponent,\r\n\t\tEditorPanelTaskComponent,\r\n\t\tBaremeCreatorComponent,\r\n\t\tBaremeToQcmComponent,\r\n\t\tBaremeEditorComponent\r\n\t],\r\n\timports: [ // import Angular's modules\r\n\t\tFormsModule,\r\n\t\tVgCoreModule,\r\n\t\tVgControlsModule,\r\n\t\tVgOverlayPlayModule,\r\n\t\tVgBufferingModule,\r\n\t\tCalendarModule.forRoot({\r\n\t\t\tprovide: DateAdapter,\r\n\t\t\tuseFactory: adapterFactory\r\n\t\t}),\r\n\t\tCommonModule,\r\n\t\tPdfViewerModule,\r\n\t\tMatSnackBarModule ,\r\n\t\tAngularDateTimePickerModule,\r\n\t\tHttpClientModule,\r\n//\t\tNgMasonryGridModule,\r\n\t\tColorPickerModule,\r\n\t\tMatNativeDateModule,\r\n\t\tDeviceDetectorModule.forRoot(),\r\n\t\tReactiveFormsModule,\r\n\t\tHttpModule,\r\n\t\tBrowserModule,\r\n\t\tQuillModule.forRoot(),\r\n\t\tBrowserAnimationsModule,\r\n//\t\tCalendarModule.forRoot(),\r\n\t\tSearchBarModule,\r\n\t\tDragulaModule,\r\n\t\tNgxQRCodeModule.forRoot(),\r\n\t\tNgsRevealModule,\r\n\t\tTranslateModule.forRoot({\r\n\t\t\tloader:\r\n\t\t\t{\r\n\t\t\t\tprovide:\tTranslateLoader,\r\n\t\t\t\tuseFactory: HttpLoaderFactory,\r\n\t\t\t\tdeps:\t\t[HttpClient]\r\n\t\t\t}\r\n\t\t}),\r\n\t\tMatToolbarModule,\r\n\t\tMatTableModule,\r\n\t\tMatButtonModule,\r\n\t\tMatButtonToggleModule,\r\n\t\tMatCardModule,\r\n\t\tMatCheckboxModule,\r\n\t\tMatSortModule,\r\n\t\tMatDialogModule,\r\n\t\tMatIconModule,\r\n\t\tMatGridListModule,\r\n\t\tMatSliderModule,\r\n\t\tMatTabsModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatListModule,\r\n\t\tMatExpansionModule,\r\n\t\tMatMenuModule,\r\n\t\tMatSlideToggleModule,\r\n\t\tMatTooltipModule,\r\n\t\tMatSidenavModule,\r\n\t\tMatProgressBarModule,\r\n\t\tMatProgressSpinnerModule,\r\n\t\tMatRadioModule,\r\n\t\tMatSelectModule,\r\n\t\tMatStepperModule,\r\n\t\tMatDatepickerModule,\r\n\t\tMatChipsModule,\r\n\t\tMatAutocompleteModule,\r\n\t\tMatPaginatorModule,\r\n\t\tMatInputModule,\r\n\t\tCanvasModule,\r\n//\t\tRouterModule.forRoot(routes ,{ useHash: true, preloadingStrategy: PreloadAllModules }),\r\n\t\tRouterModule.forRoot(routes),\r\n\t\tDragDropModule\r\n\t],\r\n\tproviders: [\r\n\t\t// expose our Services and Providers into Angular's dependency injection\r\n\t\tBROWSER_SANITIZATION_PROVIDERS,\r\n\t\tENV_PROVIDERS,\r\n\t\tAPP_PROVIDERS,\r\n\t\tUserData,\r\n\t\tAdminData,\r\n\t\tBaremeData,\r\n\t\tMyDateAdapter,\r\n\t\tTaskData,\r\n\t\tWorkspaceData,\r\n\t\tFileData,\r\n\t\tChatData,\r\n\t\tVaultData,\r\n\t\tBaremeService,\r\n\t\tAuthService,\r\n\t\tCreationHttpService,\r\n\t\tSocketService,\r\n\t\tVaultHttpService,\r\n\t\tSocketVaultService,\r\n\t\tAuthHttpService,\r\n\t\tEtablissementService,\r\n\t\tEtablissementHttpService,\r\n\t\tSessionService,\r\n\t\tFooterComponent,\r\n\t\tSessionHttpService,\r\n\t\tExamenService,\r\n\t\tExamenHttpService,\r\n\t\tEpreuveService,\r\n\t\tEpreuveHttpService,\r\n\t\tSujetService,\r\n\t\tSujetHttpService,\r\n\t\tAppComponent,\r\n\t\tUserService,\r\n\t\tUserHttpService,\r\n\t\tFileHttpService,\r\n\t\tFileService,\r\n\t\tPassationService,\r\n\t\tCandidatService,\r\n\t\tEncryptService,\r\n\t\tMessagesService,\r\n\t\tStatisticsService,\r\n\t\tWorkspaceDataService,\r\n\t\tChatHttpService,\r\n\t\tRoomService,\r\n\t\tEventService,\r\n\t\tTaskService,\r\n\t\tAdminService,\r\n\t\tTaskHttpService,\r\n\t\tTaskService2,\r\n\t\tTools,\r\n\t\tPage,\r\n\t\tSavedData,\r\n\t\t{ provide: MAT_DATE_LOCALE, useValue: 'fr-FR' },\r\n\t\t{ provide: LocationStrategy, useClass: HashLocationStrategy },\r\n\t\t{ provide: test, useClass: MyDateAdapter},\r\n\r\n\t],\r\n\texports: [\r\n\t\tProcessEditorComponent,\r\n\r\n\t],\r\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\n\r\n\r\nexport class AppModule\r\n{\r\n\tconstructor(public appRef: ApplicationRef, public appState: AppState) { }\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic hmrOnInit(store: StoreType)\r\n\t{\r\n\t\tif (!store || !store.state) return;\r\n\r\n\t\t// set state\r\n\t\tthis.appState._state = store.state;\r\n\t\t// set input values\r\n\t\tif ('restoreInputValues' in store)\r\n\t\t{\r\n\t\t\tlet restoreInputValues = store.restoreInputValues;\r\n\t\t\tsetTimeout(restoreInputValues);\r\n\t\t}\r\n\r\n\t\tthis.appRef.tick();\r\n\t\tdelete store.state;\r\n\t\tdelete store.restoreInputValues;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic hmrOnDestroy(store: StoreType)\r\n\t{\r\n\t\tconst cmpLocation = this.appRef.components.map((cmp) => cmp.location.nativeElement);\r\n\t\t// save state\r\n\t\tconst state = this.appState._state;\r\n\t\tstore.state = state;\r\n\t\t// recreate root elements\r\n\t\tstore.disposeOldHosts = createNewHosts(cmpLocation);\r\n\t\t// save input values\r\n\t\tstore.restoreInputValues = createInputTransfer();\r\n\t\t// remove styles\r\n\t\tremoveNgStyles();\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic hmrAfterDestroy(store: StoreType)\r\n\t{\r\n\t\t// display new elements\r\n\t\tstore.disposeOldHosts();\r\n\t\tdelete store.disposeOldHosts;\r\n\t}\r\n}\r\n","import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { Injectable } from '@angular/core';\r\n//import { Observable } from 'rxjs/observable';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport { of } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class DataResolver implements Resolve\r\n{\r\n\tconstructor()\r\n\t{\r\n\t}\r\n\t\r\n\tpublic resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot)\r\n\t{\r\n\t\treturn Observable.of({ res: 'I am data' });\r\n\t}\r\n}\r\n\r\n\r\n// an array of services to resolve routes with data\r\nexport const APP_RESOLVER_PROVIDERS = [\r\n\tDataResolver\r\n];\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport type InternalStateType = {\r\n\t[key: string]: any\r\n};\r\n\r\n@Injectable()\r\nexport class AppState\r\n{\r\n\t_state: InternalStateType = {};\r\n\r\n\tconstructor()\r\n\t{\r\n\r\n\t}\r\n\r\n\t// already return a clone of the current state\r\n\tget state()\r\n\t{\r\n\t\treturn this._state = this._clone(this._state);\r\n\t}\r\n\t\r\n\t// never allow mutation\r\n\tset state(value)\r\n\t{\r\n\t\tthrow new Error('do not mutate the `.state` directly');\r\n\t}\r\n\r\n\tget(prop?: any)\r\n\t{\r\n\t\t// use our state getter for the clone\r\n\t\tconst state = this.state;\r\n\t\treturn state.hasOwnProperty(prop) ? state[prop] : state;\r\n\t}\r\n\r\n\tset(prop: string, value: any)\r\n\t{\r\n\t\t// internally mutate our state\r\n\t\treturn this._state[prop] = value;\r\n\t}\r\n\r\n\tprivate _clone(object: InternalStateType)\r\n\t{\r\n\t\t// simple object clone\r\n\t\treturn JSON.parse(JSON.stringify(object));\r\n\t}\r\n}\r\n","import { Component } from './component';\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class Comment\r\n{\r\n /**\r\n * Construction d'un objet Comment à partir d'un objet json donné\r\n * @param jsonObj \r\n */\r\n public static fromJsonObject(jsonObj: any): Comment\r\n {\r\n let newComment = new Comment();\r\n\r\n newComment.name\t\t= jsonObj.name || '';\r\n newComment.message\t= jsonObj.message || '';\r\n newComment.status\t= jsonObj.status || '';\r\n newComment.id\t\t= jsonObj.id || jsonObj.uuid || '';\r\n newComment.idUser\t= jsonObj.idUser || jsonObj.user || '';\r\n newComment.resolved = jsonObj.resolved || jsonObj.resolu || '';\r\n\r\n if (jsonObj.creationdate)\r\n {\r\n newComment.creationDate.setTime(jsonObj.creationdate);\r\n }\r\n\r\n return newComment;\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n constructor(\t\r\n private _id: string\t= '',\r\n private _name: string\t= '',\r\n private _idUser: string\t= '',\r\n private _message: string\t= '',\r\n private _status: string\t= '',\r\n private _resolved: string\t= '',\r\n private _creationDate: Date\t= new Date()\r\n ){ }\r\n\r\n\r\n get id():\t\t\tstring\t\t{ return this._id; }\r\n get name():\t\t\tstring\t\t{ return this._name; }\r\n get idUser():\t\tstring\t\t{ return this._idUser; }\r\n get message():\t\tstring\t\t{ return this._message; }\r\n get status():\t\tstring\t\t{ return this._status; }\r\n get resolved():\t\tstring\t\t{ return this._resolved; }\r\n get creationDate(): Date\t\t{ return this._creationDate; }\r\n\r\n\r\n set id(id:\t\t\t\t\t\tstring)\t{ this._id\t\t\t\t= id; }\r\n set name(name:\t\t\t\t\tstring)\t{ this._name\t\t\t= name; }\r\n set idUser(idUser:\t\t\t\tstring)\t{ this._idUser\t\t\t= idUser; }\r\n set message(message:\t\t\tstring)\t{ this._message\t\t\t= message; }\r\n set status(status:\t\t\t\tstring)\t{ this._status\t\t\t= status; }\r\n set resolved(resolved:\t\t\tstring)\t{ this._resolved\t\t= resolved; }\r\n set creationDate(creationDate:\tDate)\t{ this._creationDate\t= creationDate; }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public toJson()\r\n {\r\n let result = \r\n {\r\n id:\t\t\t\tthis.id,\r\n name:\t\t\tthis.name,\r\n idUser:\t\t\tthis.idUser,\r\n message:\t\tthis.message,\r\n status:\t\t\tthis.status,\r\n resolved:\t\tthis.resolved,\r\n creationdate:\tthis.creationDate.getTime()\r\n };\r\n\r\n return result;\r\n }\r\n}\r\n\r\n","import { Member }\t\t\tfrom './member.class';\r\n\r\n/**\r\n * Root component for the class application.\r\n * Manage id, name, and event with socket (to know when its locked, and modified).\r\n * @export\r\n * @class Component\r\n */\r\nexport class Component\r\n{\r\n\tpublic _id:\t\t\t\t\tMember\t= new Member();\r\n\tpublic _name:\t\t\t\tMember\t= new Member();\r\n public _description:\t\tMember\t= new Member();\r\n public _dateCreation:\t\tDate\t= null;\r\n public _dateModification:\tDate\t= null;\r\n\t\r\n\t\r\n//\tpublic _sanitizer: DomSanitizer;\r\n \r\n\t/**\r\n\t * From a json object, its construct the three of object\r\n\t * @static\r\n\t * @param {any} jsonObj\r\n\t * @returns {Any}\r\n\t */\r\n\tpublic static fromJsonObject(jsonObj: any)\r\n\t{\r\n\r\n\t}\r\n\t\r\n /**\r\n * Creates an instance of Component.\r\n * \r\n * @param {number} [_id=0]\r\n * @param {string} [_name='']\r\n * \r\n * @memberOf Component\r\n */\r\n\tconstructor()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ID\r\n\t\t// ---------------------------------------\r\n\t\tthis._id.msName\t\t\t= 'uuid';\r\n\t\tthis._id.msType\t\t\t= 'input';\r\n\t\tthis._id.msNgModel\t\t= 'nomEtab';\r\n\t\tthis._id.mbRequired\t\t= true;\r\n\t\tthis._id.mbAutoComplete = false;\r\n\t\tthis._id.mbHidden\t\t= true;\r\n\t\t\r\n\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// Nom\r\n\t\t// ---------------------------------------\r\n\t\tthis._name.msName\t\t\t= 'Nom';\r\n\t\tthis._name.msType\t\t\t= 'input';\r\n\t\tthis._name.msType\t\t\t= 'input';\r\n\t\tthis._name.msId\t\t\t\t= 'etab_form_input_name';\r\n\t\tthis._name.msClass\t\t\t= 'etab_form_input_name';\r\n\t\tthis._name.msNgModel\t\t= 'descriptionEtab';\r\n\t\tthis._name.mbRequired\t\t= true;\r\n\t\tthis._name.msPlaceholder\t= 'Nom établissement';\r\n\t\tthis._name.mbAutoComplete\t= false;\r\n\t\tthis._name.mbHidden\t\t\t= false;\r\n\r\n\t\t\t\t\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// Description\r\n\t\t// ---------------------------------------\r\n\t\tthis._description.msName\t\t\t= 'Description';\r\n\t\tthis._description.msType\t\t\t= 'textarea';\r\n\t\tthis._description.mbRequired\t\t= true;\r\n\t\tthis._description.mbAutoComplete\t= false;\r\n\t\tthis._description.mbHidden\t\t\t= false;\r\n\t}\r\n\t\r\n\r\n /**\r\n * Basic getter for the id\r\n * @type {number}\r\n * @memberOf Component\r\n */\r\n get id(): string { return this._id.msValue; }\r\n\r\n\r\n /**\r\n * Basic getter for the name\r\n * @type {string}\r\n * @memberOf Component\r\n */\r\n get name(): string { return this._name.msValue; }\r\n\r\n /**\r\n * Basic getter for the description\r\n * @type {string}\r\n * @memberOf Component\r\n */\r\n get description(): string { return this._description.msValue; }\r\n\r\n\r\n /**\r\n * Basic getter for the date creation\r\n * @type {Date}\r\n * @memberOf Component\r\n */\r\n get dateCreation(): Date { return this._dateCreation; }\r\n\r\n \r\n /**\r\n * Basic getter for last modification\r\n * @type {Date}\r\n * @memberOf Component\r\n */\r\n get dateModification(): Date { return this._dateModification; }\r\n\r\n /**\r\n * Basic setter for the id\r\n * @memberOf Component\r\n */\r\n\tset id(id) \r\n\t{\r\n\t\tthis._id.msValue = id;\r\n\t}\r\n\r\n\r\n /**\r\n * Basic setter for the name\r\n * @memberOf Component\r\n */\r\n set name(name) { this._name.msValue = name; }\r\n\r\n /**\r\n * Basic setter for the name\r\n * @memberOf Component\r\n */\r\n set description(description) { this._description.msValue = description; }\r\n\r\n\r\n /**\r\n * Basic setter for the date of creation\r\n * @memberOf Component\r\n */\r\n set dateCreation(dateCreation) { this._dateCreation = dateCreation; }\r\n\r\n\r\n /**\r\n * Basic setter for the last modification\r\n * @memberOf Component\r\n */\r\n set dateModification(dateModification) { this._dateModification = dateModification; }\r\n\r\n\r\n /**\r\n * Get the item on data server who correspond by id\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic getItemById(id: any)\r\n\t{\r\n\t}\r\n\r\n\r\n /**\r\n * get a list of item by the foreign key\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic getItemsByForeignId(id: any, foreignKey: string)\r\n\t{\r\n\t}\r\n\r\n\r\n /**\r\n * notify to the server, this object is viewed\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic notifyView(id: any)\r\n\t{\r\n\t}\r\n\r\n\r\n /**\r\n * \r\n * Listen for the view of this object\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic listenView(id: any)\r\n\t{\r\n\t}\r\n\r\n\r\n /**\r\n * notify to the server a modification has been done\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic notifyModification(id: any)\r\n\t{\r\n\t\t\r\n\t}\r\n\r\n\r\n /**\r\n * get the information of a modification to reload the data\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic listenModification(id: any)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n /**\r\n * Notify the server an delet has been done\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic notifyDelete(id: any)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n /**\r\n * Listen for a delet\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic listenDelete(id: any)\r\n\t{\r\n\t\t\r\n\t}\r\n\r\n\r\n /**\r\n * Notify the server for a new object\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic notifyCreate(id: any)\r\n\t{\r\n\t\t\r\n\t}\r\n\r\n\r\n /**\r\n * listen for new object\r\n * @public\r\n * @param {any} id\r\n * \r\n * @memberOf Component\r\n */\r\n\tpublic listenCreate(id: any)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic canAccess(userId: any, id: any, action: any)\r\n\t{\r\n\t}\r\n\t\r\n\t\r\n\tpublic getForm()\r\n\t{\r\n\t\tlet sReturn:string = '';\r\n\t\t\r\n\t\tsReturn += this._name.getFormInput();\r\n\t\tsReturn += this._description.getFormInput();\r\n\t\t\r\n\t\treturn sReturn;\r\n\t}\r\n}\r\n\r\n\r\n","import {NativeDateAdapter} from '@angular/material';\r\nimport {Injectable} from '@angular/core';\r\n\r\n\r\n@Injectable()\r\nexport class MyDateAdapter extends NativeDateAdapter {\r\n\r\n getFirstDayOfWeek(): number {\r\n return 1;\r\n }\r\n\r\n}","import { Session }\t\t\t\tfrom './session.class';\r\nimport { WorkspaceDataService } from '../providers/workspaceData.service';\r\nimport { Component }\t\t\tfrom './component';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n/**\r\n *\r\n * @export\r\n * @class Etablissement\r\n */\r\nexport class Etablissement extends Component\r\n{\r\n\r\n\tpublic moWorkData:\tWorkspaceDataService = null;\r\n\tpublic _visible:\tboolean = true;\r\n\r\n\r\n\t/**\r\n * Création d'un objet Etablissement en fonction d'un objet json donné\r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Etablissement}\r\n *\r\n * @memberOf Etablissement\r\n */\r\n\tpublic static fromJsonObject(jsonObj: any): Etablissement\r\n\t{\r\n\t\t// Initialisation de l'identifiant et du nom\r\n\t\tlet oEtablissement = new Etablissement();\r\n\r\n\t\toEtablissement.id\t= jsonObj.id \t|| jsonObj.uuid \t|| 0;\r\n\t\toEtablissement.name = jsonObj.name \t|| jsonObj.libelle \t|| '';\r\n\r\n\t\tif (jsonObj.datas)\r\n\t\t{\r\n\t\t\toEtablissement.description = jsonObj.datas.description;\r\n\t\t}\r\n\r\n\t\toEtablissement.author\t= jsonObj.createur\t\t|| jsonObj.creator;\r\n\t\tlet date\t\t\t\t= jsonObj.creationdate\t|| jsonObj.creation_date;\r\n\r\n\t\toEtablissement.dateCreation = new Date(date);\r\n\r\n\t\tif (jsonObj.lastupdatedate)\r\n\t\t{\r\n\t\t\toEtablissement.dateModification = new Date(jsonObj.lastupdatedate) || new Date(jsonObj.updateDate);\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Initialisation de l'état dze l'etablissement\r\n\t\t// show: l'établissement est ouvert dans l'arborescence\r\n\t\t// selected: l'établissement est selectionné dans l'arborescence\r\n\t\t// ---------------------------------------\r\n\t\toEtablissement.show\t\t= (typeof (jsonObj.show)\t\t=== 'string' && jsonObj.show.toLowerCase()\t\t=== 'true') || jsonObj.show\t\t=== true ? true : false;\r\n\t\toEtablissement.selected = (typeof (jsonObj.selected)\t=== 'string' && jsonObj.selected.toLowerCase()\t=== 'true') || jsonObj.selected === true ? true : false;\r\n\r\n\t\toEtablissement.flags = jsonObj.flags || [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération des sessions contenus dans l'établissement\r\n\t\t// ---------------------------------------\r\n\t\tif (jsonObj.sessions && jsonObj.sessions.length)\r\n\t\t{\r\n\t\t\tfor (let session of jsonObj.sessions)\r\n\t\t\t{\r\n\t\t\t\toEtablissement.sessions.push(Session.fromJsonObject(session));\r\n\t\t\t}\r\n\t\t\toEtablissement.sessions.sort(function (a, b)\r\n\t\t\t{\r\n\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\r\n\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// names must be equal\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn oEtablissement;\r\n\t}\r\n\r\n\r\n /**\r\n * Creates an instance of Etablissement.\r\n *\r\n * @param {string} [_name='']\r\n * @param {boolean} [_show=false]\r\n * @param {boolean} [_selected=false]\r\n * @param {Session[]} [_sessions=[]]\r\n *\r\n * @memberOf Etablissement\r\n */\r\n\tconstructor(\r\n\t\tprivate _show:\t\tboolean\t\t= false,\r\n\t\tprivate _selected:\tboolean\t\t= false,\r\n\t\tprivate _author:\tstring\t\t= '',\r\n\t\tprivate _flags:\t\tstring[]\t= [],\r\n\t\tprivate _sessions:\tSession[]\t= [])\r\n\t{\r\n\t\tsuper();\r\n\t\tthis._visible = true;\r\n\t}\r\n\r\n\r\n\r\n\tget show()\t\t{ return this._show; }\r\n\tget selected()\t{ return this._selected; }\r\n\tget author()\t{ return this._author; }\r\n\tget flags()\t\t{ return this._flags; }\r\n\tget sessions()\t{ return this._sessions; }\r\n\tget visible()\t{ return this._visible; }\r\n\r\n\r\n\tset show(show)\t\t\t{ this._show\t\t= show; }\r\n\tset selected(selected)\t{ this._selected\t= selected; }\r\n\tset author(author)\t\t{ this._author\t\t= author; }\r\n\tset flags(flags)\t\t{ this._flags\t\t= flags; }\r\n\tset sessions(sessions)\t{ this._sessions\t= sessions; }\r\n\tset visible(visible)\t{ this._visible\t\t= visible; }\r\n\r\n\r\n /**\r\n *\r\n * @returns infos from children\r\n *\r\n * @memberOf Etablissement\r\n */\r\n\tpublic extractBranchInfos()\r\n\t{\r\n\t\tlet infos:\tany\t= [];\r\n\t\tlet info:\tany\t= {};\r\n\r\n\t\tinfo.nameEtab\t= this.name;\r\n\t\tinfo.idEtab \t= this.id;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (this.sessions.length > 0)\r\n\t\t{\r\n\t\t\tfor (let i in this.sessions)\r\n\t\t\t{\r\n\t\t\t\tif (this.sessions[i])\r\n\t\t\t\t{\r\n\t\t\t\t\tinfos = infos.concat(this.sessions[i].extractBranchInfos(info));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tinfos.push(info);\r\n\t\t}\r\n\r\n\t\treturn infos;\r\n\t}\r\n\r\n\r\n /**\r\n *\r\n * @param {any} etabsObject\r\n * @param {any} [propertyFounded={}]\r\n *\r\n * @memberOf Etablissement\r\n */\r\n\tpublic updateSessionsAvailable(etabsObject: any, propertyFounded: any = {}, hasFilter = false)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Filtrage pour détecter et supprimer les doublons\r\n\t\t// ---------------------------------------\r\n\t\tlet sessionsNames\t= _.uniq(_.map(etabsObject, (etab: any)\t\t=> { return etab['nameSession']; }));\r\n\t\tthis.sessions\t\t= _.reject(this.sessions, (session: any)\t=> { return !sessionsNames.includes(session.name); });\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Filtre les sessions par ordre alphabétique\r\n\t\t// ---------------------------------------\r\n\t\tif (hasFilter === true)\r\n\t\t{\r\n\t\t\tthis.sessions = _.sortBy(this.sessions, (session: any) => { return _.indexOf(sessionsNames, session.name); });\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet currentSessions;\r\n\t\tfor (let i in this.sessions)\r\n\t\t{\r\n\t\t\tif (this.sessions[i])\r\n\t\t\t{\r\n\t\t\t\tcurrentSessions = _.where(etabsObject, { nameSession: this.sessions[i].name });\r\n\r\n\t\t\t\tthis.sessions[i].show = propertyFounded['key'] === 'default' && propertyFounded['values'].includes(this.sessions[i].name.toLowerCase()) ? true : false;\r\n\r\n\t\t\t\tthis.sessions[i].updateExamensAvailable(currentSessions, propertyFounded, hasFilter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getSelectedItems(paramsSelected: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet result: any[] = [];\r\n\r\n\t\tif (paramsSelected['etablissement'] && this.id === paramsSelected['etablissement'])\r\n\t\t{\r\n\t\t\tresult.push(this);\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let session of this.sessions)\r\n\t\t{\r\n\t\t\tresult = result.concat(session.getSelectedItems(paramsSelected));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getShowedItems(paramsShowed: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet result: any[] = [];\r\n\r\n\t\tif (paramsShowed[this.id] && paramsShowed[this.id] === 'etablissement')\r\n\t\t{\r\n\t\t\tresult.push(this);\r\n\t\t}\r\n\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let session of this.sessions)\r\n\t\t{\r\n\t\t\tresult = result.concat(session.getShowedItems(paramsShowed));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * convertion d'un objet Etablissement au format Json\r\n\t */\r\n\tpublic toJson()\r\n\t{\r\n\t\tconst result: any =\r\n\t\t{\r\n\t\t\tid:\t\t\tthis.id,\r\n\t\t\tidparents:\t'',\r\n\t\t\tlibelle:\tthis.name,\r\n\t\t\tcreator:\tthis.author,\r\n\t\t\tflags:\t\tthis.flags,\r\n\t\t\ttype:\t\t'etablissement',\r\n\t\t\tdatas:\r\n\t\t\t{\r\n\t\t\t\tdescription:\tthis.description,\r\n\t\t\t\tcreationdate:\tthis.dateCreation,\r\n\t\t\t\tlastupdatedate: this.dateModification,\r\n\t\t\t\tshow:\t\t\tthis.show\t\t\t\t? 'true' : 'false',\r\n\t\t\t\tselected:\t\tthis.selected\t\t\t? 'true' : 'false'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (this.sessions.length > 0)\r\n\t\t{\r\n\t\t\tresult.sessions = [];\r\n\t\t\tfor (const session of this.sessions)\r\n\t\t\t{\r\n\t\t\t\tresult.sessions.push(session.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Matiere }\tfrom './matiere.class';\r\nimport { Comment } from './comment.class';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n/**\r\n *\r\n * @export\r\n * @class Examen\r\n */\r\nexport class Examen\r\n{\r\n /**\r\n * Creates an instance of Examen.\r\n *\r\n * @param {string} [_date='']\r\n * @param {string} [_name='']\r\n * @param {boolean} [_show=false]\r\n * @param {boolean} [_selected=false]\r\n * @param {string} [_date_start='']\r\n * @param {string} [_date_end='']\r\n * @param {Matiere[]} [_matieres=[]]\r\n *\r\n * @memberOf Examen\r\n */\r\n\r\n\r\n /**\r\n * Création d'un objet Examen à partir d'un objet json donné\r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Examen}\r\n *\r\n * @memberOf Examen\r\n */\r\n public static fromJsonObject(jsonObj: any): Examen\r\n {\r\n let oExamen: Examen = new Examen();\r\n\r\n oExamen.id\t\t= jsonObj.uuid || jsonObj.id || '';\r\n oExamen.name\t= jsonObj.name || jsonObj.libelle || '';\r\n\t\toExamen.author\t= jsonObj.creator \t\t|| jsonObj.createur;\r\n\t\toExamen.flags = jsonObj.flags\t\t\t|| [];\r\n\r\n if (jsonObj.datas)\r\n\t\t{\r\n\t\t\toExamen.show = (typeof(jsonObj.datas.show)\t\t=== 'string' && jsonObj.datas.show.toLowerCase()\t\t=== 'true') || jsonObj.datas.show === true ? true : false;\r\n\t\t\toExamen.selected\t= (typeof(jsonObj.datas.selected)\t=== 'string' && jsonObj.datas.selected.toLowerCase()\t=== 'true') || jsonObj.datas.selected === true ? true : false;\r\n\r\n\t\t\toExamen.date\t\t= jsonObj.datas.date || jsonObj.datas.creation_date || '';\r\n\t\t\toExamen.description\t= jsonObj.datas.description;\r\n\t\t}\r\n\r\n oExamen.date = oExamen.date || jsonObj.creationdate;\r\n oExamen.date = new Date(oExamen.date);\r\n\r\n if (jsonObj.epreuves && jsonObj.epreuves.length)\r\n {\r\n for (let key in jsonObj.epreuves)\r\n {\r\n oExamen.matieres.push(Matiere.fromJsonObject(jsonObj.epreuves[key]));\r\n\t\t\t}\r\n\r\n\t\t\toExamen.matieres.sort(function (a, b)\r\n\t\t\t{\r\n\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// names must be equal\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n }\r\n\r\n\r\n // Initialisation des commentaires de l'examen\r\n if (jsonObj.comments && Object.keys(jsonObj.comments).length > 0)\r\n {\r\n for (let key in jsonObj.comments)\r\n {\r\n if (jsonObj.comments[key])\r\n {\r\n let objComment = Comment.fromJsonObject(jsonObj.comments[key]);\r\n oExamen.comments.push(objComment);\r\n }\r\n }\r\n }\r\n\r\n\t\tlet date\t\t\t\t= jsonObj.creationdate || jsonObj.creation_date;\r\n\t\toExamen.dateCreation\t= new Date(date);\r\n\r\n return oExamen;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param _id\r\n\t * @param _date\r\n\t * @param _name\r\n\t * @param _description\r\n\t * @param _show\r\n\t * @param _selected\r\n\t * @param _flags\r\n\t * @param _matieres\r\n\t * @param _comments\r\n\t * @param _classeurId\r\n\t * @param _sessionId\r\n\t * @param _author\r\n\t * @param _visible\r\n\t */\r\n constructor(\r\n private _id: string = '',\r\n private _date: Date = null,\r\n private _name: string = '',\r\n private _description: string = '',\r\n private _show: boolean = false,\r\n\t\tprivate _selected: boolean = false,\r\n\t\tprivate _flags:\t\t\tstring[]\t= [],\r\n private _matieres: Matiere[]\t= [],\r\n private _comments: Comment[] = [],\r\n private _classeurId:\tstring = '',\r\n private _sessionId:\t\tstring = '',\r\n private _author: string = '',\r\n\t\tprivate _visible:\t\tboolean\t\t= true\r\n ){ }\r\n\r\n\r\n get id() { return this._id; }\r\n get date() { return this._date; }\r\n get dateCreation()\t{ return this._date; }\r\n get name() { return this._name; }\r\n get description() { return this._description; }\r\n\tget show() { return this._show; }\r\n\tget selected() { return this._selected; }\r\n\tget flags() \t{ return this._flags; }\r\n get matieres() { return this._matieres; }\r\n get comments() { return this._comments; }\r\n get classeurId() { return this._classeurId; }\r\n get sessionId() { return this._sessionId; }\r\n get author() { return this._author; }\r\n\tget visible() { return this._visible; }\r\n\r\n set id(id)\t\t\t\t\t\t{ this._id\t\t\t= id; }\r\n set date(date)\t\t\t\t { this._date = date; }\r\n set dateCreation(dateCreation)\t{ this._date = dateCreation; }\r\n\r\n set name(name)\t\t\t\t\t{ this._name = name; }\r\n set description(description)\t{ this._description = description; }\r\n set show(show)\t\t\t\t\t{ this._show = show; }\r\n\tset selected(selected)\t\t\t{ this._selected = selected; }\r\n\tset flags(flags)\t\t\t\t{ this._flags \t= flags; }\r\n set matieres(matieres)\t\t\t{ this._matieres = matieres; }\r\n set comments(comments)\t\t\t{ this._comments = comments; }\r\n\r\n set classeurId(classeurId:\tany)\t{ this._classeurId = classeurId; }\r\n set sessionId(sessionId:\tany)\t{ this._sessionId\t= sessionId; }\r\n set author(author:\t\t\tany) { this._author = author; }\r\n\tset visible(visible:\t\tany) { this._visible = visible; }\r\n\r\n\r\n /**\r\n *\r\n * @param {any} info\r\n * @returns\r\n *\r\n * @memberOf Examen\r\n */\r\n public extractBranchInfos(info: any)\r\n {\r\n let infoCopy = Object.assign({}, info);\r\n let infos: any\t\t= [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n infoCopy.nameExamen = this.name;\r\n\t\tinfoCopy.idExamen \t= this.id;\r\n\r\n\t\tif (this.matieres.length > 0)\r\n\t\t{\r\n\t\t\tfor (let key in this.matieres)\r\n\t\t\t{\r\n\t\t\t\tinfos = infos.concat(this.matieres[key].extractBranchInfos(infoCopy));\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n {\r\n infos.push(infoCopy);\r\n }\r\n\r\n return infos;\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param {any} examenObject\r\n * @param {any} [propertyFounded={}]\r\n *\r\n * @memberOf Examen\r\n */\r\n\tpublic updateMatieresAvailable(examenObject: any, propertyFounded: any = {}, hasFilter = false)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet matiereNames = _.uniq(_.map(examenObject, function (examen: any) { return examen['nameMatiere']; }));\r\n\t\tlet currentMatieres;\r\n\r\n\t\tthis.matieres = _.reject(this.matieres, function (matiere: any) { return !matiereNames.includes(matiere.name); });\r\n\r\n\t\tif (hasFilter === true)\r\n\t\t{\r\n\t\t\tthis.matieres = _.sortBy(this.matieres, function (matiere: any) { return _.indexOf(matiereNames, matiere.name); });\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let key in this.matieres)\r\n\t\t{\r\n\t\t\tthis.matieres[key].show = false;\r\n\t\t\t// a refacto => un truc lisible, thx ;)\r\n\t\t\tthis.matieres[key].show = (propertyFounded['key']\t=== 'default'\t\t|| propertyFounded['key'] === 'discipline') && propertyFounded['values'].includes(this.matieres[key].name.toLowerCase())\t? true : this.matieres[key].show;\r\n\t\t\tthis.matieres[key].show = propertyFounded['key']\t=== 'createur'\t\t&& propertyFounded['values'].includes(this.matieres[key].author.toLowerCase())\t\t\t\t\t\t\t\t\t\t\t\t? true : this.matieres[key].show;\r\n\t\t\tthis.matieres[key].show = propertyFounded['key']\t=== 'responsable'\t&& propertyFounded['values'].includes(this.matieres[key].responsable.toLowerCase())\t\t\t\t\t\t\t\t\t\t\t? true : this.matieres[key].show;\r\n\r\n\t\t\tcurrentMatieres = _.where(examenObject, {nameMatiere: this.matieres[key].name});\r\n\t\t\t// this.matieres[i].updateSujetsAvailable(this.matieres[i], propertyFounded);\r\n\r\n\t\t\tthis.show = this.matieres[key].show ? true : this.show;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public getSelectedItems(paramsSelected: any)\r\n\t{\r\n\t\tlet result: any[] = [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (paramsSelected['examen'] && this.id === paramsSelected['examen'])\r\n\t\t{\r\n\t\t\tresult.push(this);\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let matiere of this.matieres)\r\n\t\t{\r\n\t\t\tresult = result.concat(matiere.getSelectedItems(paramsSelected));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getShowedItems(paramsShowed: any)\r\n\t{\r\n\r\n\t\tlet result: any[] = [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (paramsShowed[this.id] && paramsShowed[this.id] === 'examen')\r\n\t\t{\r\n\t\t\tresult.push(this);\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let matiere of this.matieres)\r\n\t\t{\r\n\t\t\tresult = result.concat(matiere.getShowedItems(paramsShowed));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n /**\r\n\t * convertion d'un objet Examen au format Json\r\n\t */\r\n\tpublic toJson()\r\n\t{\r\n\t\tlet result: any =\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\tthis.id,\r\n\t\t\t\tlibelle:\t\tthis.name,\r\n\t\t\t\ttype:\t\t\t'examen',\r\n\t\t\t\tclasseurId:\t\tthis.classeurId,\r\n\t\t\t\tsessionId:\t\tthis.sessionId,\r\n\t\t\t\tdate: this.date,\r\n\t\t\t\tcreator: this.author,\r\n\t\t\t\tflags:\t\t\tthis.flags,\r\n\t\t\t\tdatas:\r\n\t\t\t\t{\r\n\t\t\t\t\tdate:\t\t\tthis.date,\r\n\t\t\t\t\tdescription:\tthis.description,\r\n\t\t\t\t\tshow:\t\t\tthis.show\t\t? 'true' : 'false',\r\n\t\t\t\t\tselected:\t\tthis.selected\t? 'true' : 'false',\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n // Convertion des examens dans la structure json de l'examen\r\n\t\tif (this.matieres.length > 0)\r\n\t\t{\r\n\t\t\tresult.epreuves = [];\r\n\t\t\tfor (let epreuve of this.matieres)\r\n\t\t\t{\r\n\t\t\t\tresult.epreuves.push(epreuve.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n // Convertion des commentaires dans la structure json de l'examen\r\n if (this.comments.length > 0)\r\n\t\t{\r\n\t\t\tresult.comments = [];\r\n\t\t\tfor (let comment of this.comments)\r\n\t\t\t{\r\n\t\t\t\tresult.comments.push(comment.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Comment }\t\tfrom './comment.class';\r\nimport { Component }\tfrom './component';\r\nimport { Note }\t\t\tfrom './note.class';\r\n\r\nimport { FileUploader, FileItem }\t\t\tfrom 'ng2-file-upload';\r\n\r\n\r\n/**\r\n * Todo => changer le nom car réserver\r\n */\r\nexport class File extends Component\r\n{\r\n\r\n\r\n /**\r\n * \r\n * @param jsonObj \r\n */\r\n public static fromJsonObject(jsonObj: any): File\r\n {\r\n const newFile = new File();\r\n\r\n newFile.id\t\t\t= jsonObj.id\t\t\t|| jsonObj.uuid;\r\n newFile.idSubject\t= jsonObj.idSubject\t\t|| jsonObj.idsubject;\r\n newFile.idEpreuve\t= jsonObj.idEpreuve\t\t|| jsonObj.idepreuve\t|| '';\r\n newFile.name\t\t= jsonObj.name\t\t\t|| jsonObj.libelle;\r\n newFile.path\t\t= jsonObj.path\t\t\t|| '';\r\n newFile.pathPdf\t\t= jsonObj.pathPdf\t\t|| jsonObj.pathpdf\t\t|| '';\r\n newFile.pathThumbs = jsonObj.pathThumbs\t|| jsonObj.paththumbs\t|| [];\r\n\r\n const comments = [];\r\n\r\n // Initialisation des commentaires récupérés\r\n if (jsonObj.comments && Object.keys(jsonObj.comments).length > 0)\r\n {\r\n for (const key in jsonObj.comments)\r\n {\r\n if (jsonObj.comments[key])\r\n {\r\n const objComment = Comment.fromJsonObject(jsonObj.comments[key]);\r\n comments.push(objComment);\r\n }\r\n }\r\n }\r\n\r\n const historic = [];\r\n if (jsonObj.historic)\r\n {\r\n for (const version of jsonObj.historic)\r\n {\r\n historic.push(File.fromJsonObject(version));\r\n }\r\n }\r\n\r\n const notes = [];\r\n\r\n if (jsonObj.notes)\r\n {\r\n for (const note of jsonObj.notes)\r\n {\r\n notes.push(Note.fromJsonObject(note));\r\n }\r\n }\r\n\r\n\r\n newFile.comments\t\t= comments;\r\n newFile.notes = notes;\r\n newFile.historic = historic;\r\n\r\n const dateCreationJson = jsonObj.date || jsonObj.dateCreation || Date.parse(jsonObj.date_creation);\r\n if (dateCreationJson)\r\n {\r\n newFile.dateCreation = new Date(dateCreationJson);\r\n }\r\n\r\n newFile.author\t\t\t\t= jsonObj.author\t\t\t|| jsonObj.createur\t\t\t\t|| '';\r\n newFile.description\t\t\t= jsonObj.description\t\t|| jsonObj.descriptif\t\t\t|| '';\r\n newFile.types\t\t\t = jsonObj.typeFile\t\t\t|| jsonObj.types\t\t\t\t|| '';\r\n\t\tnewFile.tags\t\t\t = jsonObj.tags\t\t\t\t|| jsonObj.tags\t\t\t\t\t|| '';\r\n\r\n const dateLastUpdateJson = jsonObj.dateLastUpdate || Date.parse(jsonObj.date_last_update);\r\n if (dateLastUpdateJson)\r\n {\r\n newFile.dateModification\t= new Date(dateLastUpdateJson);\r\n }\r\n\r\n newFile.extension\t\t\t= jsonObj.extension\t\t\t|| '';\r\n newFile.encoded\t\t\t\t= jsonObj.chiffrage\t\t\t|| false;\r\n newFile.updater\t\t\t\t= jsonObj.updater\t\t\t|| '';\r\n newFile.editable\t\t\t= jsonObj.editable\t\t\t|| false;\r\n\t\tnewFile.typeDocument = '';\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Gestion des tags, relation doc / tache\r\n\t\t// ---------------------------------------\r\n\t\tconst flagtype: any = {};\r\n\r\n\t\tfor (const value of newFile.tags)\r\n\t\t{\r\n\t\t\t// si on a des :: on splite\r\n\t\t\tif (value.startsWith('*'))\r\n\t\t\t{\r\n\t\t\t\tconst arrayValue\t= value.split('::');\r\n\t\t\t\tconst key\t\t\t= arrayValue[0];\r\n\t\t\t\tconst valueTag\t = arrayValue[1];\r\n\r\n\t\t\t\tswitch (key)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase '*type':\r\n\t\t\t\t\t\tnewFile.typeDocument = valueTag;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase '*task':\r\n newFile.taskId = valueTag;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase '*check':\r\n\t\t\t\t\t\tnewFile.check = valueTag;\r\n break;\r\n\r\n case 'deleted':\r\n newFile.deleted = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n return newFile;\r\n }\r\n\r\n\r\n /**\r\n * Creates an instance of File\r\n *\r\n * @param _id\r\n * @param _name\r\n * @param _comments\r\n * @param _author\r\n * @param _description\r\n * @param _extension\r\n * @param _types\r\n * @param _updater\r\n *\r\n * @memberOf File\r\n */\r\n constructor(\r\n private _idSubject:\t\t\tstring\t\t\t= '',\r\n private _idEpreuve:\t\t\tstring\t\t\t= '',\r\n private _path:\t\t\t\tstring\t\t\t= '',\r\n private _pathPdf:\t\t\tstring\t\t\t= '',\r\n private _errorPdf:\t\t\tboolean = false,\r\n private _pathThumbs:\t\tstring[]\t\t= [],\r\n private _errorThumb:\t\tboolean = false,\r\n private _comments:\t\t\tComment[]\t\t= [],\r\n private _historic:\t\t\tFile[]\t\t\t= [],\r\n private _notes:\t\t\t\tNote[]\t\t\t= [],\r\n private _author:\t\t\tstring\t\t\t= '',\r\n private _extension:\t\t\tstring\t\t\t= '',\r\n private _taskId:\t\t\tstring\t\t\t= '',\r\n private _currentStep:\t\tstring = '',\r\n private _check:\t\t\t\tstring\t\t\t= '',\r\n private _types:\t\t\t\tstring[]\t\t= [],\r\n private _tags:\t\t\t\tstring[]\t\t= [],\r\n private _typeDocument:\t\tstring\t\t\t= '',\r\n private _encoded:\t\t\tboolean\t\t\t= false,\r\n private _updater:\t\t\tstring\t\t\t= '',\r\n private _thumbs:\t\t\tany[]\t\t\t= [],\r\n private _completed:\t\t\tboolean\t\t\t= true,\r\n private _modified:\t\t\tboolean = false,\r\n private _fileItem:\t\t\tFileItem\t\t= null,\r\n private _uploader:\t\t\tFileUploader\t= null,\r\n\t\tprivate _encryptedAesKeys:\tany[]\t\t\t= [],\r\n\t\tprivate _decryptedAesKeys: \tany[]\t\t\t= [],\r\n private _editable:\t\t\tboolean = false,\r\n private _isDownloading:\t\tboolean = false,\r\n private _deleted:\t\t\tboolean = false\r\n )\r\n\t{\r\n super();\r\n }\r\n\r\n get idSubject()\t\t\t{ return this._idSubject; }\r\n get idEpreuve()\t\t\t{ return this._idEpreuve; }\r\n get path()\t\t\t\t{ return this._path; }\r\n get pathPdf()\t\t\t{ return this._pathPdf; }\r\n get pathThumbs()\t\t{ return this._pathThumbs; }\r\n get errorThumb()\t\t{ return this._errorThumb; }\r\n get errorPdf()\t\t\t{ return this._errorPdf; }\r\n get thumbs()\t\t\t{ return this._thumbs; }\r\n get comments()\t\t\t{ return this._comments; }\r\n get historic()\t\t\t{ return this._historic; }\r\n get notes()\t\t\t\t{ return this._notes; }\r\n get author()\t\t\t{ return this._author; }\r\n get extension()\t\t\t{ return this._extension; }\r\n get taskId()\t\t\t{ return this._taskId; }\r\n get currentStep()\t\t{ return this._currentStep; }\r\n get check()\t\t\t\t{ return this._check; }\r\n get tags()\t\t\t\t{ return this._tags; }\r\n get types()\t\t\t\t{ return this._types; }\r\n get typeDocument()\t\t{ return this._typeDocument; }\r\n get encoded()\t\t\t{ return this._encoded; }\r\n get updater()\t\t\t{ return this._updater; }\r\n get completed()\t\t\t{ return this._completed; }\r\n get modified()\t\t\t{ return this._modified; }\r\n get uploader()\t\t\t{ return this._uploader; }\r\n get fileItem()\t\t\t{ return this._fileItem; }\r\n\tget encryptedAesKeys()\t{ return this._encryptedAesKeys; }\r\n\tget decryptedAesKeys()\t{ return this._decryptedAesKeys; }\r\n get editable()\t\t\t{ return this._editable; }\r\n get isDownloading()\t\t{ return this._isDownloading; }\r\n get deleted()\t\t\t{ return this._deleted; }\r\n\r\n\r\n set idSubject(idSubject) { this._idSubject\t\t\t= idSubject; }\r\n set idEpreuve(idEpreuve) { this._idEpreuve\t\t\t= idEpreuve; }\r\n set path(path) { this._path\t\t\t\t= path; }\r\n set pathPdf(pathPdf) { this._pathPdf\t\t\t\t= pathPdf; }\r\n set errorPdf(errorPdf) { this._errorPdf\t\t\t= errorPdf; }\r\n set pathThumbs(pathThumbs) { this._pathThumbs\t\t\t= pathThumbs; }\r\n set errorThumb(errorThumb) { this._errorThumb\t\t\t= errorThumb; }\r\n set thumbs(thumbs) { this._thumbs\t\t\t\t= thumbs; }\r\n set comments(comments) { this._comments\t\t\t= comments; }\r\n set historic(historic) { this._historic\t\t\t= historic; }\r\n set notes(notes) { this._notes\t\t\t\t= notes; }\r\n set author(author) { this._author\t\t\t\t= author; }\r\n set extension(extension) { this._extension\t\t\t= extension; }\r\n set taskId(taskId)\t\t\t\t { this._taskId\t\t\t\t= taskId; }\r\n set currentStep(step) { this._currentStep\t\t\t= step; }\r\n set tags(tags)\t\t\t\t\t { this._tags\t\t\t\t= tags; }\r\n set check(check)\t\t\t\t { this.check\t\t\t\t= check; }\r\n set types(types) { this._types\t\t\t\t= types; }\r\n set typeDocument(typeDocument) { this._typeDocument\t\t= typeDocument; }\r\n set encoded(encoded) { this._encoded\t\t\t\t= encoded; }\r\n set updater(updater) { this._updater\t\t\t\t= updater; }\r\n\tset completed(completed)\t\t\t\t{ this._completed\t\t\t= completed; }\r\n set modified(modified) { this._modified\t\t\t= modified; }\r\n set uploader(uploader) { this._uploader\t\t\t= uploader; }\r\n set fileItem(fileItem) { this._fileItem\t\t\t= fileItem; }\r\n\tset encryptedAesKeys(encryptedAesKeys) { this._encryptedAesKeys\t= encryptedAesKeys; }\r\n\tset decryptedAesKeys(decryptedAesKeys) { this._decryptedAesKeys\t= decryptedAesKeys; }\r\n set editable(editable) { this._editable\t\t\t= editable; }\r\n set isDownloading(isDownloading) { this._isDownloading\t\t= isDownloading; }\r\n set deleted(deleted) { this._deleted\t\t\t\t= deleted; }\r\n\r\n\r\n /**\r\n * \r\n */\r\n\tpublic calcMoyenneNotes()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (this.notes.length === 0)\r\n\t\t{\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlet sum: number = 0;\r\n\t\t\tfor (const note of this.notes)\r\n\t\t\t{\r\n\t\t\t\tsum += note.note;\r\n\t\t\t}\r\n\t\t\treturn sum / this.notes.length;\r\n\t\t}\r\n\t}\r\n\r\n\r\n /**\r\n * \r\n */\r\n public getVersions()\r\n {\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n const versions = [{\r\n libelle:\tthis.name,\r\n date:\t\tthis.dateCreation,\r\n path:\t\tthis.path\r\n }];\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n for (const version of this.historic)\r\n {\r\n versions.push({\r\n libelle:\tversion.name,\r\n date:\t\tversion.dateCreation,\r\n path:\t\tversion.path\r\n });\r\n }\r\n return versions;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public toJson(): any\r\n {\r\n\r\n const commentsJson = [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n for (const comment of this.comments)\r\n {\r\n commentsJson.push(comment.toJson());\r\n }\r\n\r\n const notesJson = [];\r\n\r\n for (const note of this.notes)\r\n {\r\n notesJson.push(note.toJson());\r\n }\r\n const historicJson = [];\r\n\r\n for (const version of this.historic)\r\n\t\t{\r\n\t\t\thistoricJson.push(version.toJson());\r\n\t\t}\r\n\r\n\t\tconst tagsArray = [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// On récupère les valeurs de type et de tache ... pour remettre dans tags\r\n\t\t// ---------------------------------------\r\n\t\tif (this.typeDocument)\r\n\t\t{\r\n\t\t\ttagsArray.push('*type::' + this.typeDocument);\r\n\t\t}\r\n\t\tif (this.taskId)\r\n\t\t{\r\n\t\t\ttagsArray.push('*task::' + this.taskId);\r\n\t\t}\r\n\t\tif (this.check)\r\n\t\t{\r\n\t\t\ttagsArray.push('*check::' + this.check);\r\n }\r\n if (this.deleted === true)\r\n {\r\n tagsArray.push('deleted');\r\n }\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n const result = {\r\n id:\t\t\t\t\tthis.id,\r\n idsubject:\t\t\tthis.idSubject,\r\n idepreuve:\t\t\tthis.idEpreuve,\r\n libelle:\t\t\tthis.name,\r\n path:\t\t\t\tthis.path,\r\n pathPdf: this.pathPdf,\r\n paththumbs:\t\t\tthis.pathThumbs,\r\n comments:\t\t\tcommentsJson,\r\n historic:\t\t\thistoricJson,\r\n notes:\t\t\t\tnotesJson,\r\n createur:\t\t\tthis.author,\r\n descriptif:\t\t\tthis.description,\r\n extension:\t\t\tthis.extension,\r\n types:\t\t\t\tthis.types,\r\n\t\t\ttags:\t\t\t\ttagsArray,\r\n updater:\t\t\tthis.updater,\r\n chiffrage:\t\t\tthis.encoded,\r\n date_creation:\t\tthis.dateCreation,\r\n editable:\t\t this.editable,\r\n date_last_update:\tthis.dateModification\r\n };\r\n return result;\r\n }\r\n}\r\n\r\n\r\n","import { Sujet }\tfrom './sujet.class';\r\nimport { Task }\t from './task.class';\r\nimport { Comment } from './comment.class';\r\nimport * as _\t\tfrom 'underscore';\r\n\r\n\r\n/**\r\n *\r\n * @export\r\n * @class Matiere\r\n */\r\nexport class Matiere\r\n{\r\n\r\n\r\n /**\r\n * Creates an instance of Matiere.\r\n *\r\n * @param {string} [_time='']\r\n * @param {boolean} [_show=false]\r\n * @param {boolean} [_selected=false]\r\n * @param {string} [_name='']\r\n * @param {string} [_date_creation='']\r\n * @param {string} [_date_passage='']\r\n * @param {string} [_author='']\r\n * @param {string} [_responsable='']\r\n * @param {string} [_redaction_start='']\r\n * @param {string} [_redaction_end='']\r\n * @param {string} [_meeting_date='']\r\n * @param {string} [_redaction_dead_line='']\r\n * @param {string} [_description='']\r\n * @param {Sujet[]} [_sujets=[]]\r\n *\r\n * @memberOf Matiere\r\n */\r\n constructor(\r\n private _id: string\t\t= '',\r\n private _time: string\t\t= '',\r\n private _show: boolean\t\t= false,\r\n private _selected: boolean\t\t= false,\r\n private _name: string\t\t= '',\r\n private _filiere: string\t\t= '',\r\n private _typeEpreuve: string\t\t= '',\r\n private _coeff:\t\t\t\tstring\t\t= '',\r\n private _duree: string\t\t= '',\r\n private _notation: string\t\t= '',\r\n private _point: string\t\t= '',\r\n private _dateLivraison:\t\tstring\t\t= '',\r\n private _dateCreation: Date\t\t= null,\r\n private _dateLastUpdate: string\t\t= '',\r\n private _datePassage: string\t\t= '',\r\n private _author: string\t\t= '',\r\n private _responsable: string\t\t= '',\r\n private _dateStart:\t\t\tstring\t\t= '',\r\n private _dateEnd:\t\t\tstring\t\t= '',\r\n private _redactionStart: string\t\t= '',\r\n private _redactionEnd: string\t\t= '',\r\n private _meetingDate: string\t\t= '',\r\n private _redactionDeadLine:\tstring\t\t= '',\r\n private _description: string\t\t= '',\r\n private _flags: string[] = [],\r\n private _sujets: Sujet[]\t\t= [],\r\n private _examenId: string\t\t= '',\r\n private _comments: Comment[]\t= [],\r\n private _tasks: Task[] = [],\r\n private _visible: boolean = true,\r\n private _scenario: any = null,\r\n private _maxStep:\t\t\tstring = '0',\r\n private _scenariocptsteps: number = 0\r\n )\r\n {\r\n }\r\n\r\n\r\n get id() { return this._id; }\r\n get time() { return this._time; }\r\n get show() { return this._show; }\r\n get selected() { return this._selected; }\r\n get name() { return this._name; }\r\n get dateCreation() { return this._dateCreation; }\r\n get dateLastUpdate() { return this._dateLastUpdate; }\r\n get dateStart()\t\t\t{ return this._dateStart; }\r\n get dateEnd()\t\t\t{ return this._dateEnd; }\r\n get datePassage() { return this._datePassage; }\r\n get author() { return this._author; }\r\n get responsable() { return this._responsable; }\r\n get redactionStart() { return this._redactionStart; }\r\n get redactionEnd() { return this._redactionEnd; }\r\n get meetingDate() { return this._meetingDate; }\r\n get redactionDeadLine() { return this._redactionDeadLine; }\r\n get description() { return this._description; }\r\n get flags() { return this._flags; }\r\n get sujets() { return this._sujets; }\r\n get examenId()\t\t\t{ return this._examenId; }\r\n get comments() { return this._comments; }\r\n get tasks() { return this._tasks; }\r\n get filiere()\t\t\t{ return this._filiere; }\r\n get typeEpreuve()\t\t{ return this._typeEpreuve; }\r\n get coeff()\t\t\t\t{ return this._coeff; }\r\n get duree()\t\t\t\t{ return this._duree; }\r\n get notation()\t\t\t{ return this._notation; }\r\n get point()\t\t\t\t{ return this._point; }\r\n get dateLivraison()\t\t{ return this._dateLivraison; }\r\n get visible() { return this._visible; }\r\n get scenario() { return this._scenario; }\r\n get scenariocptsteps() { return this._scenariocptsteps; }\r\n get maxStep()\t\t\t{ return this._maxStep; }\r\n\r\n\r\n set id(psValue) { this._id = psValue; }\r\n set show(psValue) { this._show = psValue; }\r\n set time(psValue) { this._time = psValue; }\r\n set selected(psValue) { this._selected = psValue; }\r\n set name(psValue) { this._name = psValue; }\r\n set dateCreation(psValue) { this._dateCreation\t\t= psValue; }\r\n set dateLastUpdate(psValue) { this._dateLastUpdate\t\t= psValue; }\r\n set datePassage(psValue) { this._dateLastUpdate = psValue; }\r\n set author(psValue) { this._author = psValue; }\r\n set responsable(psValue) { this._responsable = psValue; }\r\n set dateStart(psValue)\t\t\t{ this._dateStart\t\t\t= psValue; }\r\n\tset dateEnd(psValue)\t\t\t{ this._dateEnd\t\t\t\t= psValue; }\r\n set redactionStart(psValue) { this._redactionStart\t\t= psValue; }\r\n set redactionEnd(psValue) { this._redactionEnd\t\t= psValue; }\r\n set meetingDate(psValue) { this._meetingDate\t\t\t= psValue; }\r\n set redactionDeadLine(psValue)\t{ this._redactionDeadLine\t= psValue; }\r\n set description(psValue) { this._description = psValue; }\r\n set flags(psValue) { this._flags = psValue; }\r\n set sujets(psValue) { this._sujets = psValue; }\r\n set examenId(psValue)\t\t\t{ this._examenId\t\t\t= psValue; }\r\n set comments(psValue)\t\t\t{ this._comments = psValue; }\r\n set filiere(psValue)\t\t\t{ this._filiere\t\t\t\t= psValue; }\r\n set tasks(psValue) { this._tasks = psValue; }\r\n\tset typeEpreuve(psValue)\t\t{ this._typeEpreuve\t\t\t= psValue; }\r\n\tset coeff(psValue) \t{ this._coeff\t\t\t\t= psValue; }\r\n\tset duree(psValue) \t{ this._duree\t\t\t\t= psValue; }\r\n\tset notation(psValue) \t{ this._notation\t\t\t= psValue; }\r\n\tset point(psValue) \t{ this._point\t\t\t\t= psValue; }\r\n\tset dateLivraison(psValue)\t\t{ this._dateLivraison\t\t= psValue; }\r\n set visible(psValue)\t\t\t{ this._visible\t\t = psValue; }\r\n set scenario(psValue)\t\t\t{ this._scenario\t\t = psValue; }\r\n set scenariocptsteps(psValue)\t{ this._scenariocptsteps\t= psValue; }\r\n set maxStep(psValue)\t\t\t{ this._maxStep\t\t\t\t= psValue; }\r\n\r\n\r\n /**\r\n * Création d'un objet Matiere en fonction d'un objet json donné\r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Matiere}\r\n *\r\n * @memberOf Matiere\r\n */\r\n public static fromJsonObject(jsonObj: any): Matiere\r\n {\r\n\r\n\t\tlet result = new Matiere();\r\n\r\n result.time\t= jsonObj.time || 0;\r\n result.id = jsonObj.uuid || jsonObj.id || '';\r\n\r\n result.show = (typeof(jsonObj.show)\t\t=== 'string' && jsonObj.show === 'true') || jsonObj.show === true ? true : false;\r\n result.selected\t= (typeof(jsonObj.selected)\t=== 'string' && jsonObj.selected === 'true') || jsonObj.selected === true ? true : false;\r\n\r\n result.name = jsonObj.name\t\t|| jsonObj.libelle || '';\r\n result.examenId = jsonObj.examen_id\t|| '';\r\n result.flags = jsonObj.flags || [];\r\n\r\n\t\tif (jsonObj.datas)\r\n\t\t{\r\n\t\t\tresult.filiere\t\t\t\t= jsonObj.datas.filiere\t\t\t\t|| '';\r\n\t\t\tresult.description = jsonObj.datas.description\t\t\t|| '';\r\n\t\t\tresult.dateCreation\t\t\t= jsonObj.datas.dateCreation\t\t|| '';\r\n\t\t\tresult.datePassage = jsonObj.datas.datePassage\t\t\t|| '';\r\n\t\t\tresult.author = jsonObj.datas.author\t\t\t\t|| '';\r\n\t\t\tresult.responsable = jsonObj.datas.responsable\t\t\t|| '';\r\n\t\t\tresult.redactionStart = jsonObj.datas.redactionStart\t\t|| '';\r\n\t\t\tresult.redactionEnd = jsonObj.datas.redactionEnd\t\t|| '';\r\n\t\t\tresult.meetingDate = jsonObj.datas.meetingDate\t\t\t|| '';\r\n\t\t\tresult.redactionDeadLine\t= jsonObj.datas.redactionDeadline\t|| '';\r\n result.duree\t\t\t\t= jsonObj.datas.duree\t\t\t\t|| '';\r\n result.scenariocptsteps = jsonObj.datas.scenariocptsteps || 0;\r\n result.maxStep\t\t\t\t= jsonObj.datas.maxStep\t\t\t\t|| 0;\r\n result.typeEpreuve = jsonObj.datas.typeEpreuve\t\t\t|| '';\r\n\r\n if (jsonObj.datas.scenario)\r\n {\r\n if (typeof(jsonObj.datas.scenario) === 'string')\r\n {\r\n result.scenario = JSON.parse(jsonObj.datas.scenario);\r\n }\r\n else\r\n {\r\n result.scenario = jsonObj.datas.scenario;\r\n }\r\n }\r\n else\r\n {\r\n result.scenario = null;\r\n\t\t\t}\r\n }\r\n\r\n result.dateCreation = result.dateCreation || jsonObj.creationdate;\r\n result.dateCreation = new Date(result.dateCreation);\r\n result.author\t\t= result.author || jsonObj.creator;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Initialisation des sujets contenus dans la matiere\r\n\t\t// ---------------------------------------\r\n if (jsonObj.sujets && jsonObj.sujets.length)\r\n {\r\n for (let i = 0; i < jsonObj.sujets.length; i++)\r\n {\r\n result.sujets.push(Sujet.fromJsonObject(jsonObj.sujets[i]));\r\n }\r\n\r\n\t\t\tresult.sujets.sort(function (a, b)\r\n {\r\n var nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n var nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\r\n if (nameA < nameB)\r\n {\r\n return -1;\r\n }\r\n if (nameA > nameB)\r\n {\r\n return 1;\r\n }\r\n\r\n // names must be equal\r\n return 0;\r\n });\r\n }\r\n\r\n\r\n\t\tlet date = jsonObj.creationdate || jsonObj.creation_date;\r\n\t\tresult.dateCreation = new Date(date);\r\n\r\n //initialisation des commentaires contenus dans la matiere\r\n if (jsonObj.comments && Object.keys(jsonObj.comments).length > 0)\r\n {\r\n for (let key in jsonObj.comments)\r\n {\r\n if (jsonObj.comments[key])\r\n {\r\n let objComment = Comment.fromJsonObject(jsonObj.comments[key]);\r\n result.comments.push(objComment);\r\n }\r\n }\r\n\t\t}\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param {any} info\r\n * @returns\r\n *\r\n * @memberOf Matiere\r\n */\r\n public extractBranchInfos(info: any)\r\n {\r\n let infoCopy = Object.assign({}, info);\r\n let infos: any = [];\r\n\r\n infoCopy.idMatiere = this.id;\r\n infoCopy.timeMatiere = this.time;\r\n infoCopy.nameMatiere = this.name;\r\n infoCopy.dateCreationMatiere = this.dateCreation;\r\n infoCopy.datePassageMatiere = this.datePassage;\r\n infoCopy.authorMatiere = this.author;\r\n infoCopy.responsableMatiere = this.responsable;\r\n infoCopy.redactionStartMatiere = this.redactionStart;\r\n infoCopy.redactionEndMatiere = this.redactionEnd;\r\n infoCopy.meetingDateMatiere = this.meetingDate;\r\n infoCopy.redactionDeadLineMatiere = this.redactionDeadLine;\r\n infoCopy.descriptionMatiere = this.description;\r\n infoCopy.filiere\t\t\t = this.filiere;\r\n infoCopy.duree\t\t\t\t\t\t= this.duree;\r\n infoCopy.maxStep\t\t\t\t\t= this.maxStep;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n if (this.sujets.length > 0)\r\n {\r\n for (let key in this.sujets)\r\n {\r\n infos = infos.concat(this.sujets[key].extractBranchInfos(infoCopy));\r\n }\r\n }\r\n else\r\n {\r\n infos.push(infoCopy);\r\n }\r\n\r\n return infos;\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param {any} matiereObject\r\n * @param {any} [propertyFounded={}]\r\n *\r\n * @memberOf Matiere\r\n */\r\n public updateSujetsAvailable(matiereObject: any, propertyFounded = {})\r\n {\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let sujetNames = _.uniq(_.map(matiereObject, function (matiere: any) { return matiere['nameSujet']; }));\r\n let currentSujets;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n this.sujets = _.reject(this.sujets, function (sujet: any) { return !sujetNames.includes(sujet.name); });\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let key in this.sujets)\r\n\t\t{\r\n\t\t\tcurrentSujets = _.where(matiereObject, { nameSujet: this.sujets[key].name });\r\n\t\t}\r\n }\r\n\r\n\r\n /**\r\n * \r\n * @param paramsSelected \r\n */\r\n public getSelectedItems(paramsSelected: any)\r\n\t{\r\n\r\n\t\tlet result = [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (paramsSelected['epreuve'] && this.id === paramsSelected['epreuve'])\r\n\t\t{\r\n\t\t\tresult.push(this);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n /**\r\n * \r\n * @param paramsShowed \r\n */\r\n\tpublic getShowedItems(paramsShowed: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet result = [];\r\n\r\n\t\tif (paramsShowed[this.id] && paramsShowed[this.id] === 'epreuve')\r\n\t\t{\r\n\t\t\tresult.push(this);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n }\r\n \r\n\r\n /**\r\n\t * convertion d'un objet Matiere au format Json\r\n\t */\r\n\tpublic toJson()\r\n\t{\r\n\t\tlet result: any = {\r\n\t\t\tid:\t\t\t\t this.id,\r\n type: 'epreuve',\r\n libelle:\t\t\tthis.name,\r\n examenId:\t\t\tthis.examenId,\r\n flags: this.flags,\r\n\t\t\tdatas:\r\n\t\t\t{\r\n\t\t\t\ttime:\t\t\t\tthis.time,\r\n\t\t\t\tshow:\t\t\t\tthis.show\t\t? 'true' : 'false',\r\n\t\t\t\tselected:\t\t\tthis.selected\t? 'true' : 'false',\r\n\t\t\t\tdateCreation:\t\tthis.dateCreation,\r\n\t\t\t\tdatePassage:\t\tthis.datePassage,\r\n\t\t\t\tauthor:\t\t\t\tthis.author,\r\n\t\t\t\tresponsable:\t\tthis.responsable,\r\n\t\t\t\tdateStart:\t\t\tthis.dateStart,\r\n\t\t\t\tdateEnd:\t\t\tthis.dateEnd,\r\n\t\t\t\tredaction_start:\tthis.redactionStart,\r\n\t\t\t\tredaction_end:\t\tthis.redactionEnd,\r\n\t\t\t\tmeeting_date:\t\tthis.meetingDate,\r\n\t\t\t\tredaction_deadline: this.redactionDeadLine,\r\n\t\t\t\tdescription:\t\tthis.description,\r\n\t\t\t\tfiliere:\t\t\tthis.filiere,\r\n\t\t\t\ttypeEpreuve:\t\tthis.typeEpreuve,\r\n\t\t\t\tcoeff:\t\t\t\tthis.coeff,\r\n\t\t\t\tduree:\t\t\t\tthis.duree,\r\n\t\t\t\tnotation:\t\t\tthis.notation,\r\n\t\t\t\tpoint:\t\t\t\tthis.point,\r\n dateLivraison:\t\tthis.dateLivraison,\r\n scenario: this.scenario,\r\n max_step: this.maxStep,\r\n scenariocptsteps: this.scenariocptsteps\r\n\t\t\t}\r\n\t\t};\r\n\r\n // initialisation des commentaires dans la structure json retournée\r\n if (this.comments.length > 0)\r\n\t\t{\r\n\t\t\tresult.comments = [];\r\n\t\t\tfor (let comment of this.comments)\r\n\t\t\t{\r\n\t\t\t\tresult.comments.push(comment.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","//import { HtmlMakerComponent } from '../components/html-maker/html-maker.component';\r\nimport { ComponentFactoryResolver } from '@angular/core';\r\n\r\n\r\n/**\r\n * Classe représentant les membres d'une ... classe\r\n * Permet d'affecter un type d'input par membre de classe et d'avoir leur rendu par un getHTML.\r\n * @export\r\n * @class User\r\n */\r\nexport class Member\r\n{\r\n//\thtmlMaker: HtmlMakerComponent;\r\n\tcomponentFactoryResolver: ComponentFactoryResolver;\r\n\r\n /**\r\n * Creates an instance of User.\r\n * \r\n * @param {number} [_id=0]\r\n * @param {string} [_username='']\r\n * @param {string} [_etablissement='']\r\n * @param {string} [_session='']\r\n * @param {string} [_examen='']\r\n * @param {string} [_status='']\r\n * \r\n * @memberOf User\r\n */\r\n constructor(\r\n private _msId:\t\t\t\tstring\t= '',\r\n private _msName:\t\t\tstring\t= '',\r\n\t\tprivate _msClass:\t\t\tstring\t= '',\r\n private _msValue:\t\t\tany\t\t= '',\r\n private _msType:\t\t\tstring\t= '',\r\n private _msNgModel:\t\t\tstring\t= '',\r\n private _msPlaceholder:\t\tstring\t= '',\r\n private _mbRequired:\t\tboolean = false,\r\n\t\tprivate _mbAutoComplete:\tboolean = false,\r\n\t\tprivate _mbHidden:\t\t\tboolean = false,\r\n\t\tprivate _msSpecial:\t\t\tstring\t= ''\r\n\t)\r\n\t{\r\n//\t\tthis.htmlMaker = new HtmlMakerComponent(this.componentFactoryResolver);\r\n\t}\r\n\r\n\r\n get msId():\t\t\t\tstring\t{ return this._msId; }\r\n get msName():\t\t\tstring\t{ return this._msName; }\r\n get msClass():\t\t\tstring\t{ return this._msClass; }\r\n get msValue():\t\t\tany\t\t{ return this._msValue; }\r\n get msType():\t\t\tstring\t{ return this._msType; }\r\n get msNgModel():\t\tstring\t{ return this._msNgModel; }\r\n get msPlaceholder():\tstring\t{ return this._msPlaceholder; }\r\n get mbRequired():\t\tboolean { return this._mbRequired; }\r\n get mbAutoComplete():\tboolean { return this._mbAutoComplete; }\r\n get mbHidden():\t\t\tboolean { return this._mbHidden; }\r\n get msSpecial():\t\tstring\t{ return this._msSpecial; }\r\n\r\n\r\n\tset msId(psId:\t\t\t\t\t\tstring)\t\t{ this._msId\t\t\t= psId; }\r\n set msName(psName:\t\t\t\t\tstring)\t\t{ this._msName\t\t\t= psName; }\r\n set msClass(psClass:\t\t\t\tstring)\t\t{ this._msClass\t\t\t= psClass; }\r\n\tset msValue(psvalue:\t\t\t\tany)\t\t{ this._msValue\t\t\t= psvalue; }\r\n set msType(psType:\t\t\t\t\tstring)\t\t{ this._msType\t\t\t= psType; }\r\n set msNgModel(psNgModel:\t\t\tstring)\t\t{ this._msNgModel\t\t= psNgModel; }\r\n set msPlaceholder(psPlaceholder:\tstring)\t\t{ this._msPlaceholder\t= psPlaceholder; }\r\n set mbRequired(pbRequired:\t\t\tboolean)\t{ this._mbRequired\t\t= pbRequired; }\r\n set mbAutoComplete(pbAutoComplete:\tboolean)\t{ this._mbAutoComplete\t= pbAutoComplete; }\r\n set mbHidden(pbHidden:\t\t\t\tboolean)\t{ this._mbHidden\t\t= pbHidden; }\r\n set msSpecial(psSpecial:\t\t\tstring)\t\t{ this._msSpecial\t\t= psSpecial; }\r\n\r\n\r\n\t/**\r\n\t * Construit le code HTML pour un input donné\r\n\t */\r\n\tpublic getFormInput() \r\n\t{\r\n\t\tlet sReturn = '';\r\n\t\t\r\n\t\tswitch (this.msType)\r\n\t\t{\r\n//\t\t\tcase 'input':\r\n//\t\t\t\tsReturn = this.htmlMaker.getInputText(this.msNgModel, this.msClass, this.msName, this.msId);\r\n//\t\t\t\tbreak;\r\n//\t\t\t\t\r\n//\t\t\tcase 'textarea':\r\n//\t\t\t\tsReturn = this.htmlMaker.getTextArea(this.msNgModel, this.msClass, this.msName, this.msId);\r\n//\t\t\t\tbreak;\r\n//\t\t\t\t\r\n//\t\t\tcase 'date':\r\n////\t\t\t\tsReturn = this.getDatePicker();\r\n//\t\t\t\tbreak;\r\n//\t\t\t\t\r\n//\t\t\tcase 'checkbox':\r\n//\t\t\t\tsReturn = this.htmlMaker.getCheckbox(this.msNgModel, this.msClass, this.msName, this.msId);\r\n//\t\t\t\tbreak;\r\n//\t\t\t\t\r\n//\t\t\tcase 'radio':\r\n//\t\t\t\tsReturn = this.htmlMaker.getCheckbox(this.msNgModel, this.msClass, this.msName, this.msId);\r\n//\t\t\t\tbreak;\r\n//\t\t\t\t\r\n////\t\t\tcase 'input':\r\n////\t\t\t\tsReturn = this.getInput();\r\n////\t\t\t\tbreak;\r\n//\r\n//\t\t\tcase 'special':\r\n//\t\t\t\tsReturn = this.getSpecial();\r\n//\t\t\t\tbreak;\r\n//\r\n\t\t\tdefault:\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\t\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n\r\n\tprivate getSpecial()\r\n\t{\r\n\t\tlet sReturn = '';\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n}\r\n\r\n\r\n","import { User }\t\t\t from '../classes/user.class';\r\nimport { IMessage } from '../models/message.model';\r\n\r\n\r\n/**\r\n * \r\n * @export\r\n * @class Message\r\n */\r\nexport class Message implements IMessage\r\n{\r\n\r\n /**\r\n * \r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Message}\r\n * \r\n * @memberOf Message\r\n */\r\n public static fromJsonObject(jsonObj: any)\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let result = new Message();\r\n \r\n result.userId\t= jsonObj._userId\t? jsonObj._userId\t: '';\r\n result.content\t= jsonObj._content\t? jsonObj._content\t: '';\r\n result.ticks\t= jsonObj._ticks\t? jsonObj._ticks\t: '';\r\n result.date = jsonObj.id;\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Creates an instance of Message.\r\n * \r\n * @param {User} [_user=new User()]\r\n * @param {string} [_content='']\r\n * @param {Date} [_date=new Date()]\r\n * \r\n * @memberOf Message\r\n */\r\n constructor(\r\n public _userId:\t\tstring\t= '',\r\n public _content:\tstring\t= '',\r\n public _date:\t\tany\t\t= null,\r\n\t\tpublic _ticks:\t\tstring\t= ''\r\n ){ }\r\n\r\n\r\n get userId()\t{ return this._userId; }\r\n get content()\t{ return this._content; }\r\n get ticks()\t\t{ return this._ticks; }\r\n get date() { return this._date; }\r\n\r\n\r\n set userId(userId)\t\t{ this._userId\t= userId; }\r\n set ticks(ticks)\t\t{ this._ticks\t= ticks; }\r\n set content(content) { this._content = content; }\r\n set date(date) { this._date = date; }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic toJson()\r\n\t{\r\n\t\tlet result =\r\n\t\t\t{\r\n\t\t\t\tuserId:\t\tthis.userId,\r\n\t\t\t\tcontent:\tthis.content,\r\n\t\t\t\tticks:\t\tthis.ticks,\r\n\t\t\t\tdate:\t\tthis.date\r\n\t\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Component }\tfrom './component';\r\n\r\n\r\nexport class Note extends Component\r\n{\r\n\r\n private _idUser: string = '';\r\n private _note: number = 0;\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public static fromJsonObject(jsonObj: any): Note\r\n {\r\n\r\n let note = new Note();\r\n\r\n note.dateCreation\t= jsonObj.creationdate;\r\n note.idUser\t\t\t= jsonObj.idUser;\r\n note.note\t\t\t= jsonObj.note;\r\n\r\n return note;\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n constructor(creationDate: Date = new Date(), idUser: string = '', note: number = 0)\r\n {\r\n super();\r\n\t\t\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\t\r\n this.dateCreation\t= creationDate;\r\n this._idUser\t\t= idUser;\r\n this._note\t\t\t= note;\r\n }\r\n\r\n\r\n get idUser()\t{ return this._idUser; }\r\n\tget note()\t\t{ return this._note; }\r\n\r\n\tset idUser(idUser)\t{ this._idUser = idUser; }\r\n\tset note(note)\t\t{ this._note = note; }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public toJson()\r\n {\r\n let result = \r\n {\r\n idUser:\t\t\tthis.idUser,\r\n note:\t\t\tthis.note,\r\n creationdate:\tthis.dateCreation\r\n };\r\n\r\n return result;\r\n }\r\n}\r\n\r\n","import { Component }\t\t\tfrom './component';\r\nimport { Member }\t\t\tfrom './member.class';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n/**\r\n *\r\n * @export\r\n * @class Etablissement\r\n */\r\nexport class Page extends Component\r\n{\r\n\r\n\tpublic _visible: boolean = true;\r\n\r\n\tseries:\t\tMember;\r\n\tdate:\t\tMember;\r\n\tstart:\t\tMember;\r\n\tconsigne:\tMember;\r\n\tbareme:\t\tMember;\r\n\tcoef:\t\tMember;\r\n\tduration:\tMember;\r\n\tintro:\t\tMember;\r\n\tquestions:\tMember;\r\n\r\n\tsession:\tany;\r\n\texamen:\t\tany;\r\n\tepreuve:\tany;\r\n\r\n\r\n /**\r\n * Creates an instance of Session.\r\n *\r\n * @param {string} [_name='']\r\n * @param {boolean} [_show=false]\r\n * @param {boolean} [_selected=false]\r\n * @param {Examen[]} [_examens=[]]\r\n *\r\n * @memberOf Session\r\n */\r\n\tconstructor()\r\n\t{\r\n\t\tsuper();\r\n\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// ID\r\n\t\t// ---------------------------------------\r\n\t\tthis._id.msName\t\t\t= 'uuid';\r\n\t\tthis._id.msType\t\t\t= 'input';\r\n\t\tthis._id.msNgModel\t\t= 'idPage';\r\n\t\tthis._id.mbRequired\t\t= true;\r\n\t\tthis._id.mbAutoComplete = false;\r\n\t\tthis._id.mbHidden\t\t= true;\r\n\t\t\r\n\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// Nom\r\n\t\t// ---------------------------------------\r\n\t\tthis._name.msName\t\t\t= 'Nom';\r\n\t\tthis._name.msType\t\t\t= 'input';\r\n\t\tthis._name.msId\t\t\t\t= 'etab_form_input_name';\r\n\t\tthis._name.msClass\t\t\t= 'etab_form_input_name';\r\n\t\tthis._name.msNgModel\t\t= 'nomPage';\r\n\t\tthis._name.mbRequired\t\t= true;\r\n\t\tthis._name.msPlaceholder\t= 'Nom page';\r\n\t\tthis._name.mbAutoComplete\t= false;\r\n\t\tthis._name.mbHidden\t\t\t= false;\r\n\r\n\t\t\t\t\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// Description\r\n\t\t// ---------------------------------------\r\n\t\tthis._description.msName\t\t\t= 'Description';\r\n\t\tthis._description.msType\t\t\t= 'textarea';\r\n\t\tthis._description.mbRequired\t\t= true;\r\n\t\tthis._description.mbAutoComplete\t= false;\r\n\t\tthis._description.mbHidden\t\t\t= false;\r\n\t\tthis._description.msId\t\t\t\t= 'etab_form_input_desc';\r\n\t\tthis._description.msNgModel\t\t\t= 'descriptionModel';\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n * Création d'un objet Etablissement en fonction d'un objet json donné\r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Etablissement}\r\n *\r\n * @memberOf Etablissement\r\n */\r\n\tpublic static fromJsonObject(jsonObj: any): Page\r\n\t{\r\n\t\t// Initialisation de l'identifiant et du nom\r\n\t\tlet oEtablissement = new Page();\r\n\r\n\t\toEtablissement.id\t= jsonObj.id \t|| jsonObj.uuid \t|| 0;\r\n\t\toEtablissement.name = jsonObj.name \t|| jsonObj.libelle \t|| '';\r\n\r\n\t\treturn oEtablissement;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * convertion d'un objet Etablissement au format Json\r\n\t */\r\n\tpublic toJson()\r\n\t{\r\n\t\tlet result: any = \r\n\t\t{\r\n\t\t\tid:\tthis.id,\r\n\t\t\tdatas: {}\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Message }\tfrom '../classes/message.class';\r\nimport { User }\t\tfrom '../classes/user.class';\r\nimport { IRoom } from '../models/room.model';\r\nimport * as _\t\tfrom 'underscore';\r\n\r\n\r\n/**\r\n * \r\n * @export\r\n * @class Piece\r\n* */\r\nexport class Piece implements IRoom\r\n{\r\n\r\n\r\n /**\r\n * \r\n * \r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Piece}\r\n * \r\n * @memberOf Piece\r\n */\r\n public static fromJsonObject(jsonObj: any): Piece \r\n {\r\n\r\n let result = new Piece();\r\n\r\n result.id\t\t\t\t\t= jsonObj.uuid\t\t\t\t\t? jsonObj.uuid\t\t\t\t\t: '';\r\n result.type\t\t\t\t\t= jsonObj.isPublic\t\t\t\t? 'public'\t\t\t\t\t\t: 'group';\r\n result.name\t\t\t\t\t= jsonObj.libelle\t\t\t\t? jsonObj.libelle\t\t\t\t: '';\r\n result.creationDate\t\t\t= jsonObj.creationDate\t\t\t? jsonObj.creationDate\t\t\t: '';\r\n result.isPublic\t\t\t\t= jsonObj.isPublic\t\t\t\t? jsonObj.isPublic\t\t\t\t: '';\r\n result.isReadOnly\t\t\t= jsonObj.isReadOnly\t\t\t? jsonObj.isReadOnly\t\t\t: '';\r\n result.lastId\t\t\t\t= jsonObj.lastId\t\t\t\t? jsonObj.lastId\t\t\t\t: '';\r\n result.lastDate\t\t\t\t= jsonObj.lastDate\t\t\t\t? jsonObj.lastDate\t\t\t\t: '';\r\n result.firstDate\t\t\t= jsonObj.FirstDate\t\t\t\t? jsonObj.FirstDate\t\t\t\t: '';\r\n result.lastIdReadedByMe\t\t= jsonObj.lastIdReadedByMe\t\t? jsonObj.lastIdReadedByMe\t\t: '';\r\n result.lastIdReadedByHim\t= jsonObj.lastIdReadedByHim\t\t? jsonObj.lastIdReadedByHim\t\t: '';\r\n result.lastIdReceivedByHim\t= jsonObj.lastIdReceivedByHim\t? jsonObj.lastIdReceivedByHim\t: '';\r\n result.lastIdReceivedByMe\t= jsonObj.lastIdReceivedByMe\t? jsonObj.lastIdReceivedByMe\t: '';\r\n result.firstId\t\t\t\t= jsonObj.firstId\t\t\t\t? jsonObj.firstId\t\t\t\t: '';\r\n result.counter\t\t\t\t= jsonObj.counter\t\t\t\t? jsonObj.counter\t\t\t\t: '';\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Creates an instance of Piece.\r\n * \r\n * @param {number} [_id=0]\r\n * @param {User[]} [_users=[]]\r\n * @param {Message[]} [_messages=[]]\r\n * @param {string} [_type='']\r\n * @param {string} [_name='']\r\n * @param {string} [_description='']\r\n * @param {boolean} [_state=false]\r\n * \r\n * @memberOf Piece\r\n */\r\n constructor(\r\n public _id:\t\t\t\t\t\tstring = '',\r\n public _users:\t\t\t\t\tany[]\t\t= [],\r\n public _messages:\t\t\t\tMessage[] = [],\r\n public _type:\t\t\t\t\tstring = '',\r\n public _name:\t\t\t\t\tstring = '',\r\n public _displayName:\t\t\tstring = '',\r\n public _description:\t\t\tstring = '',\r\n public _isPublic:\t\t\t\tboolean = false,\r\n public _isReadOnly:\t\t\t\tboolean = false,\r\n public _owner:\t\t\t\t\tstring = '',\r\n public _state:\t\t\t\t\tboolean = false,\r\n public _lastId:\t\t\t\t\tstring = '',\r\n\t\tpublic _firstId:\t\t\t\tstring = '',\r\n\t\tpublic _firstDate:\t\t\t\tstring = '',\r\n\t\tpublic _lastDate:\t\t\t\tstring = '',\r\n public _lastIdReadedByMe:\t\tstring = '',\r\n public _lastIdReadedByHim:\t\tstring = '',\r\n public _lastIdReceivedByHim:\tstring = '',\r\n public _lastIdReceivedByMe:\t\tstring = '',\r\n\t\tpublic _counter:\t\t\t\tnumber\t\t= 0,\r\n public _creationDate:\t\t\tstring = '',\r\n ){ }\r\n\r\n\r\n// result.lastIdReadedByMe\t\t= jsonObj.lastIdReadedByMe\t\t? jsonObj.lastIdReadedByMe\t\t: '';\r\n// result.lastIdReadedByHim\t= jsonObj.lastIdReadedByHim\t\t? jsonObj.lastIdReadedByHim\t\t: '';\r\n// result.lastIdReceivedByHim\t= jsonObj.lastIdReceivedByHim\t? jsonObj.lastIdReceivedByHim\t: '';\r\n// result.lastIdReceivedByMe\t= jsonObj.lastIdReceivedByMe\t? jsonObj.lastIdReceivedByMe\t: '';\r\n\r\n get id()\t\t\t\t\t{ return this._id; }\r\n get users()\t\t\t\t\t{ return this._users; }\r\n get type()\t\t\t\t\t{ return this._type; }\r\n get name()\t\t\t\t\t{ return this._name; }\r\n get creationDate()\t\t\t{ return this._creationDate; }\r\n get isPublic()\t\t\t\t{ return this._isPublic; }\r\n get isReadOnly()\t\t\t{ return this._isReadOnly; }\r\n get owner(): any\t\t\t{ return this.owner; }\r\n get lastId()\t\t\t\t{ return this._lastId; }\r\n get firstId()\t\t\t\t{ return this._firstId; }\r\n get lastDate()\t\t\t\t{ return this._lastDate; }\r\n get firstDate()\t\t\t\t{ return this._firstDate; }\r\n get lastIdReadedByMe()\t\t{ return this._lastIdReadedByMe; }\r\n get lastIdReadedByHim()\t\t{ return this._lastIdReadedByHim; }\r\n get lastIdReceivedByHim()\t{ return this._lastIdReceivedByHim; }\r\n get lastIdReceivedByMe()\t{ return this._lastIdReceivedByMe; }\r\n get displayName()\t\t\t{ return this._displayName; }\r\n get description()\t\t\t{ return this._description; }\r\n get state()\t\t\t\t\t{ return this._state; }\r\n get counter()\t\t\t\t{ return this._counter; }\r\n get messages()\t\t\t\t{ return this._messages; }\r\n\r\n\r\n /**\r\n * \r\n */\r\n\tgetMessages() \r\n\t{\r\n\r\n\t\tlet arrayReturn = [];\r\n\t\tlet arrayKey\t= [];\r\n\r\n\t\t// récupération des ids\r\n\t\tfor (let key in this._messages)\r\n\t\t{\r\n\t\t\tarrayKey.push(key);\r\n }\r\n \r\n\t\tlet key: any;\r\n\t\t// on boucle sur le tableau des id pr sortir un tableau de message templatefriendly\r\n\t\tfor (key of arrayKey)\r\n\t\t{\r\n\t\t\tarrayReturn.push(this._messages[key]);\r\n }\r\n \r\n\t\tarrayReturn = _.sortBy(arrayReturn, 'date');\r\n\r\n\t\treturn arrayReturn;\r\n\t}\r\n\r\n\r\n set id(id)\t\t\t\t\t\t\t\t\t\t{ this._id\t\t\t\t\t= id; }\r\n set users(users)\t\t\t\t\t\t\t\t{ this._users\t\t\t\t= users; }\r\n set messages(messages)\t\t\t\t\t\t\t{ this._messages\t\t\t= messages; }\r\n set type(type)\t\t\t\t\t\t\t\t\t{ this._type\t\t\t\t= type; }\r\n set creationDate(creationDate)\t\t\t\t\t{ this._creationDate\t\t= creationDate; }\r\n set name(name)\t\t\t\t\t\t\t\t\t{ this._name\t\t\t\t= name; }\r\n set isPublic(isPublic)\t\t\t\t\t\t\t{ this._isPublic\t\t\t= isPublic; }\r\n set isReadOnly(isReadOnly)\t\t\t\t\t\t{ this._isReadOnly\t\t\t= isReadOnly; }\r\n set owner(owner)\t\t\t\t\t\t\t\t{ this._owner\t\t\t\t= owner; }\r\n set firstId(firstId)\t\t\t\t\t\t\t{ this._firstId\t\t\t\t= firstId; }\r\n set firstDate(firstDate)\t\t\t\t\t\t{ this._firstDate\t\t\t= firstDate; }\r\n set lastId(lastId)\t\t\t\t\t\t\t\t{ this._lastId\t\t\t\t= lastId; }\r\n set lastDate(lastDate)\t\t\t\t\t\t\t{ this._lastDate\t\t\t= lastDate; }\r\n set lastIdReadedByMe(lastIdReadedByMe)\t\t\t{ this._lastIdReadedByMe\t= lastIdReadedByMe; }\r\n set lastIdReadedByHim(lastIdReadedByHim)\t\t{ this._lastIdReadedByHim\t= lastIdReadedByHim; }\r\n set lastIdReceivedByHim(lastIdReceivedByHim)\t{ this._lastIdReceivedByHim\t= lastIdReceivedByHim; }\r\n set lastIdReceivedByMe(lastIdReceivedByMe)\t\t{ this._lastIdReceivedByMe\t= lastIdReceivedByMe; }\r\n set displayName(displayName)\t\t\t\t\t{ this._displayName\t\t\t= displayName; }\r\n set description(description)\t\t\t\t\t{ this._description\t\t\t= description; }\r\n set state(state)\t\t\t\t\t\t\t\t{ this._state\t\t\t\t= state; }\r\n set counter(counter)\t\t\t\t\t\t\t{ this._counter\t\t\t\t= counter; }\r\n\r\n\r\n /**\r\n * \r\n * @param message \r\n * @param id \r\n */\r\n\tsetMessageById(message: Message, id: any)\t\t\t{ this._messages[id]\t= message; }\r\n\r\n\r\n /**\r\n * \r\n * @param {string} [order='ASC']\r\n * @returns\r\n *\r\n * @memberOf Piece\r\n */\r\n\tpublic getMessagesSorted(order = 'ASC')\r\n\t{\r\n\t\tlet oReturn = null;\t\t\r\n\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\t\r\n\t\tif (order === 'ASC' || order === 'DESC')\r\n\t\t{\r\n\t\t\tlet messagesSorted\t= _.sortBy(this._messages, function (message: any) { return message.date.valueOf(); });\r\n\t\t\toReturn\t\t\t\t= order === 'ASC' ? messagesSorted : messagesSorted.reverse();\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n /**\r\n * \r\n * @returns\r\n * \r\n * @memberOf Piece\r\n */\r\n public getLastMessage()\r\n {\r\n return _.max(this._messages, function(message: any){ return message.date.valueOf(); });\r\n }\r\n\t\r\n\t\r\n\t/**\r\n\t * Ajout d'un message à la piece\r\n\t */\r\n\tpublic addMessage(message: Message, id: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tthis._messages[id] = message;\r\n\t}\r\n \r\n \r\n\t/**\r\n\t * Start des messages\r\n\t */\r\n\tpublic initMessage(message: [Message])\r\n\t{\r\n\t}\r\n\r\n\r\n /**\r\n * \r\n * @param userJson Add new user to current piece\r\n */\r\n public addUserFromJson(userJson: any)\r\n {\r\n let newUser = new User();\r\n newUser.id\t= userJson.mail;\r\n\r\n this.users.push(newUser);\r\n }\r\n\r\n\r\n /**\r\n * \r\n */\r\n public toJson()\r\n {\r\n let usersJson = [];\r\n for (let user of this.users)\r\n {\r\n usersJson.push(user.toJson());\r\n }\r\n\r\n let result = {\r\n uuid:\t\t\t\t\tthis.id,\r\n users:\t\t\t\t\tusersJson,\r\n messages:\t\t\t\tthis.messages,\r\n isPublic:\t\t\t\tthis.isPublic,\r\n\t\t\tcreationDate:\t\t\tthis.creationDate,\r\n\t\t\tisReadOnly:\t\t\t\tthis.isReadOnly,\r\n\t\t\towner:\t\t\t\t\tthis.owner,\r\n\t\t\tlastId:\t\t\t\t\tthis.lastId,\r\n\t\t\tlastDate:\t\t\t\tthis.lastDate,\r\n\t\t\tfirstDate:\t\t\t\tthis.firstDate,\r\n\t\t\tfirstId:\t\t\t\tthis.firstId,\r\n\t\t\tlastIdReadedByMe:\t\tthis.lastIdReadedByMe,\r\n\t\t\tlastIdReadedByHim:\t\tthis.lastIdReadedByHim,\r\n\t\t\tlastIdReceivedByHim:\tthis.lastIdReceivedByHim,\r\n\t\t\tlastIdReceivedByMe:\t\tthis.lastIdReceivedByMe,\r\n libelle:\t\t\t\tthis.name,\r\n description:\t\t\tthis.description,\r\n state:\t\t\t\t\tthis.state,\r\n counter:\t\t\t\tthis.counter\r\n };\r\n\t\t\r\n\t\t\r\n return result;\r\n }\r\n\r\n}\r\n\r\n","import { Examen }\tfrom './examen.class';\r\nimport { Comment } from './comment.class';\r\nimport * as _\t\tfrom 'underscore';\r\n\r\n\r\n/**\r\n *\r\n * @export\r\n * @class Session\r\n */\r\nexport class Session\r\n{\r\n /**\r\n * Creation d'un objet Session à partir d'une structure json donnée\r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Session}\r\n *\r\n * @memberOf Session\r\n */\r\n static fromJsonObject(jsonObj: any): Session\r\n {\r\n\r\n let result = new Session();\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// initialisation de l'identifiant, du nom et de la description de la session\r\n\t\t// ---------------------------------------\r\n result.id = jsonObj.uuid || jsonObj.id\t\t\t\t\t|| '';\r\n result.name = jsonObj.name || jsonObj.libelle\t\t\t\t|| '';\r\n result.description = jsonObj.description || jsonObj.datas.description\t|| '';\r\n\t\tresult.author\t\t= jsonObj.createur\t\t|| jsonObj.creator;\r\n\t\tlet date\t\t\t= jsonObj.creationdate\t|| jsonObj.creation_date;\r\n\t\tresult.dateCreation\t= new Date(date);\r\n\r\n\r\n\r\n if (result.dateCreation)\r\n {\r\n result.dateCreation = new Date(result.dateCreation);\r\n }\r\n\r\n\t\tif (jsonObj.datas)\r\n\t\t{\r\n\t\t\tresult.show\t\t= jsonObj.datas.show\t\t=== 'true' || false;\r\n\t\t\tresult.selected = jsonObj.datas.selected\t=== 'true' || false;\r\n\t\t}\r\n\r\n result.flags = jsonObj.flags || [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// initialisation des examens récupérés\r\n\t\t// ---------------------------------------\r\n if (jsonObj.examens && jsonObj.examens.length)\r\n {\r\n\t\t\tfor (let i = 0; i < jsonObj.examens.length; i++)\r\n\t\t\t{\r\n\t\t\t\tresult.examens.push(Examen.fromJsonObject(jsonObj.examens[i]));\r\n\t\t\t}\r\n\t\t\tresult.examens.sort(function (a, b)\r\n\t\t\t{\r\n\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\r\n\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// names must be equal\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\r\n //Initialisation des commentaires récupérés\r\n if (jsonObj.comments && Object.keys(jsonObj.comments).length > 0)\r\n {\r\n for (let key in jsonObj.comments)\r\n {\r\n if (jsonObj.comments[key])\r\n {\r\n let objComment = Comment.fromJsonObject(jsonObj.comments[key]);\r\n result.comments.push(objComment);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Creates an instance of Session.\r\n *\r\n * @param {string} [_name='']\r\n * @param {boolean} [_show=false]\r\n * @param {boolean} [_selected=false]\r\n * @param {Examen[]} [_examens=[]]\r\n *\r\n * @memberOf Session\r\n */\r\n constructor(\r\n private _id: string = '',\r\n private _name: string = '',\r\n private _dateCreation:\tDate = null,\r\n private _description:\tstring\t\t= '',\r\n private _show: boolean = false,\r\n private _selected: boolean\t = false,\r\n private _flags: string[] = [],\r\n private _examens: Examen[] = [],\r\n private _comments:\t\tComment[] = [],\r\n private _author:\t\t\tstring = '',\r\n private _visible: boolean = true\r\n ){ }\r\n\r\n\r\n get id() { return this._id; }\r\n get name() { return this._name; }\r\n get dateCreation()\t{ return this._dateCreation; }\r\n get description() { return this._description; }\r\n get show() { return this._show; }\r\n get selected() { return this._selected; }\r\n get flags() { return this._flags; }\r\n get examens() { return this._examens; }\r\n get partie_id() { return this._examens; }\r\n get comments() { return this._comments; }\r\n get author() { return this._author; }\r\n get visible() { return this._visible; }\r\n\r\n set id(id)\t\t\t { this._id\t\t\t\t= id; }\r\n set name(name)\t\t\t { this._name\t\t\t= name; }\r\n set dateCreation(dateCreation)\t{ this._dateCreation\t= dateCreation; }\r\n set description(description)\t{ this._description\t\t= description; }\r\n set show(show)\t\t\t\t\t{ this._show\t\t\t= show; }\r\n set selected(selected)\t\t\t{ this._selected\t\t= selected; }\r\n set flags(flags)\t\t\t { this._flags\t\t = flags; }\r\n set examens(examens)\t\t\t{ this._examens\t\t\t= examens; }\r\n set comments(comments)\t\t\t{ this._comments\t\t= comments; }\r\n set author(author: any) { this._author\t\t\t= author; }\r\n set visible(visible: any) { this._visible\t\t\t= visible; }\r\n\r\n\r\n /**\r\n *\r\n * @param {any} info\r\n * @returns\r\n *\r\n * @memberOf Session\r\n */\r\n public extractBranchInfos(info: any)\r\n {\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let infoCopy = Object.assign({}, info);\r\n\r\n let infos: any = [];\r\n infoCopy.nameSession\t= this.name;\r\n infoCopy.idSession = this.id;\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n if (this.examens.length > 0)\r\n {\r\n for (let i = 0; i < this.examens.length; i++)\r\n {\r\n infos = infos.concat(this.examens[i].extractBranchInfos(infoCopy));\r\n }\r\n }\r\n else\r\n {\r\n infos.push(infoCopy);\r\n }\r\n return infos;\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param {any} sessionsObject\r\n * @param {any} [propertyFounded={}]\r\n *\r\n * @memberOf Session\r\n */\r\n public updateExamensAvailable(sessionsObject: any, propertyFounded: any = {}, hasFilter = false)\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let currentexamens: any;\r\n let examenNames = _.uniq(_.map(sessionsObject,\tfunction(etab: any)\t\t{ return etab['nameExamen']; }));\r\n this.examens\t= _.reject(this.examens,\t\tfunction(examen: any)\t{ return !examenNames.includes(examen.name); });\r\n\r\n if (hasFilter === true)\r\n {\r\n this.examens = _.sortBy(this.examens, function(exam: any){ return _.indexOf(examenNames, exam.name); });\r\n }\r\n\r\n\r\n for (let i = 0; i < this.examens.length; i++)\r\n {\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n this.examens[i].show = propertyFounded['key'] === 'default' && propertyFounded['values'].includes(this.examens[i].name.toLowerCase()) ? true : false;\r\n\r\n currentexamens = _.where(sessionsObject, {nameExamen: this.examens[i].name});\r\n this.examens[i].updateMatieresAvailable(currentexamens, propertyFounded, hasFilter);\r\n\r\n this.show = this.examens[i].show ? true : this.show;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * \r\n * @param paramsSelected \r\n */\r\n public getSelectedItems(paramsSelected: any)\r\n\t{\r\n\t\tlet result = [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (paramsSelected['session'] && this.id === paramsSelected['session'])\r\n\t\t{\r\n\t\t\tresult.push(this);\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let examen of this.examens)\r\n\t\t{\r\n\t\t\tresult = result.concat(examen.getSelectedItems(paramsSelected));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n /**\r\n * \r\n * @param paramsShowed \r\n */\r\n\tpublic getShowedItems(paramsShowed: any)\r\n\t{\r\n\t\tlet result = [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (paramsShowed[this.id] && paramsShowed[this.id] === 'session')\r\n\t\t{\r\n\t\t\tresult.push(this);\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let examen of this.examens)\r\n\t\t{\r\n\t\t\tresult = result.concat(examen.getShowedItems(paramsShowed));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n /**\r\n\t * convertion d'un objet Session au format Json\r\n\t */\r\n\tpublic toJson()\r\n\t{\r\n\t\tlet result: any =\r\n\t\t{\r\n\t\t\tid:\t\t\t\tthis.id,\r\n\t\t\tlibelle:\t\tthis.name,\r\n creator:\t\tthis.author,\r\n creationdate:\tthis.dateCreation,\r\n type:\t\t\t'session',\r\n flags: this.flags,\r\n\t\t\tdatas:\r\n\t\t\t{\r\n\t\t\t\tdescription:\tthis.description,\r\n\t\t\t\tshow:\t\t\tthis.show\t\t\t? 'true' : 'false',\r\n\t\t\t\tselected:\t\tthis.selected\t\t? 'true' : 'false',\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (this.examens.length > 0)\r\n\t\t{\r\n\t\t\tresult.examens = [];\r\n\t\t\tfor (let examen of this.examens)\r\n\t\t\t{\r\n\t\t\t\tresult.examens.push(examen.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n //Initialisation des commentaires dans la structure json retournée\r\n if (this.comments.length > 0)\r\n\t\t{\r\n\t\t\tresult.comments = [];\r\n\t\t\tfor (let comment of this.comments)\r\n\t\t\t{\r\n\t\t\t\tresult.comments.push(comment.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Task }\tfrom './task.class';\r\nimport { Matiere }\tfrom './matiere.class';\r\nimport { File }\t\tfrom './file.class';\r\nimport { Comment } from './comment.class';\r\nimport * as _\t\tfrom 'underscore';\r\n\r\n\r\n/**\r\n *\r\n * @export\r\n * @class Sujet\r\n */\r\nexport class SpecialTime\r\n{\r\n\r\n /**\r\n *\r\n *\r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Sujet}\r\n *\r\n * @memberOf Sujet\r\n */\r\n static fromJsonObject(jsonObj: any): SpecialTime\r\n {\r\n\r\n let oSpecialTime = new SpecialTime();\r\n\r\n oSpecialTime.id\t\t\t\t\t= jsonObj.id;\r\n\t\toSpecialTime.name\t\t\t\t= jsonObj.name\t\t\t\t|| '';\r\n oSpecialTime.duration\t\t\t= jsonObj.duration\t\t\t|| null;\r\n oSpecialTime.datas\t\t\t\t= jsonObj.datas\t\t\t || {};\r\n oSpecialTime.type\t\t\t\t= jsonObj.type\t\t\t\t|| '';\r\n\r\n\r\n return oSpecialTime;\r\n }\r\n\r\n\r\n /**\r\n * Creates an instance of Sujet.\r\n *\r\n * @param {string} [_name='']\r\n * @param {string} [_time_start='']\r\n * @param {string} [_time_end='']\r\n * @param {string} [_location='']\r\n * @param {string[]} [_tracks=[]]\r\n * @param {Exercice[]} [_exercices=[]]\r\n *\r\n * @memberOf Sujet\r\n */\r\n constructor(\r\n private _id:\t\t\t\tnumber = null,\r\n private _name:\t\t\t\tstring = '',\r\n private _type:\t\t\t\tstring = '',\r\n private _duration:\t\t\t\tany = null,\r\n private _datas: any = {}\r\n ){ }\r\n\r\n\r\n get id() { return this._id; }\r\n get name() { return this._name; }\r\n get type() { return this._type; }\r\n get datas() { return this._datas; }\r\n get duration() { return this._duration; }\r\n\r\n\r\n set id(id)\t\t\t\t\t\t\t{ this._id\t\t\t\t= id; }\r\n set name(name)\t\t\t\t\t\t{ this._name\t\t\t= name; }\r\n set type(type)\t\t\t\t\t\t{ this._type\t\t\t= type; }\r\n set duration(duration)\t\t\t\t{ this._duration\t\t= duration; }\r\n set datas(datas)\t\t\t\t { this._datas\t\t = datas; }\r\n\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public toJson()\r\n {\r\n const result: any =\r\n {\r\n id:\t\t\tthis.id,\r\n name:\t\tthis.name,\r\n type:\t\tthis.type,\r\n duration:\tthis.duration,\r\n datas: this.datas,\r\n };\r\n\r\n return result;\r\n }\r\n\r\n}\r\n","import { Task }\tfrom './task.class';\r\nimport { Matiere }\tfrom './matiere.class';\r\nimport { File }\t\tfrom './file.class';\r\nimport { Comment } from './comment.class';\r\nimport * as _\t\tfrom 'underscore';\r\n\r\n\r\n/**\r\n *\r\n * @export\r\n * @class Sujet\r\n */\r\nexport class Sujet\r\n{\r\n\r\n /**\r\n *\r\n *\r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {Sujet}\r\n *\r\n * @memberOf Sujet\r\n */\r\n static fromJsonObject(jsonObj: any): Sujet\r\n {\r\n\r\n let oSujet = new Sujet();\r\n\r\n oSujet.id\t\t\t\t= jsonObj.idsujet\t\t\t|| '';\r\n oSujet.idMatiere\t\t= jsonObj.idepreuve\t\t\t|| '';\r\n oSujet.name\t\t\t\t= jsonObj.libelle\t\t\t|| '';\r\n oSujet.creationDate\t\t= jsonObj.dateCreation\t\t|| '';\r\n oSujet.lastUpdateDate\t= jsonObj.dateLastUpdate\t|| '';\r\n oSujet.location\t\t\t= jsonObj.location\t\t\t|| '';\r\n oSujet.datas\t\t\t= jsonObj.datas\t\t\t || {};\r\n oSujet.tracks\t\t\t= jsonObj.tracks\t\t\t|| [];\r\n oSujet.type\t\t\t\t= jsonObj.type\t\t\t\t|| '';\r\n oSujet.note\t\t\t\t= jsonObj.note\t\t\t\t|| '';\r\n oSujet.show\t\t\t\t= jsonObj.show\t\t\t\t|| '';\r\n oSujet.updater\t\t\t= jsonObj.updater\t\t\t|| '';\r\n oSujet.flags\t\t\t= jsonObj.flags\t\t\t || [];\r\n oSujet.fake\t\t\t\t= jsonObj.fake\t\t\t || [];\r\n oSujet.tasks\t\t\t= jsonObj.tasks\t\t\t || [];\r\n\r\n\r\n//\t\tif (jsonObj.pj)\r\n//\t\t{\r\n//\t\t\tfor (let idPj of Object.keys(jsonObj.pj))\r\n//\t\t\t{\r\n//\t\t\t\tif (jsonObj.pj[idPj])\r\n//\t\t\t\t{\r\n//\t\t\t\t\tlet file\t\t= File.fromJsonObject(jsonObj.pj[idPj]);\r\n//\t\t\t\t\tfile.id\t\t\t= idPj;\r\n//\t\t\t\t\tfile.idSubject\t= oSujet.id;\r\n//\t\t\t\t\tfile.idEpreuve\t= oSujet.idMatiere;\r\n//\r\n//\t\t\t\t\toSujet.pj.push(file);\r\n//\t\t\t\t}\r\n//\t\t\t}\r\n//\t\t}\r\n\r\n //Initialisation des commentaires récupérés\r\n if (jsonObj.comments && Object.keys(jsonObj.comments).length > 0)\r\n {\r\n for (let key in jsonObj.comments)\r\n {\r\n if (jsonObj.comments[key])\r\n {\r\n let objComment = Comment.fromJsonObject(jsonObj.comments[key]);\r\n oSujet.comments.push(objComment);\r\n }\r\n }\r\n }\r\n\r\n return oSujet;\r\n }\r\n\r\n\r\n /**\r\n * Creates an instance of Sujet.\r\n *\r\n * @param {string} [_name='']\r\n * @param {string} [_time_start='']\r\n * @param {string} [_time_end='']\r\n * @param {string} [_location='']\r\n * @param {string[]} [_tracks=[]]\r\n * @param {Exercice[]} [_exercices=[]]\r\n *\r\n * @memberOf Sujet\r\n */\r\n constructor(\r\n private _id:\t\t\t\tstring = '',\r\n private _name:\t\t\t\tstring = '',\r\n private _creationDate:\t\tstring = '',\r\n private _lastUpdateDate:\tstring = '',\r\n private _location:\t\t\tstring = '',\r\n private _tracks:\t\t\tstring[] = [],\r\n private _idMatiere:\t\t\tstring = '',\r\n private _type:\t\t\t\tstring = '',\r\n private _note:\t\t\t\tstring = '',\r\n private _etat:\t\t\t\tstring = '',\r\n private _pj:\t\t\t\tFile[]\t\t= [],\r\n private _selected:\t\t\tboolean\t\t= false,\r\n private _show:\t\t\t\tboolean = false,\r\n private _flags: string[] = [],\r\n private _comments:\t\t\tComment[] = [],\r\n private _fake:\t\t\t\tany[]\t\t= [],\r\n private _updater:\t\t\tstring = '',\r\n private _datas: any = {},\r\n private _tasks: Task[] = []\r\n ){ }\r\n\r\n\r\n get id() { return this._id; }\r\n get name() { return this._name; }\r\n get creationDate() { return this._creationDate; }\r\n get lastUpdateDate() { return this._lastUpdateDate; }\r\n get location() { return this._location; }\r\n get tracks() { return this._tracks; }\r\n get idMatiere() { return this._idMatiere; }\r\n get type() { return this._type; }\r\n get note() { return this._note; }\r\n get pj()\t\t\t\t\t{ return this._pj; }\r\n get selected()\t\t\t\t{ return this._selected; }\r\n get etat()\t\t\t\t\t{ return this._etat; }\r\n get show() { return this._show; }\r\n get fake() { return this._fake; }\r\n get flags() { return this._flags; }\r\n get comments() { return this._comments; }\r\n get updater() { return this._updater; }\r\n get datas() { return this._datas; }\r\n get tasks() { return this._tasks; }\r\n\r\n\r\n set id(id)\t\t\t\t\t\t\t{ this._id\t\t\t\t= id; }\r\n set name(name)\t\t\t\t\t\t{ this._name\t\t\t= name; }\r\n set creationDate(creationDate)\t\t{ this._creationDate\t= creationDate; }\r\n set lastUpdateDate(lastUpdateDate)\t{ this._lastUpdateDate\t= lastUpdateDate; }\r\n set location(location)\t\t\t\t{ this._location\t\t= location; }\r\n set fake(fake)\t\t\t\t\t\t{ this._fake\t\t\t= fake; }\r\n set tracks(tracks)\t\t\t\t\t{ this._tracks\t\t\t= tracks; }\r\n set idMatiere(idMatiere)\t\t\t{ this._idMatiere\t\t= idMatiere; }\r\n set type(type)\t\t\t\t\t\t{ this._type\t\t\t= type; }\r\n set note(note)\t\t\t\t\t\t{ this._note\t\t\t= note; }\r\n set etat(etat)\t\t\t\t\t\t{ this._etat\t\t\t= etat; }\r\n set pj(pj)\t\t\t\t\t\t\t{ this._pj\t\t\t\t= pj; }\r\n set selected(selected)\t\t\t\t{ this._selected\t\t= selected; }\r\n set show(show)\t\t\t\t\t\t{ this._show\t\t\t= show; }\r\n set flags(flags)\t\t\t\t { this._flags\t\t = flags; }\r\n set comments(comments)\t\t\t\t{ this._comments\t\t= comments; }\r\n set updater(updater)\t\t\t\t{ this._updater\t\t\t= updater; }\r\n set datas(datas)\t\t\t\t { this._datas\t\t\t= datas; }\r\n set tasks(tasks)\t\t\t\t { this._tasks\t\t\t= tasks; }\r\n\r\n\r\n /**\r\n *\r\n * @param {any} info\r\n * @returns\r\n *\r\n * @memberOf Sujet\r\n */\r\n public extractBranchInfos(info: any)\r\n {\r\n\r\n let infoCopy = Object.assign({}, info);\r\n\r\n let infos = [];\r\n infoCopy.idSujet = this.id;\r\n infoCopy.nameSujet = this.name;\r\n infoCopy.locationSujet = this.location;\r\n infoCopy.tracksSujet = this.tracks;\r\n infoCopy.typeSujet = this.type;\r\n infoCopy.noteSujet = this.note;\r\n infoCopy.showSujet = this.show;\r\n infoCopy.tasks\t\t\t= this.tasks;\r\n// infoCopy.pjSujet\t\t= this.pj;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\r\n infos.push(infoCopy);\r\n\r\n return infos;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public toJson()\r\n {\r\n const result: any = \r\n {\r\n idsujet:\tthis.id,\r\n idepreuve: this.idMatiere,\r\n libelle:\tthis.name,\r\n location:\tthis.location,\r\n tracks:\t\tthis.tracks,\r\n type:\t\tthis.type,\r\n note:\t\tthis.note,\r\n show:\t\tthis.show,\r\n datas: this.datas,\r\n flags: this.flags,\r\n tasks: this.tasks\r\n };\r\n\r\n //Initialisation des commentaires dans la structure json retournée\r\n if (this.comments.length > 0)\r\n\t\t{\r\n\t\t\tresult.comments = [];\r\n\t\t\tfor (const comment of this.comments)\r\n\t\t\t{\r\n\t\t\t\tresult.comments.push(comment.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n return result;\r\n }\r\n\t/**\r\n\t *\r\n\t */\r\n public toState()\r\n {\r\n let result: any =\r\n\t\t\t{\r\n\t\t\t\tidsujet:\tthis.id,\r\n\t\t\t\tdatas:\t\t{etat: this.etat}\r\n\t\t\t};\r\n\r\n\r\n return result;\r\n }\r\n}\r\n","import { Component }\t\t\tfrom './component';\r\nimport { Comment }\t\t\t\tfrom './comment.class';\r\nimport { File as FileObject }\tfrom './file.class';\r\n\r\nexport class Task extends Component\r\n{\r\n\t/**\r\n\t * Creation d'un objet Task à partir de données contenues dans\r\n\t * un objet json.\r\n\t * @param jsonObj\r\n\t */\r\n\tstatic fromJsonObject(jsonObj: any): Task\r\n {\r\n\r\n\t\tconst result = new Task();\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tresult.id\t\t\t\t\t= jsonObj.uuid;\r\n\t\tresult.name\t\t\t\t\t= jsonObj.name;\r\n\t\tresult.dateCreation\t\t\t= new Date(jsonObj.creationdate);\r\n\t\tresult.dateModification\t\t= new Date(jsonObj.lastupdatedate);\r\n\t\tresult.realTask\t\t\t\t= true;\r\n\r\n\t\tresult.endDate = jsonObj.end_date ? new Date(jsonObj.end_date) : null;\r\n\r\n\r\n\t\tif (jsonObj.datas)\r\n\t\t{\r\n\t\t\tif (jsonObj.datas.description)\r\n\t\t\t{\r\n\t\t\t\tresult.description = jsonObj.datas.description;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonObj.datas.beginDate)\r\n\t\t\t{\r\n\t\t\t\tresult.beginDate = new Date(jsonObj.datas.beginDate);\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonObj.datas.endDate)\r\n\t\t\t{\r\n\t\t\t\tresult.endDate = new Date(jsonObj.datas.endDate);\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonObj.datas.realBeginDate)\r\n\t\t\t{\r\n\t\t\t\tresult.realBeginDate = new Date(jsonObj.datas.realBeginDate);\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonObj.datas.realEndDate)\r\n\t\t\t{\r\n\t\t\t\tresult.realEndDate = new Date(jsonObj.datas.realEndDate);\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonObj.datas.libelleEtape)\r\n\t\t\t{\r\n\t\t\t\tresult.libelleType = jsonObj.datas.libelleEtape;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonObj.datas.etapeCptPassage)\r\n\t\t\t{\r\n\t\t\t\tresult.etapeCptPassage = jsonObj.datas.etapeCptPassage;\r\n\t\t\t}\r\n\r\n\t\t\tresult.noAccessFile\t\t\t\t= jsonObj.datas.noAccessFile\t\t\t&& jsonObj.datas.noAccessFile\t\t\t=== '1' ? true\t: false;\r\n\t\t\tresult.readOnlyFile\t\t\t\t= jsonObj.datas.readOnlyFile\t\t\t&& jsonObj.datas.readOnlyFile\t\t\t=== '1' ? true\t: false;\r\n\t\t\tresult.canDeleteFile\t\t\t= jsonObj.datas.canDeleteFile\t\t\t&& jsonObj.datas.canDeleteFile\t\t\t=== '1' ? true\t: false;\r\n\t\t\tresult.typeFileAccess\t\t\t= jsonObj.datas.typeFileAccess\t\t\t? jsonObj.datas.typeFileAccess\t\t\t\t\t: 'all';\r\n\t\t\tresult.fileToAccess\t\t\t\t= jsonObj.datas.fileToAccess\t\t\t? jsonObj.datas.fileToAccess\t\t\t\t\t: [];\r\n\t\t\tresult.canCreateFile\t\t\t= jsonObj.datas.canCreateFile\t\t\t&& jsonObj.datas.canCreateFile\t\t\t=== '1' ? true\t: false;\r\n\t\t\tresult.notifyByMail\t\t\t\t= jsonObj.datas.notifyByMail\t\t\t&& jsonObj.datas.notifyByMail\t\t\t=== '1' ? true\t: false;\r\n\t\t\tresult.hasReadRightForPrinter\t= jsonObj.datas.hasReadRightForPrinter\t&& jsonObj.datas.hasReadRightForPrinter === '1' ? true\t: false;\r\n\t\t}\r\n\r\n\t\tresult.assigneduser\t\t\t= jsonObj.assigned_user;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// On récupère les commentaires dans la tache à formater\r\n\t\t// et on les transforme en objets Comment\r\n\t\t// ---------------------------------------\r\n\t\tif (jsonObj.comments && jsonObj.comments.length > 0)\r\n\t\t{\r\n\t\t\tfor (const comment of jsonObj.comments)\r\n\t\t\t{\r\n\t\t\t\tresult.comments.push(Comment.fromJsonObject(comment));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.creator\t= jsonObj.creator;\r\n\t\tresult.parents\t= jsonObj.parents;\r\n\t\tresult.owner\t= jsonObj.owner;\r\n\r\n\t\tresult.idEtablissement\t= jsonObj.idetablissement \t? jsonObj.idetablissement\t: '';\r\n\t\tresult.idSession\t\t= jsonObj.idsession \t\t? jsonObj.idsession\t\t\t: '';\r\n\t\tresult.idExamen\t\t\t= jsonObj.idexamen\t\t\t? jsonObj.idexamen\t\t\t: '';\r\n\t\tresult.idEpreuve\t\t= jsonObj.idepreuve \t\t? jsonObj.idepreuve\t\t\t: '';\r\n\t\tresult.idSujet\t\t\t= jsonObj.idsujet\t\t\t? jsonObj.idsujet\t\t\t: '';\r\n\r\n\t\tresult.type\t\t= jsonObj.type;\r\n\t\tresult.updater\t= jsonObj.updater;\r\n\t\tresult.state\t= jsonObj.state || jsonObj.status || 'todo';\r\n\t\tresult.flags\t= jsonObj.flags || [];\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\tconstructor(\r\n\t public id:\t\t\t\t\t\tstring\t\t= '',\r\n\t\tname:\t\t\t\t\t\t\tstring\t\t= '',\r\n dateCreation:\t\t\t\t\tstring\t\t= '',\r\n\t\tdateUpdate:\t\t\t\t\t\tstring\t\t= '',\r\n\t\tpublic nameEtablissement:\t\tstring\t\t= '',\r\n\t\tpublic idEtablissement:\t\t\tstring\t\t= '',\r\n\t\tpublic idSession:\t\t\t\tstring\t\t= '',\r\n\t\tpublic nameSession:\t\t\t\tstring\t\t= '',\r\n\t\tpublic idExamen:\t\t\t\tstring\t\t= '',\r\n\t\tpublic nameExamen:\t\t\t\tstring\t\t= '',\r\n\t\tpublic idEpreuve:\t\t\t\tstring\t\t= '',\r\n\t\tpublic nameEpreuve:\t\t\t\tstring\t\t= '',\r\n\t\tpublic idSujet:\t\t\t\t\tstring\t\t= '',\r\n\t\tpublic nameSujet:\t\t\t\tstring\t\t= '',\r\n\t\tpublic description:\t\t\t\tstring\t\t= '',\r\n\t\tpublic creator:\t\t\t\t\tstring\t\t= '',\r\n\t\tpublic owner:\t\t\t\t\tstring\t\t= '',\r\n\t\tpublic updater:\t\t\t\t\tstring\t\t= '',\r\n\t\tpublic assigneduser:\t\t\tstring\t\t= '',\r\n\t\tpublic beginDate:\t\t\t\tDate\t\t= null,\r\n\t\tpublic endDate:\t\t\t\t\tDate\t\t= null,\r\n\t\tpublic realBeginDate:\t\t\tDate\t\t= null,\r\n\t\tpublic realEndDate:\t\t\t\tDate\t\t= null,\r\n\t\tpublic parents:\t\t\t\t\tstring[]\t= [],\r\n\t\tpublic parent:\t\t\t\t\tTask\t\t= null,\r\n\t\tpublic type:\t\t\t\t\tstring\t\t= '0',\r\n\t\tpublic libelleType:\t\t\t\tstring\t\t= '',\r\n\t\tpublic etapeCptPassage:\t\t\tstring\t\t= '0',\r\n\t\tpublic state:\t\t\t\t\tstring\t\t= 'todo',\r\n\t\tpublic priority:\t\t\t\tnumber\t\t= 2,\r\n\t\tpublic points:\t\t\t\t\tnumber\t\t= 0,\r\n\t\tpublic comments:\t\t\t\tComment[]\t= [],\r\n\t\tpublic subtasks:\t\t\t\tany[]\t\t= [],\r\n\t\tpublic notification:\t\t\tany\t\t\t= {},\r\n\t\tpublic locked:\t\t\t\t\tboolean\t\t= false,\r\n\t\tpublic lockRules:\t\t\t\tTask[]\t\t= [],\r\n\t\tpublic taskLocked:\t\t\t\tTask[]\t\t= [],\r\n\t\tpublic newTask:\t\t\t\t\tboolean\t\t= true,\r\n\t\tpublic statesAvailable:\t\t\tany[]\t\t= [],\r\n\t\tpublic selected:\t\t\t\tboolean\t\t= false,\r\n\t\tpublic noAccessFile:\t\t\tboolean\t\t= false,\r\n\t\tpublic readOnlyFile:\t\t\tboolean\t\t= false,\r\n\t\tpublic canDeleteFile:\t\t\tboolean\t\t= false,\r\n\t\tpublic typeFileAccess:\t\t\tstring\t\t= 'all',\r\n\t\tpublic fileToAccess:\t\t\tFileObject[]=[],\r\n\t\tpublic canCreateFile:\t\t\tboolean\t\t= false,\r\n\t\tpublic containsNewDatas:\t\tboolean\t\t= false,\r\n\t\tpublic flags:\t\t\t\t\tstring[]\t= [],\r\n\t\tpublic typeLib:\t\t\t\t\tstring\t\t= '',\r\n\t\tpublic stateLib:\t\t\t\tstring\t\t= '',\r\n\t\tpublic realTask:\t\t\t\tboolean\t\t= true,\r\n\t\tpublic notifyByMail:\t\t\tboolean\t\t= false,\r\n\t\tpublic hasReadRightForPrinter:\tboolean\t\t= false\r\n\t) \r\n\t{\r\n super();\r\n\r\n this.id\t\t\t\t\t= id;\r\n this.name\t\t\t\t= name;\r\n this.dateCreation\t\t= dateCreation\t? new Date(Date.parse(dateCreation))\t: new Date();\r\n\t\tthis.dateModification\t= dateUpdate\t? new Date(Date.parse(dateUpdate))\t\t: new Date();\r\n\t\tthis.realTask = true;\r\n\r\n\t\tthis.statesAvailable = [\r\n\t\t\t{\r\n\t\t\t\tvalue: 'new',\r\n\t\t\t\tlibelle: 'Non assigné'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'todo',\r\n\t\t\t\tlibelle: 'Assigné'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'ongoing',\r\n\t\t\t\tlibelle: 'En cours'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'review',\r\n\t\t\t\tlibelle: 'A valider'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'done',\r\n\t\t\t\tlibelle: 'Terminé'\r\n\t\t\t}\r\n\t\t];\r\n }\r\n\r\n\r\n\tget author() \t\t{ return this.creator; }\r\n\tset author(creator: any) { this.creator = creator; }\r\n\r\n\r\n\t/**\r\n\t * Transformation d'un object Task en objet Json.\r\n\t * Les noms des données json correspondent à la nomenclature\r\n\t * appliquée cotée back-end.\r\n\t */\r\n\tpublic toJson(): any\r\n {\r\n\t\tlet comments = [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (this.comments)\r\n\t\t{\r\n\t\t\tfor (let comment of this.comments)\r\n\t\t\t{\r\n\t\t\t\tcomments.push(comment.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet lockrules = [];\r\n\r\n\t\tif (this.lockRules)\r\n\t\t{\r\n\t\t\tfor (let rule of this.lockRules)\r\n\t\t\t{\r\n\t\t\t\tlockrules.push(rule.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet tasklocked = [];\r\n\r\n\t\tif (this.taskLocked)\r\n\t\t{\r\n\t\t\tfor (let task of this.taskLocked)\r\n\t\t\t{\r\n\t\t\t\ttasklocked.push(task.toJson());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet datas: any =\r\n\t\t{\r\n\t\t\tdescription:\t\t\tthis.description,\r\n\t\t\tbegin_date:\t\t\t\tthis.beginDate\t\t\t\t? this.beginDate.toJSON()\t\t: null,\r\n\t\t\tend_date:\t\t\t\tthis.endDate\t\t\t\t? this.endDate.toJSON()\t\t\t: null,\r\n\t\t\trealBeginDate:\t\t\tthis.realBeginDate\t\t\t? this.realBeginDate.toJSON()\t: null,\r\n\t\t\treal_end_date:\t\t\tthis.realEndDate\t\t\t? this.realEndDate.toJSON()\t\t: null,\r\n\t\t\tnoAccessFile:\t\t\tthis.noAccessFile\t\t\t? '1' : '0',\r\n\t\t\treadOnlyFile:\t\t\tthis.readOnlyFile\t\t\t? '1' : '0',\r\n\t\t\tcanDeleteFile:\t\t\tthis.canDeleteFile\t\t\t? '1' : '0',\r\n\t\t typeFileAccess: \t\tthis.typeFileAccess,\r\n\t\t fileToAccess:\t\t\tthis.fileToAccess,\r\n\t\t\tcanCreateFile:\t\t\tthis.canCreateFile\t\t\t? '1' : '0',\r\n\t\t\tlibelleEtape:\t\t\tthis.libelleType,\r\n\t\t\tnotifyByMail:\t\t\tthis.notifyByMail\t\t\t? '1' : '0',\r\n\t\t\thasReadRightForPrinter: this.hasReadRightForPrinter\t? '1' : '0'\r\n\t\t};\r\n\r\n\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet result = {\r\n\t\t\tuuid:\t\t\t\tthis.id,\r\n\t\t\tname:\t\t\t\tthis.name,\r\n\t\t\tcreationdate:\t\tthis.dateCreation\t\t? this.dateCreation.toJSON() : null,\r\n\t\t\tlastupdatedate:\t\tthis.dateModification\t? this.dateModification.toJSON() : null,\r\n\t\t\tnameetablissement:\tthis.nameEtablissement,\r\n\t\t\tidetablissement:\tthis.idEtablissement,\r\n\t\t\tidsession:\t\t\tthis.idSession,\r\n\t\t\tnamesession:\t\tthis.nameSession,\r\n\t\t\tidexamen:\t\t\tthis.idExamen,\r\n\t\t\tnameexamen:\t\t\tthis.nameExamen,\r\n\t\t\tidepreuve:\t\t\tthis.idEpreuve,\r\n\t\t\tnameepreuve:\t\tthis.nameEpreuve,\r\n\t\t\tidsujet:\t\t\tthis.idSujet,\r\n\t\t\tnamesujet:\t\t\tthis.nameSujet,\r\n\t\t\ttype:\t\t\t\tthis.type,\r\n\t\t\tmail_createur:\t\tthis.creator,\r\n\t\t\towner:\t\t\t\tthis.owner,\r\n\t\t\tupdater:\t\t\tthis.updater,\r\n\t\t\tassigned_user:\t\tthis.assigneduser,\r\n\t\t\tparents:\t\t\tthis.parents,\r\n\t\t\tstate:\t\t\t\tthis.state,\r\n\t\t\tcomments:\t\t\tcomments,\r\n\t\t\tsubtasks:\t\t\tthis.subtasks,\r\n\t\t\tnotification:\t\tthis.notification,\r\n\t\t\tlocked:\t\t\t\tthis.locked\t\t\t\t? '1' : '0',\r\n\t\t\tlockrules:\t\t\tlockrules,\r\n\t\t\ttasklocked:\t\t\ttasklocked,\r\n\t\t\tflags:\t\t\t\tthis.flags,\r\n\t\t\tdatas:\t\t\t\tdatas\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","export class Tools\r\n{\r\n\r\n\r\n\t/**\r\n\t * Verifie que pxValue ne soit pas vide.\r\n\t * return true si vide, false dans le cas contraire\r\n\t */\r\n\tpublic static isEmpty(value:any): boolean\r\n\t{\r\n\t\tlet returnState: boolean = false;\r\n\t\t// If its stupid but works, It ain't stupid\r\n\t\tswitch (value)\r\n\t\t{\r\n\t\t\tcase '':\r\n\t\t\tcase 0:\r\n\t\t\tcase '':\r\n\t\t\tcase 'undefined':\r\n\t\t\tcase null:\r\n\t\t\tcase false:\r\n\t\t\tcase typeof this === 'undefined':\r\n\t\t\t\treturnState = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturnState = false;\r\n\t\t}\r\n\t\t\r\n\t\treturn returnState;\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Lance une erreur, temporaire pour le moment avoir avec david par la suite comment on gere les erreurs (log et tt ca)\r\n\t */\r\n\tpublic static throwError(message:string): void\r\n\t{\r\n\t\tif (this.isEmpty(message))\r\n\t\t{\r\n\t\t\t// au passage c'est du foutage de gueule si on est là  !!!\r\n\t\t\tthis.throwError('Message for throw error is empty')\r\n\t\t}\r\n\t\tthrow new Error(message);\r\n\t}\r\n\r\n\t\r\n\t/**\r\n\t * \r\n\t */\r\n\tconstructor()\r\n\t{\r\n\t\tthrow new Error('Cannot new this class');\r\n\t}\r\n\r\n}\r\n","\r\n/**\r\n * \r\n * @export\r\n * @class User\r\n */\r\nexport class User\r\n{\r\n\r\n\r\n /**\r\n * \r\n * @static\r\n * @param {any} jsonObj\r\n * @returns {User}\r\n * \r\n * @memberOf User\r\n */\r\n public static fromJsonObject(jsonObj: any): User\r\n {\r\n\r\n let result = new User();\r\n\r\n result.id = jsonObj.id\t\t\t\t? jsonObj.id\t\t\t\t: '';\r\n result.username = jsonObj.mail\t\t\t\t? jsonObj.mail\t\t\t\t: '';\r\n result.nom\t\t\t\t= jsonObj.infos.nom\t\t\t? jsonObj.infos.nom\t\t\t: '';\r\n result.prenom\t\t\t= jsonObj.infos.prenom\t\t? jsonObj.infos.prenom\t\t: '';\r\n result.etablissement = jsonObj.etablissement\t\t? jsonObj.etablissement\t\t: '';\r\n result.session = jsonObj.session\t\t\t? jsonObj.session\t\t\t: '';\r\n result.examen = jsonObj.examen\t\t\t? jsonObj.examen\t\t\t: '';\r\n result.status = jsonObj.state.isOnline\t? jsonObj.state.isOnline\t: false;\r\n result.lastDateCo\t\t= jsonObj.state.active\t\t? jsonObj.state.active\t\t: '';\r\n result.color\t\t\t= jsonObj.infos.color\t\t? jsonObj.infos.color\t\t: '#ffffff';\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Creates an instance of User.\r\n * \r\n * @param {number} [_id=0]\r\n * @param {string} [_username='']\r\n * @param {string} [_etablissement='']\r\n * @param {string} [_session='']\r\n * @param {string} [_examen='']\r\n * @param {string} [_status='']\r\n * \r\n * @memberOf User\r\n */\r\n constructor(\r\n private _id: string\t= '',\r\n private _username: string\t= '',\r\n private _nom:\t\t\tstring\t= '',\r\n private _prenom:\t\tstring\t= '',\r\n private _etablissement: string\t= '',\r\n private _session: string\t= '',\r\n private _examen: string\t= '',\r\n private _color:\t\t\tstring\t= '',\r\n private _lastDateCo: string\t= '',\r\n private _status: boolean = false\r\n ){ }\r\n\r\n\r\n get id():\t\t\t\tstring\t{ return this._id; }\r\n get username():\t\t\tstring\t{ return this._username; }\r\n get nom():\t\t\t\tstring\t{ return this._nom; }\r\n get prenom():\t\t\tstring\t{ return this._prenom; }\r\n get etablissement():\tstring\t{ return this._etablissement; }\r\n get session():\t\t\tstring\t{ return this._session; }\r\n get examen():\t\t\tstring\t{ return this._examen; }\r\n get color():\t\t\tstring\t{ return this._color; }\r\n get status():\t\t\tboolean { return this._status; }\r\n get lastDateCo():\t\tstring\t{ return this._lastDateCo; }\r\n\r\n\r\n set id(id) { this._id\t\t\t\t= id; }\r\n set username(username) { this._username\t\t= username; }\r\n set nom(nom)\t\t\t\t\t\t{ this._nom\t\t\t\t= nom; }\r\n set prenom(prenom)\t\t\t\t\t{ this._prenom\t\t\t= prenom; }\r\n set etablissement(etablissement) { this._etablissement\t= etablissement; }\r\n set session(session) { this._session\t\t\t= session; }\r\n set examen(examen) { this._examen\t\t\t= examen; }\r\n set color(color)\t\t\t\t\t{ this._color\t\t\t= color; }\r\n set status(status) { this._status\t\t\t= status; }\r\n set lastDateCo(lastDateCo) { this._lastDateCo\t\t= lastDateCo; }\r\n\r\n\r\n /**\r\n * \r\n */\r\n public toJson()\r\n {\r\n let result = \r\n {\r\n id:\t\t\t\tthis.id,\r\n username:\t\tthis.username,\r\n nom:\t\t\tthis.nom,\r\n prenom:\t\t\tthis.prenom,\r\n etablissement:\tthis.etablissement,\r\n session:\t\tthis.session,\r\n lastDateCo:\t\tthis.lastDateCo,\r\n examen:\t\t\tthis.examen,\r\n status:\t\t\tthis.status,\r\n color:\t\t\tthis.color\r\n };\r\n\r\n return result;\r\n }\r\n\r\n}\r\n\r\n\r\n","\r\n
\r\n
Création d'un nouveau barème
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n
\r\n
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{sType.name}}\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{jSelectedTypeInput.name}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tMerci d'entrer une valeur entre 0 et 100\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tMerci d'entrer une valeur entre 0 et 100\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
","import { Component, ViewEncapsulation, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { BaremeData }\t\t\t\t\t\t\t\t\tfrom '../../providers/bareme-data';\r\n\r\n\r\n@Component({\r\n\tselector: 'app-bareme-creator',\r\n\ttemplateUrl: './bareme-creator.component.html',\r\n\tstyleUrls: ['./bareme-creator.component.scss']\r\n})\r\n\r\n\r\nexport class BaremeCreatorComponent implements OnInit\r\n{\r\n\tpublic mnSelectedTypeId\t\t\t= 0;\r\n\tpublic msSelectedTypeName\t\t= 'Strict';\r\n\tpublic mjSelectedType:\tany\t\t= null;\r\n\tpublic mbIsEditing:\t\tboolean\t= false;\r\n\r\n\r\n\tpublic masTypeList: any[] =\r\n\t[{\r\n\t\tid:\t\t0,\r\n\t\tname:\t'Strict',\r\n\t\tdesc:\t'Barème Strict',\r\n\t\tdata: [\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t0,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de point par question\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t1,\r\n\t\t\t\tdisplayValue:\t\t\t\t1,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t1,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de point de pénalité\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\t0,\r\n\t\t\t\tisAbsolue:\t\t\ttrue,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t2,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de point si tout coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t3,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de point si rien coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tid:\t\t1,\r\n\t\tname:\t'Relatif',\r\n\t\tdesc:\t'Barème Relatif',\r\n\t\tdata: [\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t0,\r\n\t\t\t\tname:\t\t\t\t\"Sommes des points des réponses justes\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t1,\r\n\t\t\t\tdisplayValue:\t\t\t\t1,\r\n\t\t\t\tdefaultValue:\t\t1,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t1,\r\n\t\t\t\tname:\t\t\t\t\"Somme des points des réponses fausses\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t1,\r\n\t\t\t\tdisplayValue:\t\t\t\t1,\r\n\t\t\t\tdefaultValue:\t\t1,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\t0,\r\n\t\t\t\tisAbsolue:\t\t\ttrue,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t2,\r\n\t\t\t\tname:\t\t\t\t\"Perte maximum par question\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t1,\r\n\t\t\t\tdisplayValue:\t\t1,\r\n\t\t\t\tdefaultValue:\t\t1,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\t0,\r\n\t\t\t\tisAbsolue:\t\t\ttrue,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t3,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de point si tout coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t4,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de point si rien coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tid:\t\t2,\r\n\t\tname:\t'Concordance',\r\n\t\tdesc:\t'Barème Concordance',\r\n\t\tdata: [\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t0,\r\n\t\t\t\tname:\t\t\t\t\"Si toutes les réponses sont conformes\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t1,\r\n\t\t\t\tdisplayValue:\t\t1,\r\n\t\t\t\tdefaultValue:\t\t1,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\ttrue\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t1,\r\n\t\t\t\tname:\t\t\t\t\"Si 1 réponse est non conforme\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t2,\r\n\t\t\t\tname:\t\t\t\t\"Si 2 réponses sont non conformes\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t3,\r\n\t\t\t\tname:\t\t\t\t\"Si 3 réponses sont non conformes\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t4,\r\n\t\t\t\tname:\t\t\t\t\"Si n ou plus réponses sont non conformes\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t5,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de points si tout coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse, \r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t6,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de points si rien coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tid: 3,\r\n\t\tname: 'Par réponse',\r\n\t\tdesc: 'Barème Par réponse',\r\n\t\tdata: [\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t0,\r\n\t\t\t\tname:\t\t\t\t\"Proposition Vrai: Point si coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t1,\r\n\t\t\t\tdisplayValue:\t\t\t\t1,\r\n\t\t\t\tdefaultValue:\t\t1,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse, \r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t1,\r\n\t\t\t\tname:\t\t\t\t\"Proposition Vrai: Point si non coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\t0,\r\n\t\t\t\tisAbsolue:\t\t\ttrue,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t2,\r\n\t\t\t\tname:\t\t\t\t\"Proposition fausse: Point si non coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\t0,\r\n\t\t\t\tisAbsolue:\t\t\ttrue,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t3,\r\n\t\t\t\tname:\t\t\t\t\"Proposition fausse: Point si coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t-1,\r\n\t\t\t\tdisplayValue:\t\t\t\t-1,\r\n\t\t\t\tdefaultValue:\t\t-1,\r\n\t\t\t\toptionnal:\t\t\tfalse,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\t0,\r\n\t\t\t\tisAbsolue:\t\t\ttrue,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t4,\r\n\t\t\t\tname:\t\t\t\t\"Perte maximum par question\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\t0,\r\n\t\t\t\tisAbsolue:\t\t\ttrue,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t5,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de points si tout coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid:\t\t\t\t\t6,\r\n\t\t\t\tname:\t\t\t\t\"Nombre de points si rien coché\",\r\n\t\t\t\ttypeInput:\t\t\t'number',\r\n\t\t\t\tvalue:\t\t\t\t0,\r\n\t\t\t\tdisplayValue:\t\t\t\t0,\r\n\t\t\t\tdefaultValue:\t\t0,\r\n\t\t\t\toptionnal:\t\t\ttrue,\r\n\t\t\t\tmaxValue:\t\t\tfalse,\r\n\t\t\t\tminValue:\t\t\tfalse,\r\n\t\t\t\tisAbsolue:\t\t\tfalse,\r\n\t\t\t\tisOptionChecked:\tfalse\r\n\t\t\t}\r\n\t\t]\r\n\t}];\r\n\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef:\tMatDialogRef,\r\n\t\tpublic baremeData:\tBaremeData,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any\r\n\t)\r\n\t{\r\n\t\t// récupération des datas du composant appelant\r\n\t\tif (data && data.bareme)\r\n\t\t{\r\n\t\t\tthis.mbIsEditing\t\t= true;\r\n\t\t\tthis.mjSelectedType\t\t= data.bareme.datas;\r\n\t\t\tthis.mnSelectedTypeId\t= +data.bareme.datas.id;\r\n\t\t\tthis.msSelectedTypeName\t= data.bareme.datas.name;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.mjSelectedType = this.masTypeList[this.mnSelectedTypeId];\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tngOnInit()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic close()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param event \r\n\t */\r\n\tpublic changeSelected(event: any)\r\n\t{\r\n\t\tthis.mjSelectedType = this.masTypeList[event.value];\r\n\r\n\t\tfor (let data of this.masTypeList)\r\n\t\t{\r\n\t\t\tif (data.id === event)\r\n\t\t\t{\r\n\t\t\t\tthis.mjSelectedType = data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic validate()\r\n\t{\r\n\t\tthis.dialogRef.close(this.mjSelectedType);\r\n\t}\r\n\r\n\r\n\tpublic changeValue(value: any)\r\n\t{\r\n\t\tif (value.isAbsolue)\r\n\t\t{\r\n\t\t\tvalue.value = Math.abs(value.displayValue);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tvalue.value = value.displayValue;\r\n\t\t}\r\n\t}\r\n\t\r\n}\r\n","
\r\n\r\n\r\n\t\r\n\t
\r\n\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t
B-{{majSelectedBareme.datas.number}} - {{majSelectedBareme.datas.name}}
\r\n\t\t\t
Type de barème : {{ majSelectedBareme.datas.name }}
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t {{ jSelectedTypeInput.name }} : \r\n\t\t\t\t\t{{ jSelectedTypeInput.value }} \r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t {{ jSelectedTypeInput.name}} : \r\n\t\t\t\t\t {{ jSelectedTypeInput.value }} \r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\t\t\r\n\t
\r\n\t\r\n\t\r\n\t\r\n\t
\r\n\t
\r\n\r\n\t\t \r\n\t\t\t\r\n\t\t\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\r\n\r\n\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
Partie {{msActiveQuestion.partId + 1}} Question {{msActiveQuestion.id + 1}}
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
Question à choix unique
\r\n\t\t\t\t\t\t
Choisissez la bonne réponse
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
Question à choix multiple
\r\n\t\t\t\t\t\t
Choisissez une ou plusieurs réponses
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
Vrai ou faux
\r\n\t\t\t\t\t\t
Choisissez la bonne réponse
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t

réponse n°{{ index + 1 }}

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tInvalider la réponse?\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{{ response.name }}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t\r\n\t\r\n\t
\r\n\t\t
\r\n\t\t\t
Partie {{msActivePart.id + 1}}
\r\n\r\n\t\t
\r\n\r\n\t
\r\n\t\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tB-{{bareme.datas.number}} - {{bareme.datas.name}}\r\n\t\t\t\r\n\t\t\r\n\r\n\r\n\t\t\r\n\t\t\r\n\t\t\r\n\r\n\t\tInvalider la question ?\r\n\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tB-{{bareme.datas.number}} - {{bareme.datas.name}}\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject, OnInit,OnChanges, Input }\tfrom '@angular/core';\r\nimport { MatDialogRef, MatDialog }\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\nimport { FileUploader, FileItem }\tfrom 'ng2-file-upload';\r\nimport { CreationHttpService }\t\tfrom '../../../services/http/creationHttp.service';\r\n\r\nimport { BaremeCreatorComponent }\tfrom '../../bareme-creator/bareme-creator.component';\r\nimport { BaremeService }\t\t\tfrom '../../../services/bareme.service';\r\nimport { SujetService }\t\t\t\tfrom '../../../services/sujet.service';\r\nimport { File as FileClass }\t\tfrom '../../../classes/file.class';\r\nimport { BaremeData }\t\t\t\tfrom '../../../providers/bareme-data';\r\nimport { VaultData }\t\t\t\tfrom '../../../providers/vault-data';\r\nimport { UserData }\t\t\t\t\tfrom '../../../providers/user-data';\r\nimport { WorkspaceData }\t\t\tfrom '../../../providers/workspace-data';\r\n\r\n\r\n@Component({\r\n selector:\t\t\t'app-bareme-editor',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t\t'./bareme-editor.component.html',\r\n styleUrls:\t\t['./bareme-editor.component.scss']\r\n})\r\n\r\n\r\nexport class BaremeEditorComponent implements OnInit, OnChanges\r\n{\r\n\t@Input() majData:\t\tany;\r\n\t@Input() subjectType:\tstring;\r\n\t@Input() passationId:\tstring;\r\n\r\n\r\n\tpublic majMainQCM:\tany\t= {};\r\n\tpublic majSecQCM:\tany\t= {};\r\n\r\n\tpublic mainFileQCM:\t\tFileClass;\r\n\tpublic secondFileQCM:\tFileClass;\r\n\r\n\tpublic mjBaremeMain:\tany;\r\n\tpublic mjBaremeSec:\t\tany;\r\n\r\n\tpublic mjSelectedBaremeId:\tstring = '';\r\n\tpublic majSelectedBareme:\tany;\r\n\r\n\tpublic msActiveQuestion:\tany = {id:0};\r\n\tpublic msActivePart:\t\tany = {id:0};\r\n\t\r\n\tpublic isPartSelected:\t\tboolean = false;\r\n\tpublic isQuestionSelected:\tboolean = false;\r\n\tpublic isShowed:\t\t\tboolean = false;\r\n\t\r\n\tpublic msSelectedBareme:\tany;\r\n\tpublic validation\t\t\t\t= true;\r\n\r\n\tpublic msEpreuveId = '';\r\n\r\n\tpublic mjMainSubject:\tany;\r\n\tpublic mjSecSubject:\tany;\r\n\tpublic moResponseCancel: any =[];\r\n\t\r\n\tpublic msPartSelectedBaremeId:\t\tstring = '';\r\n\r\n\tpublic passation: any;\r\n\t\r\n\tpublic quillModules = \r\n\t{\r\n\t\ttoolbar: \r\n\t\tfalse,\r\n//\t\timageResize: true,\r\n\t\tformula: false\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param moBaremeService \r\n\t * @param userData \r\n\t * @param vaultData \r\n\t * @param workspaceData \r\n\t * @param moSujetService \r\n\t * @param moBaremeData \r\n\t * @param dialog \r\n\t */\r\n\tconstructor(\r\n\t\tpublic moBaremeService:\t\tBaremeService,\r\n\t\tpublic userData:\t\t\tUserData,\r\n\t\tpublic vaultData:\t\t\tVaultData,\r\n\t\tpublic workspaceData:\t\tWorkspaceData,\r\n\t\tpublic moSujetService:\t\tSujetService,\r\n\t\tpublic moBaremeData:\t\tBaremeData,\r\n\t\tpublic dialog:\t\t\t\tMatDialog)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération des infos depuis la page appelante\r\n\t\t// ---------------------------------------\r\n\r\n\t}\r\n\r\n\r\n\tngOnChanges()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\tngOnInit()\r\n\t{\r\n\t\tthis.passation = this.vaultData.getConcourByid(this.passationId);\r\n\r\n\t\tif (this.passation.datas && this.passation.datas.baremesMain)\r\n\t\t{\r\n\t\t\tthis.mjBaremeMain = JSON.parse(this.passation.datas.baremesMain);\r\n\t\t}\r\n\r\n\t\tif (this.passation.datas && this.passation.datas.baremesSec)\r\n\t\t{\r\n\t\t\tthis.mjBaremeSec = JSON.parse(this.passation.datas.baremesSec);\r\n\t\t}\r\n\r\n\t\tlet firstQuestion;\r\n\t\tlet firstPart;\r\n\t\t// ---------------------------------------\r\n\t\t// On remet l'id du bareme quand la question du qcm\r\n\t\t// ---------------------------------------\r\n\t\tif (this.majData && this.majData.parts)\r\n\t\t{\r\n\t\t\tlet isFirstQuestion = true;\r\n\t\t\tfor (let part of this.majData.parts)\r\n\t\t\t{\r\n\t\t\t\t\r\n\t\t\t\tif (part && part.questions)\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tfor (let question of part.questions)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (isFirstQuestion)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfirstQuestion\t= question;\r\n\t\t\t\t\t\t\tfirstPart\t\t= part;\r\n\t\t\t\t\t\t\tisFirstQuestion\t= false;\r\n\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t// Ptet une refonte à faire en fonction\r\n\t\t\t\t\t\tif (this.subjectType === \"main\" && this.mjBaremeMain)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// selection automatique du premier bareme\r\n\t\t\t\t\t\t\tfor (let bareme of this.mjBaremeMain)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpart.coef = bareme.coef;\r\n\t\t\t\t\t\t\t\tif (bareme && bareme.questions)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfor (let questionOfBareme of bareme.questions)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (bareme.part === part.id && question.id === questionOfBareme.question)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tquestion.baremeId\t= questionOfBareme.baremeId;\r\n\t\t\t\t\t\t\t\t\t\t\tquestion.coef\t\t= questionOfBareme.coef;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (!question.hasOwnProperty('isCanceled'))\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tquestion.isCanceled \t\t\t= false;\r\n\t\t\t\t\t\t\t\t\t\t\t\tquestionOfBareme.isCanceled \t= false;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tquestion.isCanceled = questionOfBareme.isCanceled;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Mise en place de l'invalidation des réponses\r\n\t\t\t\t\t\t\t\t\t\t\tfor (let reponse of question.responses)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tif(questionOfBareme.responses)\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let reponseBareme of questionOfBareme.responses)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif(reponse.id === reponseBareme.id)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!reponseBareme.hasOwnProperty('isCanceled'))\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treponse.isCanceled \t\t\t= false;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treponseBareme.isCanceled \t= false;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treponse.isCanceled = reponseBareme.isCanceled;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.subjectType === \"sec\" && this.mjBaremeSec)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfor (let bareme of this.mjBaremeSec)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpart.coef = bareme.coef;\r\n\t\t\t\t\t\t\t\tif (bareme && bareme.questions)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfor (let questionOfBareme of bareme.questions)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (bareme.part === part.id && question.id === questionOfBareme.question)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tquestion.baremeId\t= questionOfBareme.baremeId;\r\n\t\t\t\t\t\t\t\t\t\t\tquestion.coef\t\t= questionOfBareme.coef;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (!questionOfBareme.hasOwnProperty('isCanceled'))\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tquestion.isCanceled \t\t= false;\r\n\t\t\t\t\t\t\t\t\t\t\t\tquestionOfBareme.isCanceled\t= false;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tquestion.isCanceled = questionOfBareme.isCanceled;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t// Mise en place de l'invalidation des réponses\r\n\t\t\t\t\t\t\t\t\t\tfor (let reponse of question.responses)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tif(questionOfBareme.responses)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfor (let reponseBareme of questionOfBareme.responses)\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif(reponse.id === reponseBareme.id)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!reponseBareme.hasOwnProperty('isCanceled'))\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treponse.isCanceled \t\t\t= false;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treponseBareme.isCanceled \t= false;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treponse.isCanceled = reponseBareme.isCanceled;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.selectQuestion(firstPart, firstQuestion);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @param typeRep\r\n\t * @param reponse\r\n\t */\r\n\tpublic onChangeRep(reponse: any)\r\n\t{\r\n\t\t\r\n\t}\r\n\r\n\r\n\tpublic showBareme()\r\n\t{\r\n\t\tthis.isShowed = !this.isShowed;\r\n\t}\r\n\r\n\t/**\r\n\t * Ouvre la modale pour ajouter un nouveau barème\r\n\t */\r\n\tpublic addBareme()\r\n\t{\r\n\t\tlet dialogRef = this.dialog.open(BaremeCreatorComponent,\r\n\t\t\t{\r\n\t\t\t\theight:\t\t\t'65%',\r\n\t\t\t\twidth:\t\t\t'65%',\r\n\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t{\r\n\t\t\t// penser à ajouter l'id passation\r\n\t\t\tif(result)\r\n\t\t\t{\r\n\t\t\t\tresult.idPassation\t\t= this.passationId;\r\n\t\t\t\tlet nNumber: number\t\t= this.moBaremeData.getLastId();\r\n\t\t\t\tresult.number\t\t\t= nNumber;\r\n\r\n\t\t\t\tthis.moBaremeService.createBareme(result);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ouvre la modale pour éditer un barème\r\n\t * Il s'agit de la mm modale mais on lui passe un id de barème\r\n\t */\r\n\tpublic editBareme()\r\n\t{\r\n\r\n\t\tlet oBareme = this.moBaremeData.getBaremeById(this.msActiveQuestion.baremeId);\r\n\r\n\t\tconst dialogRef = this.dialog.open(BaremeCreatorComponent,\r\n\t\t\t{\r\n\t\t\t\theight:\t\t\t'65%',\r\n\t\t\t\twidth:\t\t\t'65%',\r\n\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\tbareme: oBareme\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t{\r\n\t\t\tif (result)\r\n\t\t\t{\r\n\t\t\t\tthis.moBaremeService.editBareme(oBareme.id, result);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Est appelé au clic sur le menu\r\n\t */\r\n\tpublic selectQuestion(psPart: any, psQuestion: any)\r\n\t{\r\n\t\t\t\t\r\n\t\tthis.isPartSelected\t\t= false;\r\n\t\tthis.isQuestionSelected = true;\r\n\t\tthis.msActiveQuestion\t= psQuestion;\r\n\t\tthis.msActivePart\t\t= psPart;\r\n\t\tlet baremeData \t\t\t= this.moBaremeData.getBaremeById(psQuestion.baremeId);\r\n\r\n\t\t/*for (let reponse of baremeData)\r\n\t\t{\r\n\r\n\t\t}*/\r\n\r\n\t\tif(baremeData)\r\n\t\t{\r\n\t\t\tthis.majSelectedBareme = baremeData;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Est appelé au clic sur le menu\r\n\t */\r\n\tpublic selectPart(psPart: any, psQuestion: any)\r\n\t{\r\n\t\tthis.isPartSelected\t\t= true;\r\n\t\tthis.isQuestionSelected = false;\r\n\t\tthis.msActivePart\t\t= psPart;\r\n\t\tthis.msActiveQuestion\t= null;\r\n\t}\r\n\r\n\r\n\t/*\r\n\t * Au changement du bareme on met à j (on fera au validate plus tard)\r\n\t */\r\n\tpublic changeSelected(poEvent: any)\r\n\t{\r\n\t\tlet baremeData \t\t\t= this.moBaremeData.getBaremeById(poEvent);\r\n\t\tthis.majSelectedBareme \t= baremeData;\r\n\t}\r\n\r\n\r\n\t/*\r\n\t * Au changement du bareme on met à j (on fera au validate plus tard)\r\n\t */\r\n\tpublic changeSelectedGlobal(poEvent: any)\r\n\t{\r\n\t\tlet baremeData = this.moBaremeData.getBaremeById(poEvent);\r\n\r\n\t\tthis.majSelectedBareme = baremeData;\r\n\t}\r\n\t\r\n\t/*\r\n\t * Au changement du bareme on met à j (on fera au validate plus tard)\r\n\t */\r\n\tpublic isReponseCancel(reponse: any)\r\n\t{\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic activeBaremeForPart()\r\n\t{\r\n\t\tfor (let question of this.msActivePart.questions)\r\n\t\t{\r\n\t\t\tquestion.baremeId = this.majSelectedBareme.id;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic associateBareme()\r\n\t{\r\n\t\t\r\n\t}\r\n\r\n\r\n\tpublic changeCoefQuestion()\r\n\t{\r\n\t\tif (this.msActiveQuestion.coef <= 0)\r\n\t\t{\r\n\t\t\tthis.msActiveQuestion.coef = 1;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic changeCoefPart()\r\n\t{\r\n\t\tif (this.msActivePart.coef <= 0)\r\n\t\t{\r\n\t\t\tthis.msActivePart.coef = 1;\r\n\t\t}\r\n\t}\r\n}\r\n","\r\n
\r\n
Affecter un barème à la passation
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t>\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject, OnInit, OnDestroy } \tfrom '@angular/core';\r\nimport { MatDialogRef, MatDialog }\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\nimport { FileUploader, FileItem }\tfrom 'ng2-file-upload';\r\nimport { BaremeService }\t\t\tfrom '../../services/bareme.service';\r\nimport { SujetService }\t\t\t\tfrom '../../services/sujet.service';\r\nimport { PassationService }\t\t\tfrom '../../services/passation.service';\r\nimport { File as FileClass }\t\tfrom '../../classes/file.class';\r\nimport { BaremeData }\t\t\t\tfrom '../../providers/bareme-data';\r\nimport { UserData }\t\t\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData }\t\t\tfrom '../../providers/workspace-data';\r\nimport { VaultData } \t\t\t\tfrom '../../providers/vault-data';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'app-bareme-to-qcm',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\ttemplateUrl:\t'./bareme-to-qcm.component.html',\r\n\tstyleUrls:\t\t['./bareme-to-qcm.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class BaremeToQcmComponent implements OnInit, OnDestroy\r\n{\r\n\tpublic fileContent: File;\r\n\tpublic uploader:\tFileUploader;\r\n\r\n\tpublic majMainQCM:\tany\t= {};\r\n\tpublic majSecQCM:\tany\t= {};\r\n\r\n\tpublic mainFileQCM:\t\tFileClass;\r\n\tpublic secondFileQCM:\tFileClass;\r\n\r\n\tpublic mjSelectedBaremeId:\tstring = '';\r\n\tpublic majSelectedBareme:\tany;\r\n\r\n\tpublic msActiveQuestion:\tany = {id:0};\r\n\tpublic msActivePart:\t\tany = {id:0};\r\n\tpublic validation\t\t\t\t= true;\r\n\r\n\tpublic msEpreuveId\t\t= '';\r\n\tpublic msPassationId\t= '';\r\n\r\n\tpublic mjMainSubject:\tany;\r\n\tpublic mjSecSubject:\tany;\r\n\tpublic majData:\t\t\tany;\r\n\r\n\tpublic workspaceDataEmmiterSubscription:\tany;\r\n\tpublic idsSubjectSelected:\t\t\t\t\tany[] = [];\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param dialogRef\r\n\t * @param data\r\n\t * @param moBaremeService\r\n\t * @param moPassationService\r\n\t * @param userData\r\n\t * @param workspaceData\r\n\t * @param vaultData\r\n\t * @param moSujetService\r\n\t * @param moBaremeData\r\n\t * @param dialog\r\n\t */\r\n\tconstructor(public dialogRef:\tMatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA)\tpublic data: any,\r\n\t\tpublic moBaremeService:\t\tBaremeService,\r\n\t\tpublic moPassationService:\tPassationService,\r\n\t\tpublic userData:\t\t\tUserData,\r\n\t\tpublic workspaceData:\t\tWorkspaceData,\r\n\t\tpublic vaultData:\t\t\tVaultData,\r\n\t\tpublic moSujetService:\t\tSujetService,\r\n\t\tpublic moBaremeData:\t\tBaremeData,\r\n\t\tpublic dialog:\t\t\t\tMatDialog)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération des infos depuis la page appelante\r\n\t\t// ---------------------------------------\r\n\t\tthis.majData = data;\r\n\t\t// QCM principal et secondaire\r\n\t\tif (data.qcmJson && data.qcmJson.mainQcm)\r\n\t\t{\r\n\t\t\tthis.majMainQCM = data.qcmJson.mainQcm;\r\n\t\t}\r\n\r\n\t\tif (data.qcmJson && data.qcmJson.secondQcm)\r\n\t\t{\r\n\t\t\tthis.majSecQCM = data.qcmJson.secondQcm;\r\n\t\t}\r\n\r\n\t\t// Sujet principal et secondaire\r\n\t\tif (data.mainSubject)\r\n\t\t{\r\n\t\t\tthis.mjMainSubject = data.mainSubject;\r\n\t\t}\r\n\t\tif (data.secSubject)\r\n\t\t{\r\n\t\t\tthis.mjSecSubject = data.secSubject;\r\n\t\t}\r\n\r\n\t\t// File pour renvoyer la maj (info sur le qcm)\r\n\t\tif (data.qcmJson && data.qcmJson.mainFile)\r\n\t\t{\r\n\t\t\tthis.mainFileQCM = data.qcmJson.mainFile;\r\n\t\t}\r\n\r\n\t\tif (data.qcmJson && data.qcmJson.secondFile)\r\n\t\t{\r\n\t\t\tthis.secondFileQCM = data.qcmJson.secondFile;\r\n\t\t}\r\n\r\n\t\tif (data.idEpreuve)\r\n\t\t{\r\n\t\t\tthis.msEpreuveId = data.idEpreuve;\r\n\t\t}\r\n\r\n\t\tif (data.idPassation)\r\n\t\t{\r\n\t\t\tthis.msPassationId = data.idPassation;\r\n\t\t}\r\n\r\n\t\t// Mise en forme du nom des questions et partie\r\n\t\tif (this.majMainQCM.parts)\r\n\t\t{\r\n\t\t\tfor (const part of this.majMainQCM.parts)\r\n\t\t\t{\r\n\t\t\t\tfor (const question of part.questions)\r\n\t\t\t\t{\r\n\t\t\t\t\tquestion.partId\t= part.id;\r\n\t\t\t\t\tquestion.nameC\t= part.id + '.' + question.id;\r\n\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.majSecQCM.parts)\r\n\t\t{\r\n\t\t\tfor (const part of this.majSecQCM.parts)\r\n\t\t\t{\r\n\t\t\t\tfor (const question of part.questions)\r\n\t\t\t\t{\r\n\t\t\t\t\tquestion.partId\t= part.id;\r\n\t\t\t\t\tquestion.nameC\t= part.id + '.' + question.id;\r\n\t\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\r\n\tngOnInit()\r\n\t{\r\n\t}\r\n\r\n\r\n\tngOnDestroy()\r\n\t{\r\n\t\tif (this.workspaceDataEmmiterSubscription)\r\n\t\t{\r\n\t\t\tthis.workspaceDataEmmiterSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic close()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\tpublic validate()\r\n\t{\r\n\t\tconst jMainBareme: any\t\t= [];\r\n\t\tconst jSecBareme: any\t\t= [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Enregistrement du bareme principal\r\n\t\t// ---------------------------------------\r\n\t\tif (this.majMainQCM && this.majMainQCM.parts)\r\n\t\t{\r\n\t\t\t// Enregistrement des infos de la partie, id, coef et question\r\n\t\t\tfor (const part of this.majMainQCM.parts)\r\n\t\t\t{\r\n\t\t\t\tconst jPart: any = { part: part.id, coef: part.coef, questions: [] };\r\n\r\n\t\t\t\t// Pour chaque question, id du bareme, coef et id question\r\n\t\t\t\tfor (const question of part.questions)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (question.baremeId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet responses: any = [];\r\n\t\t\t\t\t\tfor (let reponse of question.responses)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresponses.push(reponse);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tconst jQuestion =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tquestion:\tquestion.id,\r\n\t\t\t\t\t\t\t\tbaremeId:\tquestion.baremeId,\r\n\t\t\t\t\t\t\t\tcoef:\t\tquestion.coef,\r\n\t\t\t\t\t\t\t\tisCanceled: question.isCanceled,\r\n\t\t\t\t\t\t\t\tresponses: \tresponses\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\tjPart.questions.push(jQuestion);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tjMainBareme.push(jPart);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Enregistrement du bareme secondaire\r\n\t\t// ---------------------------------------\r\n\t\tif (this.majSecQCM && this.majSecQCM.parts)\r\n\t\t{\r\n\t\t\t// Enregistrement des infos de la partie, id, coef et question\r\n\t\t\tfor (const part of this.majSecQCM.parts)\r\n\t\t\t{\r\n\t\t\t\tconst jPart: any = { part: part.id, coef: part.coef, questions: [] };\r\n\r\n\t\t\t\t// Pour chaque question, id du bareme, coef et id question\r\n\t\t\t\tfor (const question of part.questions)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (question.baremeId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst jQuestion =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tquestion: \t\tquestion.id,\r\n\t\t\t\t\t\t\t\tbaremeId: \t\tquestion.baremeId,\r\n\t\t\t\t\t\t\t\tcoef: \t\t\tquestion.coef,\r\n\t\t\t\t\t\t\t\tisCanceled: \tquestion.isCanceled,\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tjPart.questions.push(jQuestion);\r\n\r\n\t\t\t\t\t}\r\n/*\t\t\t\t\tfor (let reponse of question.responses)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (!reponse.hasOwnProperty('isCanceled'))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treponse.isCanceled = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}*/\r\n\t\t\t\t}\r\n\t\t\t\tjSecBareme.push(jPart);\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst passation: any = this.vaultData.getConcourByid(this.msPassationId);\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// MAj du bareme (passation) coté serveur\r\n\t\t// ---------------------------------------\r\n\t\tconst aData: any = \r\n\t\t{\r\n\t\t\t'+datas': \r\n\t\t\t{\r\n\t\t\t\tnotation: \t\t\tpassation.datas.notation,\r\n\t\t\t\tbaremesMain: \t\tjMainBareme,\r\n\t\t\t\tbaremesSec: \t\tjSecBareme,\r\n\t\t\t\tneedCalcResults: \ttrue\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.moPassationService.updatePassation(this.msPassationId, aData);\r\n\t\tthis.dialogRef.close(aData);\r\n\t}\r\n}\r\n","
\r\n
\r\n {{libelle}}\r\n
\r\n
\r\n
\r\n\t\t\t
\r\n
\r\n \r\n \r\n\t\t\t\t\t
\r\n
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{comment.message}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n
\r\n
\r\n
\r\n \r\n \r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{comment.soustitre}}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{comment.soustitrePath}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{comment.nameFile}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{comment.nameFile}}\r\n\t\t\t\t\t\t\tversion {{comment.version}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{comment.soustitre}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{comment.soustitrePath}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{comment.nameFile}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{comment.nameFile}}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{comment.textPath}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{comment.textPath}}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n
\r\n
\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\t\r\n
\r\n\r\n
\r\n\r\n","import { Component, SecurityContext, ViewEncapsulation, AfterViewChecked, ViewChild, ElementRef, Input, OnInit, OnDestroy }\tfrom '@angular/core';\r\nimport { MatDialog } from '@angular/material';\r\nimport {TranslateService} \t\tfrom '@ngx-translate/core';\r\nimport { DomSanitizer }\t\t from '@angular/platform-browser';\r\n\r\nimport { Session } from '../../classes/session.class';\r\nimport { Examen } from '../../classes/examen.class';\r\nimport { Matiere } from '../../classes/matiere.class';\r\nimport { Sujet } from '../../classes/sujet.class';\r\nimport { Task } from '../../classes/task.class';\r\nimport { File as ExatiqueFile }\tfrom '../../classes/file.class';\r\n\r\nimport { FileService } from '../../services/file.service';\r\nimport { MessagesService } from '../../services/messages.service';\r\n\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData } from '../../providers/workspace-data';\r\nimport { TaskData } from '../../providers/task-data';\r\nimport { SavedData }\t\tfrom '../../providers/saved-data';\r\n\r\nimport * as _ from 'underscore';\r\nimport * as htmlEncode from 'js-htmlencode';\r\n\r\n\r\n/**\r\n * Composant générique permet de gérer des commentaires appartenant à plusieurs\r\n * entités différentes (session, examen, pereuves, sujet, fichier,...)\r\n * Permet la récupération et l'affichage des commnetiare ainsi que l'ajout d'un nouveau commentaire\r\n */\r\n@Component({\r\n\tselector:\t\t'comments-component',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./comments.component.scss'],\r\n\ttemplateUrl:\t'comments.component.html'\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class CommentsComponent implements OnInit, OnDestroy, AfterViewChecked\r\n{\r\n\r\n /**\r\n * Type de l'élément concerné par les commentaire:\r\n * -session\r\n * -examen\r\n * -epreuve\r\n * -sujet\r\n * -fichier\r\n */\r\n public element:\t\tany\t\t= null;\r\n public elementId: any = null;\r\n public typeComment:\tstring\t= 'comment';\r\n\tpublic libelle:\t\tstring\t= '';\r\n\r\n\tpublic idUser:\t\t\tstring\t= null;\r\n\tpublic creationDate:\tDate\t= new Date();\r\n\r\n public moHistorySubscription:\tany;\r\n public comment:\t\t\t\t\tstring = '';\r\n\r\n public mustScrollBottom: boolean = false;\r\n public canAddNewMessage: boolean = true;\r\n\r\n public parentElement: any;\r\n\r\n @Input() public showButton = true;\r\n @ViewChild('scrollMessages') private myScrollContainer: ElementRef;\r\n\r\n\r\n /**\r\n * Identifiant de l'élément dont on souhaite génrer les commentaires\r\n */\r\n\t@Input()\r\n\tset type(type: string)\r\n\t{\r\n\t\tthis.typeComment = type;\r\n\t\tif (this.typeComment === 'historic')\r\n\t\t{\r\n\t\t\tthis.translate.get('comments.historic').subscribe((historic: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.libelle = historic;\r\n\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (this.typeComment === 'historic-comment')\r\n\t\t\t{\r\n\t\t\t\tthis.translate.get('comments.historicComments').subscribe((historicComments: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.libelle = historicComments;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.translate.get('comments.comments').subscribe((comments: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.libelle = comments;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\t@Input()\r\n\tset idElement(idElement: string)\r\n\t{\r\n\t\tif (idElement)\r\n\t\t{\r\n\t\t\tthis.elementId\t\t= idElement;\r\n\t\t\tlet allElements\t\t= this.workspaceData.getHistoric(idElement);\r\n\r\n\t\t\tif (allElements && allElements.comments)\r\n\t\t\t{\r\n\t\t\t\tallElements.comments\t= _.filter(allElements.comments, (comment: any) => { return this.hasContent(comment); });\r\n\t\t\t\tthis.element\t\t\t= allElements;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n @Input()\r\n set parent(parent: string)\r\n\t{\r\n this.parentElement = parent;\r\n }\r\n\r\n\r\n @Input()\r\n set canAddMessage(canAddMessage: boolean)\r\n {\r\n this.canAddNewMessage = canAddMessage;\r\n }\r\n\r\n\r\n constructor(\r\n public fileService:\t\tFileService,\r\n public messagesService: MessagesService,\r\n public translate: TranslateService,\r\n public sanitizer: DomSanitizer,\r\n public userData:\t\tUserData,\r\n public savedData:\t\tSavedData,\r\n public workspaceData: WorkspaceData,\r\n public taskData: TaskData,\r\n public dialog:\t\t\tMatDialog)\r\n {\r\n this.comment = '';\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public ngOnInit()\r\n\t{\r\n\t\tthis.moHistorySubscription = this.workspaceData.globalEmitter.subscribe((values: any) =>\r\n\t\t{\r\n\t\t\tif (values[0] === 'messages::get' && values[1] === this.elementId)\r\n\t\t\t{\r\n let allElements = this.workspaceData.getHistoric(values[1]);\r\n if (allElements && allElements.comments)\r\n {\r\n allElements.comments\t= _.filter(allElements.comments, (comment: any) => { return this.hasContent(comment); });\r\n this.element\t\t\t= allElements;\r\n }\r\n\r\n this.mustScrollBottom = true;\r\n\t\t\t}\r\n });\r\n this.mustScrollBottom = true;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public ngOnDestroy()\r\n\t{\r\n if (this.moHistorySubscription)\r\n {\r\n this.moHistorySubscription.unsubscribe();\r\n }\r\n\t}\r\n\r\n\r\n /**\r\n *\r\n */\r\n\tngAfterViewChecked()\r\n\t{\r\n\t\tif (this.mustScrollBottom === true)\r\n\t\t{\r\n\t\t\tthis.mustScrollBottom = false;\r\n\t\t\tthis.scrollToBottom();\r\n\t\t}\r\n\t}\r\n\r\n\r\n /**\r\n *\r\n */\r\n scrollToBottom()\r\n\t{\r\n try\r\n\t\t{\r\n this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight;\r\n }\r\n\t\tcatch(err)\r\n\t\t{ }\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param comment\r\n\t */\r\n public hasContent(comment: any)\r\n {\r\n let result = false;\r\n\r\n\t\tif (comment.message || comment.soustitre || comment.soustitrePath || comment.content)\r\n\t\t{\r\n\t\t\tresult = true;\r\n\t\t}\r\n\r\n return result;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param idFile\r\n\t */\r\n\tpublic canDownloadFile(idFile: any)\r\n\t{\r\n\t\tlet result\t\t= false;\r\n\t\tlet file: any\t= this.workspaceData.getTreeElement(idFile);\r\n\r\n\t\tif (file && file.deleted === false)\r\n\t\t{\r\n\t\t\tresult = true;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public downloadFile(path: any, idFile: any, name: string, type: string)\r\n {\r\n let file: any = this.workspaceData.getTreeElement(idFile);\r\n\r\n if (file && file.deleted === false)\r\n {\r\n this.fileService.downloadFromId(path, file.id, name, type);\r\n }\r\n }\r\n\r\n\r\n /**\r\n *\r\n */\r\n public canValidateComment()\r\n {\r\n let result\t\t\t\t= true;\r\n let commentWithoutSpace = this.comment.replace(/\\s+/g, '');\r\n\r\n if (!commentWithoutSpace || commentWithoutSpace === '')\r\n {\r\n result = false;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Affichage de la modal d'ajout de commentaire\r\n */\r\n\tpublic addNewComment()\r\n\t{\r\n if (this.canValidateComment() === true)\r\n {\r\n let type;\r\n\r\n let value = this.workspaceData.getTreeElement(this.elementId);\r\n //Si value est undefined, il s'agit peut être de l'identifiant d'une tache\r\n if (value === undefined)\r\n {\r\n value = this.taskData.getTaskById(this.elementId);\r\n }\r\n\r\n let baseChannelNode\t\t= '*soft::' + this.userData.account + '::creation::tree::';\r\n let baseChannelSubject\t= '*soft::' + this.userData.account + '::creation::suj::';\r\n let baseChannelTask\t\t= '*soft::' + this.userData.account + '::creation::task::';\r\n\r\n let notifiers = [];\r\n\r\n if (value)\r\n {\r\n if (value instanceof Session)\r\n {\r\n type = 'session';\r\n if (this.workspaceData.selectedEtablissement)\r\n {\r\n notifiers.push(baseChannelNode + this.workspaceData.selectedEtablissement.id);\r\n }\r\n }\r\n\r\n\t\t\t\tif (value instanceof Examen)\r\n\t\t\t\t{\r\n\t\t\t\t\ttype = 'examen';\r\n\t\t\t\t\tif (this.workspaceData.selectedEtablissement)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedEtablissement.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedSession)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedSession.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value instanceof Matiere)\r\n\t\t\t\t{\r\n\t\t\t\t\ttype = 'matiere';\r\n\t\t\t\t\tif (this.workspaceData.selectedEtablissement)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedEtablissement.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedSession)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedSession.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedExamen)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedExamen.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value instanceof Sujet)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.workspaceData.selectedEtablissement)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedEtablissement.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedSession)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedSession.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedExamen)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedExamen.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedMatiere)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedMatiere.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedSujet)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelSubject + this.workspaceData.selectedSujet.id);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//On récupère les taches affiliée au sujet concerné pour les ajouter dans les taches à notifier\r\n\t\t\t\t\tlet tasksFiltered = _.filter(this.workspaceData.globalTask, (task: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn task.idSujet === value.id;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tfor (let task of tasksFiltered)\r\n {\r\n notifiers.push(baseChannelTask + task.id);\r\n }\r\n type = 'subjects';\r\n }\r\n\r\n\t\t\t\tif (value instanceof ExatiqueFile)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.workspaceData.selectedEtablissement)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedEtablissement.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedSession)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedSession.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedExamen)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedExamen.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedMatiere)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelNode + this.workspaceData.selectedMatiere.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.workspaceData.selectedSujet)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelSubject + this.workspaceData.selectedSujet.id);\r\n\r\n\t\t\t\t\t\t// On récupère les taches affiliée au sujet concerné pour les ajouter dans les taches à notifier\r\n\t\t\t\t\t\tlet tasksFiltered = _.filter(this.workspaceData.globalTask, (task: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn task.idSujet === this.workspaceData.selectedSujet.id;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tfor (let task of tasksFiltered)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tnotifiers.push(baseChannelTask + task.id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttype = 'files';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value instanceof Task)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.parentElement && this.parentElement.id)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnotifiers.push(baseChannelSubject + this.parentElement.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.workspaceData.selectedSujet)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tnotifiers.push(baseChannelSubject + this.workspaceData.selectedSujet.id);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnotifiers.push(baseChannelTask + value.id);\r\n\r\n\t\t\t\t\ttype = 'tasks';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.comment = htmlEncode.htmlEncode(this.comment);\r\n\r\n\t\t\t\tif (type)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet datasComment: any =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taction:\t\t'create',\r\n\t\t\t\t\t\tcomment:\tthis.comment,\r\n\t\t\t\t\t\tuser:\t\tthis.userData.mail\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.messagesService.sendMessage(type, this.elementId, 'C', datasComment, notifiers);\r\n\r\n\t\t\t\t\tthis.comment = '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic decodeHTML(html:any)\r\n\t{\r\n\t\tvar txt \t\t= document.createElement('textarea');\r\n\t\ttxt.innerHTML \t= html;\r\n\r\n\t\treturn txt.value;\r\n\t}\r\n\r\n}\r\n","
\r\n
\r\n
\r\n\t\t\t
\r\n\t\t\t\tEdition commentaire\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n
\r\n\r\n
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\t\t\t\tfrom '@angular/core';\r\nimport { FormControl, FormBuilder, FormGroup, Validators }\tfrom '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA }\t\t\t\t\tfrom '@angular/material';\r\n\r\nimport { SocketService } \t\tfrom '../../../services/socket.service';\r\nimport { SessionService } \tfrom '../../../services/session.service';\r\nimport { ExamenService } \tfrom '../../../services/examen.service';\r\nimport { EpreuveService } \tfrom '../../../services/epreuve.service';\r\nimport { SujetService } \tfrom '../../../services/sujet.service';\r\nimport { FileService } \tfrom '../../../services/file.service';\r\nimport { UserData }\t\t\t\tfrom '../../../providers/user-data';\r\nimport { WorkspaceData }\t\tfrom '../../../providers/workspace-data';\r\nimport { File as ExatiqueFile }\tfrom '../../../classes/file.class';\r\nimport { Comment } from '../../../classes/comment.class';\r\n\r\n\r\n@Component({\r\n selector:\t\t'comment-modal',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'commentModal.component.html',\r\n styleUrls:\t\t['./commentModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * Modal permettant l'ajout d'un nouveau commentaire pour un élement donné\r\n */\r\nexport class CommentModalComponent\r\n{\r\n // Identifiant de l'élément concerné par le nouveau commentaire\r\n public _idElement:\t\t\tstring;\r\n // objet Comment correspondant au commentaire en édition\r\n public _currentComment:\t\tComment;\r\n public moFormComment:\t\tFormGroup;\r\n public moFormCtrlMessage:\tFormControl;\r\n\r\n\r\n constructor(public dialogRef:\t\tMatDialogRef,\r\n public socketService:\tSocketService,\r\n public sessionService:\tSessionService,\r\n public examenService:\tExamenService,\r\n public epreuveService:\tEpreuveService,\r\n public sujetService:\tSujetService,\r\n public fileService:\t\tFileService,\r\n\t\t\t\tpublic fb:\t\t\t\tFormBuilder,\r\n\t\t\t\tpublic userData:\t\tUserData,\r\n\t\t\t\tpublic workspaceData:\tWorkspaceData,\r\n\t\t\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\r\n\t\tif (this.data && this.data.idElement && this.data.comment)\r\n\t\t{\r\n\t\t\tthis._idElement\t\t\t= this.data.idElement;\r\n\t\t\tthis._currentComment\t= this.data.comment;\r\n\t\t\tthis.moFormCtrlMessage\t= this.fb.control(this._currentComment.message, Validators.required);\r\n\r\n\r\n\t\t\tthis.moFormComment = this.fb.group(\r\n\t\t\t\t{\r\n\t\t\t\t\tmessage: this.moFormCtrlMessage,\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic cancelComment()\r\n {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public vadidateComment()\r\n {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{{ 'convertExistingDocument.title' | translate }}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject, EventEmitter } from '@angular/core';\r\n\r\nimport { MatDialogRef }\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\tfrom '@angular/material';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n@Component({\r\n selector:\t\t'edit-file-name-modal',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'editFileNameModal.component.html',\r\n styleUrls:\t\t['./editFileNameModal.component.scss']\r\n})\r\n\r\n\r\nexport class EditFileNameModalComponent\r\n{\r\n\tpublic nameFile: \t\t\t\tstring \t= '';\r\n\tpublic isCurrentFileNameValid: \tboolean = true;\r\n\r\n\r\n constructor(public dialogRef:\tMatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\t\r\n\t\tif (this.data && this.data.subject && this.data.file && this.data.format)\r\n\t\t{\r\n\t\t\tconst splittedOriginalName\t= this.data.file.name.split('.');\r\n\t\t\tlet prefixName\t\t\t\t= '';\r\n\t\t\tlet suffixName\t\t\t\t= '';\r\n\r\n\t\t\tif (splittedOriginalName.length === 1)\r\n\t\t\t{\r\n\t\t\t\tprefixName += splittedOriginalName[0];\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tfor (let i = 0; i < splittedOriginalName.length - 1; i++)\r\n\t\t\t\t{\r\n\t\t\t\t\tprefixName += splittedOriginalName[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.nameFile = prefixName;\r\n\r\n\t\t\tswitch(this.data.format)\r\n\t\t\t{\r\n\t\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase 'html':\r\n\t\t\t\t\tthis.nameFile\t+= '.html';\r\n\t\t\t\t\tsuffixName\t\t= '.html';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet nameExisting\t= this._isFileNameExisting();\r\n\t\t\tlet compteur\t\t= 0;\r\n\r\n\t\t\twhile (nameExisting === true)\r\n\t\t\t{\r\n\t\t\t\tcompteur++;\r\n\t\t\t\tthis.nameFile\t= prefixName + '(' + compteur + ')' + suffixName;\r\n\t\t\t\tnameExisting\t= this._isFileNameExisting();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param event \r\n\t */\r\n\tpublic onChangeName(event: any)\r\n\t{\r\n\t\tthis.nameFile\t\t\t\t= event;\r\n\t\tconst nameExisting\t\t\t= this._isFileNameExisting();\r\n\t\tthis.isCurrentFileNameValid = nameExisting === false;\r\n//\t\tconst elementsName\t\t\t= this.nameFile.split('.');\r\n//\t\tlet tempName\t\t\t\t= this.nameFile;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic validate()\r\n\t{\r\n\t\tconst elementsName = this.nameFile.split('.');\r\n\r\n\t\tif (elementsName[elementsName.length - 1] !== this.data.format)\r\n\t\t{\r\n\t\t\tthis.nameFile += '.' + this.data.format;\r\n\t\t}\r\n\r\n\t\tthis.dialogRef.close(this.nameFile);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate _isFileNameExisting()\r\n\t{\r\n\t\tlet result\t\t\t= false;\r\n\t\tconst elementsName\t= this.nameFile.split('.');\r\n\t\tlet tempName\t\t= this.nameFile;\r\n\r\n\t\tif (elementsName[elementsName.length - 1] !== this.data.format)\r\n\t\t{\r\n\t\t\ttempName += '.' + this.data.format;\r\n\t\t}\r\n\r\n\t\tif (this.data.subject && this.data.subject.pj)\r\n\t\t{\r\n\t\t\tconst find = _.find(this.data.subject.pj, (pj: any) => { return pj.name === tempName; });\r\n\r\n\t\t\tif (find !== undefined)\r\n\t\t\t{\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tresult = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\n","
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {{message}}\r\n\r\n\r\n\t
\r\n\r\n\t\t
\r\n\t\t\tdone\r\n\t\t\tclear\r\n\t\t\t{{ 'passwordEditor.specialChar' | translate }}\r\n\t\t
\r\n\t\t
\r\n\t\t\tdone\r\n\t\t\tclear\r\n\t\t\t{{ 'passwordEditor.uppercaseChar' | translate }}\r\n\t\t
\r\n\t\t
\r\n\t\t\tdone\r\n\t\t\tclear\r\n\t\t\t{{ 'passwordEditor.number' | translate }}\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{ 'passwordEditor.samePassword' | translate }}\r\n\t\t
\r\n\r\n\r\n\t
\r\n\r\n
\r\n","import { Component, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'password-editor',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./passwordEditor.component.scss'],\r\n\ttemplateUrl:\t'passwordEditor.component.html'\r\n})\r\n\r\nexport class PasswordEditorComponent\r\n{\r\n\t@Input()\tclass:\t\t\tstring\t= '';\r\n\t@Input()\tid:\t\t\t\tstring\t= '';\r\n\t@Output()\tonValidPassword\t\t\t= new EventEmitter();\r\n\r\n\tpublic passwordCurrent: any = undefined;\r\n\tpublic password1: any;\r\n\tpublic password2: any;\r\n\r\n\r\n\t@Input()\r\n\tset password(password: string)\r\n\t{\r\n\t\tif (password)\r\n\t\t{\r\n\t\t\tthis.password1\t= password;\r\n\t\t\tthis.password2\t= password;\r\n\t\t\tthis.value\t\t= password;\r\n\r\n\t\t\tthis.evaluatePassword();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t@Input()\r\n\tset currentPassword(currentPassword: string)\r\n\t{\r\n\t\tif (currentPassword)\r\n\t\t{\r\n\t\t\tthis.passwordCurrent = currentPassword;\r\n\t\t\tthis.checkValidPassword();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic\tvalue:\t\tstring;\r\n\tpublic\tmessage:\tstring;\r\n\tpublic\tsymbool:\tany\t\t= { 'isit': false };\r\n\tpublic\tnucbool:\tany\t\t= { 'isit': false };\r\n\tpublic\tnumbool:\tany\t\t= { 'isit': false };\r\n\r\n\tconstructor(public translate: TranslateService)\r\n\t{\r\n\t\ttranslate.get('passwordEditor.instructions').subscribe((txt: string) => {\r\n this.message\t= txt;\r\n });\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tonKeyPassword(event: any)\r\n\t{\r\n\t\tthis.value = event.target.value;\r\n\r\n\t\tthis.evaluatePassword();\r\n\t\tthis.checkValidPassword();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tevaluatePassword()\r\n\t{\r\n\t\tlet numberOfUpperCase\t= this.value.replace(/[^A-Z]/g, \"\").length; // Uppercase Letters\r\n//\t\tlet numberOfLowerCase\t= this.value.replace(/[^a-z]/g, \"\").length; // Lowercase Letters\r\n\t\tlet numberOfNumber\t\t= this.value.replace(/[^0-9]/g, \"\").length; // Numbers\r\n\r\n\t\tlet numberOfSymbol: number;\r\n\t\tlet sym = this.value.match(/[ !@#$£%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/g); // Symbols\r\n\t\tif (!sym) { numberOfSymbol = 0 } else { numberOfSymbol = sym.length };\r\n\r\n\t\tif (sym == null)\r\n\t\t{\r\n\t\t\tthis.symbool['isit'] = false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.symbool['isit'] = true;\r\n\t\t}\r\n\r\n\t\tif (numberOfUpperCase === 0)\r\n\t\t{\r\n\r\n\t\t\tthis.nucbool['isit'] = false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.nucbool['isit'] = true;\r\n\t\t}\r\n\r\n\t\tif (numberOfNumber === 0)\r\n\t\t{\r\n\t\t\tthis.numbool['isit'] = false;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.numbool['isit'] = true;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tonKeyPasswordConfirm(event: any)\r\n\t{\r\n\t\tthis.checkValidPassword();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tcheckValidPassword()\r\n\t{\r\n\t\tif (this.passwordCurrent === undefined || this.passwordCurrent !== this.password1)\r\n\t\t{\r\n\t\t\tif (this.symbool['isit'] === true && this.nucbool['isit'] === true && this.numbool['isit'] === true && this.password1 === this.password2)\r\n\t\t\t{\r\n\t\t\t\tthis.onValidPassword.emit(this.password1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.onValidPassword.emit(false);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.onValidPassword.emit(false);\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\r\n
\r\n
\r\n {{ 'previewModal.filePreview' | translate }}\r\n
\r\n
\r\n\t\t\t
close
\r\n
\r\n
\r\n
\r\n\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t \r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t
\r\n
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n
\r\n
\r\n\t\t\r\n \r\n
\r\n
\r\n","import { Component, ViewEncapsulation, Inject, EventEmitter, OnInit } from '@angular/core';\r\n\r\nimport { MatDialog, MatDialogRef }\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\tfrom '@angular/material';\r\nimport { DomSanitizer }\t\tfrom '@angular/platform-browser';\r\nimport { Observable }\t\tfrom 'rxjs';\r\n\r\nimport { File as ExatiqueFile }\tfrom '../../classes/file.class';\r\nimport { FileService } from '../../services/file.service';\r\nimport { MessagesService }\t\tfrom '../../services/messages.service';\r\n\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData }\tfrom '../../providers/workspace-data';\r\n\r\nimport { CreationHttpService }\t\t\tfrom '../../services/http/creationHttp.service';\r\nimport { EditFileNameModalComponent }\tfrom '../edit-file-name-modal/editFileNameModal.component';\r\nimport { FileUploader, FileItem }\t\tfrom 'ng2-file-upload';\r\n\r\ndeclare const require: any;\r\n\r\nconst fileSaver = require('file-saver');\r\n\r\n\r\n@Component({\r\n selector:\t\t'preview-modal',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'previewModal.component.html',\r\n styleUrls:\t\t['./previewModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * Modal permettant l'affichage du contenu d'un fichier avec la possibilité de visualiser et d'ajouter des commentaires\r\n */\r\nexport class PreviewModalComponent implements OnInit\r\n{\r\n\r\n public contentLoaded:\t\tboolean = false;\r\n\tpublic hasPDF:\t\t\t\tboolean = true;\r\n\tpublic hasImg:\t\t\t\tboolean = false;\r\n\tpublic hasVideo:\t\t\tboolean = false;\r\n public currentFile:\t\t\tExatiqueFile;\r\n public moFileSubscription:\tany;\r\n public objSrc:\t\t\t\tany;\r\n\tpublic previewProcessing:\tboolean = false;\r\n\r\n\tpublic canDownloadGeneratedFile: boolean = false;\r\n\r\n\tpublic canConvertFileFile: boolean\t\t= false;\r\n\tpublic convertFormatsAvailable: any[]\t=\r\n\t\t[\r\n\t\t\t{ value: 'html', libelle: 'HTML' }\r\n\t\t];\r\n\r\n\tpublic convertNameSelected:\t\tany;\r\n\tpublic convertFormatSelected:\tany;\r\n\r\n\tpublic currentPdfBlob:\t\tany;\r\n\tpublic messageLoading:\t\tstring = 'Chargement...';\r\n\tpublic percentLoading:\t\tnumber = 0;\r\n\r\n\tpublic uploaderForConvert:\tany;\r\n\r\n\tpublic currentPdfDocument: any;\r\n\r\n\tconstructor(public dialogRef:\t\tMatDialogRef,\r\n\t\t\t\tpublic dialog: \t\t\tMatDialog,\r\n public userData:\t\tUserData,\r\n public workspaceData:\tWorkspaceData,\r\n\t\t\t\tpublic fileService:\t\tFileService,\r\n\t\t\t\tpublic messagesService: MessagesService,\r\n\t\t\t\tpublic sanitizer:\t \tDomSanitizer,\r\n @Inject(MAT_DIALOG_DATA) public data: any)\r\n {\r\n if (this.data && this.data.file)\r\n {\r\n this.contentLoaded\t= false;\r\n this.currentFile\t= this.data.file;\r\n }\r\n }\r\n\r\n\r\n public ngOnInit()\r\n\t{\r\n\t\tthis._initPreviewFromFileDetails();\r\n\r\n\t\tconst apiUrl\t\t\t\t= CreationHttpService.getAPIUrl();\r\n\t\tconst pathFileSendToConvert\t= CreationHttpService.getPathByWebServiceName('filesendToConvert');\r\n\t\tconst urlAbsolute\t\t\t= CreationHttpService.absolute(apiUrl, pathFileSendToConvert);\r\n\t\tconst userTokenKey\t\t\t= this.userData.getTokenKey();\r\n\t\tthis.uploaderForConvert \t= new FileUploader({ url: urlAbsolute, authToken: 'Bearer ' + userTokenKey });\r\n\r\n\t\tthis.uploaderForConvert.onAfterAddingFile = (fileItem: FileItem) =>\r\n\t\t{\r\n\t\t\tif (fileItem)\r\n\t\t\t{\r\n\t\t\t\tthis.uploaderForConvert.uploadItem(fileItem);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.uploaderForConvert.onBuildItemForm = (item: any, form: any) =>\r\n\t\t{\r\n\t\t\tform.append('epreuveId',\t\tthis.workspaceData.selectedMatiere.id);\r\n\t\t\tform.append('subjectId',\t\tthis.workspaceData.selectedSujet.id);\r\n\t\t\tform.append('fingerprint',\t\tthis.userData.getFingerPrint().toString());\r\n\t\t\tform.append('format',\t\t\tthis.convertFormatSelected);\r\n\t\t\tform.append('nameConverted',\tthis.convertNameSelected);\r\n\t\t\tform.append('fileTypes',\t\tJSON.stringify(['sujet']));\r\n\r\n\t\t\tthis.convertFormatSelected = null;\r\n\r\n\t\t\treturn { item, form };\r\n\t\t};\r\n }\r\n\r\n\r\n\t/**\r\n\t */\r\n public closeModal()\r\n\t{\r\n\t\tif (this.currentPdfDocument)\r\n\t\t{\r\n\t\t\tthis.currentPdfDocument.destroy();\r\n\t\t}\r\n\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param event \r\n\t */\r\n\tpublic onLoadedPdf(event: any)\r\n\t{\r\n\t\tthis.currentPdfDocument = event;\r\n\t\tthis.previewProcessing = false;\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t * @param event \r\n\t */\r\n\tpublic onProgressPdf(event: any)\r\n\t{\r\n\t\tif (this.currentPdfBlob.size && event.loaded)\r\n\t\t{\r\n\t\t\tthis.percentLoading = Math.round((event.loaded / this.currentPdfBlob.size) * 100);\r\n\t\t\tthis.messageLoading = 'Chargement: ' + String(this.percentLoading) + '%';\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param event \r\n\t */\r\n\tpublic onRenderedPagePdf(event: any)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic downloadPreviewFile()\r\n\t{\r\n\r\n\t\twindow.URL \t\t\t= this.workspaceData.urlCreator;\r\n\t\t// On recréer le nom pour ajouter l'extension PDF\r\n\t\tconst currentName \t= this.currentFile.name;\r\n\t\t\r\n\t\tlet newName;\r\n\t\tconst partsCurrentName = currentName.split('.');\r\n\r\n\t\tif (partsCurrentName.length > 1)\r\n\t\t{\r\n\t\t\tpartsCurrentName.pop();\r\n\t\t\tpartsCurrentName.join('.');\r\n\t\t\tnewName = partsCurrentName + '.pdf';\r\n\t\t}\r\n\t\telse \r\n\t\t{\r\n\t\t\tnewName = partsCurrentName[0] + '.pdf';\r\n\t\t}\r\n\r\n\t\t// On télécharge le PDF prévisualisé\r\n\t\tfileSaver.saveAs(this.currentPdfBlob, newName);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic downloadFile() \r\n\t{\r\n\t\twindow.URL\t\t\t= this.workspaceData.urlCreator;\r\n\t\tconst currentName\t= this.currentFile.name;\r\n\t\t\r\n\t\tfileSaver.saveAs(this.currentPdfBlob, currentName);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param format \r\n\t */\r\n\tpublic clickConvert(format: any)\r\n\t{\r\n\t\tconst dialogRef = this.dialog.open(EditFileNameModalComponent,\r\n\t\t\t{\r\n\t\t\t\theight:\t\t\t'40%',\r\n\t\t\t\twidth:\t\t\t'40%',\r\n\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\t'subject':\t\tthis.workspaceData.selectedSujet,\r\n\t\t\t\t\t'file':\t\t\tthis.currentFile,\r\n\t\t\t\t\t'format':\t\tformat,\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tdialogRef.afterClosed().subscribe((resultNameConvert: any) =>\r\n\t\t{\r\n\t\t\tif (resultNameConvert)\r\n\t\t\t{\r\n\t\t\t\tlet detailsFile: any = this.workspaceData.getTreeElement(this.currentFile.id);\r\n\r\n\t\t\t\tif (detailsFile)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet extension\t= detailsFile.extension.toLowerCase();\r\n\t\t\t\t\tlet mimetype\t= this._getMimeType(extension);\r\n\t\t\t\t\tlet obsContent\t= this.fileService.downloadContentFile(detailsFile);\r\n\r\n\t\t\t\t\tobsContent.subscribe((res) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet body = ( res)._body;\r\n\r\n\t\t\t\t\t\tthis.fileService.decryptFileWithAES(detailsFile, body, mimetype).then((blobResult) => {\r\n\r\n\t\t\t\t\t\t\tlet newFileContent\t\t\t= new File([blobResult], detailsFile.name);\r\n\t\t\t\t\t\t\tthis.convertNameSelected\t= resultNameConvert;\r\n\t\t\t\t\t\t\tthis.convertFormatSelected\t= format;\r\n\r\n\t\t\t\t\t\t\tthis.uploaderForConvert.addToQueue([newFileContent]);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate _initPreviewFromFileDetails()\r\n\t{\r\n\t\tconst detailsFile: any = this.workspaceData.getTreeElement(this.currentFile.id);\r\n\r\n\t\tif (detailsFile)\r\n\t\t{\r\n\t\t\tlet obsPreview: Observable;\r\n\t\t\tlet mustDecrypt: boolean;\r\n\r\n\t\t\tconst extension = detailsFile.extension.toLowerCase();\r\n\r\n\t\t\tconst mimetype = this._getMimeType(extension);\r\n\r\n\t\t\tif (extension === 'context'\r\n\t\t\t\t|| extension === 'doc'\r\n\t\t\t\t|| extension === 'docx'\r\n\t\t\t\t|| extension === 'odt'\r\n\t\t\t\t|| extension === 'ctx'\r\n\t\t\t\t|| extension === 'ltx'\r\n\t\t\t\t|| extension === 'tex'\r\n\t\t\t\t|| extension === 'txt'\r\n\t\t\t\t|| extension === 'tif'\r\n\t\t\t\t|| extension === 'html'\r\n\t\t\t\t|| extension === 'xls'\r\n\t\t\t\t|| extension === 'xlsx')\r\n\t\t\t{\r\n\t\t\t\t//Cas d'exception pour les fichier tif (ce ne sont pas des pdf mais des jpg)\r\n\t\t\t\tif (extension === 'tif')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.hasPDF\t\t= false;\r\n\t\t\t\t\tthis.hasImg\t\t= true;\r\n\t\t\t\t\tthis.hasVideo\t= false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (extension === 'docx' || extension === 'doc')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.canConvertFileFile = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tobsPreview = this.fileService.downloadContentFile(detailsFile, 'pdf');\r\n\t\t\t\tmustDecrypt = false;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (extension\t === 'png'\r\n\t\t\t\t\t|| extension === 'bmp'\r\n\t\t\t\t\t|| extension === 'jpg'\r\n\t\t\t\t\t|| extension === 'jpeg')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.hasPDF\t\t= false;\r\n\t\t\t\t\tthis.hasImg\t\t= true;\r\n\t\t\t\t\tthis.hasVideo\t= false;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (extension === 'mp4'\r\n\t\t\t\t\t\t|| extension === 'avi'\r\n\t\t\t\t\t\t|| extension === 'mkv')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.hasPDF\t\t= false;\r\n\t\t\t\t\t\tthis.hasImg\t\t= false;\r\n\t\t\t\t\t\tthis.hasVideo\t= true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmustDecrypt = true;\r\n\t\t\t\tobsPreview \t= this.fileService.downloadContentFile(detailsFile);\r\n\t\t\t}\r\n\r\n\t\t\tobsPreview.subscribe((res) =>\r\n\t\t\t{\r\n\t\t\t\tconst body = ( res)._body;\r\n\r\n\t\t\t\tif (mustDecrypt === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.fileService.decryptFileWithAES(detailsFile, body, mimetype).then((blobResult) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._displayPreviewFile(blobResult, detailsFile);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis._displayPreviewFile(body, detailsFile);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t * @param blob \r\n\t * @param file \r\n\t */\r\n\tprivate _displayPreviewFile(blob: Blob, file: ExatiqueFile)\r\n\t{\r\n\t\tthis.currentPdfBlob\t\t= blob;\r\n\t\tthis.previewProcessing\t= true;\r\n\t\tthis.percentLoading\t\t= 0;\r\n\r\n\t\tif (blob)\r\n\t\t{\r\n\t\t\tthis.contentLoaded\t= true;\r\n\t\t\tconst urlCreator\t= this.workspaceData.urlCreator;\r\n\r\n\t\t\tconst datasNotification: any =\r\n\t\t\t\t{\r\n\t\t\t\t\taction: 'read',\r\n\t\t\t\t\tname:\tfile.name,\r\n\t\t\t\t\tuser:\tthis.userData.mail\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.messagesService.sendMessage('preview', this.currentFile.id, 'H', datasNotification);\r\n\r\n\t\t\tif (this.hasImg || this.hasVideo)\r\n\t\t\t{\r\n\t\t\t\tthis.objSrc\t= this.sanitizer.bypassSecurityTrustResourceUrl(urlCreator.createObjectURL(blob));\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.objSrc\t\t\t\t\t\t= urlCreator.createObjectURL(blob);\r\n\t\t\t\tthis.canDownloadGeneratedFile\t= true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _getMimeType(extension: string)\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\tswitch (extension)\r\n\t\t{\r\n\t\t\tcase 'jpg':\r\n\t\t\t\toReturn = 'image/jpeg';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'zip':\r\n\t\t\t\toReturn = 'application/zip';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\toReturn = 'application/octet-stream';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n}\r\n","
\r\n\r\n \r\n\t\t\r\n\t\r\n\t
\r\n\r\n\t\r\n\t\t\r\n\t\r\n\r\n\t
\r\n\t
\r\n\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t {{ 'processEditor.stepTitle' | translate }} \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t {{ 'processEditor.validType' | translate }} \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ typevalid.label }}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t {{ 'processEditor.read' | translate }} \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t {{ 'processEditor.write' | translate }} \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t {{ 'processEditor.new' | translate }} \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\tSupprimer\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t
\r\n\t
\r\n\r\n
\r\n","import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { DataSource }\t from '@angular/cdk/collections';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport interface Etape\r\n{\r\n\tid:\t\t\t\t\tnumber;\r\n\tname:\t\t\t\tstring;\r\n\tposition:\t\t\tnumber;\r\n\ttypevalid:\t\t\tstring;\r\n\tread:\t\t\t\tboolean;\r\n\twrite:\t\t\t\tboolean;\r\n\tnews:\t\t\t\tboolean;\r\n}\r\n\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class EtapeDataSource extends DataSource\r\n{\r\n public objProcess: any;\r\n\r\n\tconstructor(objProcess: any)\r\n\t{\r\n\t\tsuper();\r\n this.objProcess = objProcess;\r\n\t}\r\n\r\n\r\n\t/** Connect function called by the table to retrieve one stream containing the data to render. */\r\n\tconnect(): Observable\r\n\t{\r\n\t\treturn Observable.of(this.objProcess.steps);\r\n\t}\r\n\r\n\tdisconnect() { }\r\n}\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'process-editor',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./processEditor.component.scss'],\r\n\ttemplateUrl:\t'processEditor.component.html'\r\n})\r\n\r\n\r\nexport class ProcessEditorComponent implements OnInit\r\n{\r\n @Input() readOnly: any;\r\n\r\n public isReadOnly:\t\tboolean = true;\r\n public currentScenario: any;\r\n\r\n public cptStep:\t\t\t\tany;\r\n public etapesDatas:\t\t\tEtape[]\t\t\t= [];\r\n public etapesProcess:\t\tEtapeDataSource;\r\n public displayedColumns:\tany;\r\n\r\n\r\n\tpublic typesValidation =\r\n\t[\r\n\t\t{\r\n\t\t\tlabel: 'Administrateur',\r\n\t\t\tvalue: 'superviseur'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Normale',\r\n\t\t\tvalue: 'normale'\r\n\t\t}\r\n\t];\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor()\r\n {\r\n\t\tthis.cptStep = 0;\r\n //this.currentScenario.steps = this.etapesDatas;\r\n\t\t//this.etapesProcess = new EtapeDataSource(this.currentScenario);\r\n\t}\r\n\r\n\r\n\t@Input()\r\n\tset scenario(scenario: any)\r\n\t{\r\n\t\tif (scenario)\r\n\t\t{\r\n\t\t\tthis.currentScenario = scenario;\r\n\t\t\tthis.initExistingSteps();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tngOnInit()\r\n\t{\r\n\t\tif (this.readOnly === 'false' || this.readOnly === false)\r\n\t\t{\r\n\t\t\tthis.isReadOnly\t\t\t= false;\r\n\t\t\tthis.displayedColumns\t= ['name', 'typevalid', 'read', 'write', 'news', 'actions'];\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.isReadOnly\t\t\t= true;\r\n\t\t\tthis.displayedColumns\t= ['name', 'typevalid', 'read', 'write', 'news'];\r\n\t\t}\r\n\r\n\t\tif (this.currentScenario)\r\n\t\t{\r\n\t\t\tif (this.currentScenario.steps && this.currentScenario.steps.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.initExistingSteps();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic initExistingSteps()\r\n\t{\r\n\t\tthis.cptStep\t\t\t\t= 0;\r\n\t\tlet formatedSteps: Etape[]\t= [];\r\n\r\n\t\tfor (let step of this.currentScenario.steps)\r\n\t\t{\r\n\t\t\tlet newEtape: Etape =\r\n\t\t\t\t{\r\n\t\t\t\t\tid:\t\t\t\t\t\tthis.cptStep,\r\n\t\t\t\t\tname:\t\t\t\t\tstep.name,\r\n\t\t\t\t\tposition:\t\t\t\tthis.cptStep + 1,\r\n\t\t\t\t\ttypevalid:\t\t\t\tstep.typevalid,\r\n\t\t\t\t\tread:\t\t\t\t\tstep.read\t\t\t\t? step.read : false,\r\n\t\t\t\t\twrite:\t\t\t\t\tstep.write\t\t\t\t? step.write : false,\r\n\t\t\t\t\tnews:\t\t\t\t\tstep.news\t\t\t\t? step.news : false\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.cptStep++;\r\n\r\n\t\t\tformatedSteps.push(newEtape);\r\n }\r\n\r\n this.currentScenario.steps\t= formatedSteps;\r\n this.etapesProcess\t\t\t= new EtapeDataSource(this.currentScenario);\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public createNewStep()\r\n\t{\r\n\t\tif (this.cptStep < 7)\r\n\t\t{\r\n\t\t\tlet newEtape: Etape =\r\n\t\t\t\t{\r\n\t\t\t\t\tid:\t\t\t\t\tthis.cptStep,\r\n\t\t\t\t\tname:\t\t\t\t'',\r\n\t\t\t\t\tposition:\t\t\tthis.currentScenario.steps.length + 1,\r\n\t\t\t\t\ttypevalid:\t\t\t'superviseur',\r\n\t\t\t\t\tread:\t\t\t\tfalse,\r\n\t\t\t\t\twrite:\t\t\t\tfalse,\r\n\t\t\t\t\tnews:\t\t\t\tfalse\r\n\t\t\t\t};\r\n\t\t\tthis.cptStep++;\r\n\r\n\t\t\tthis.currentScenario.steps.push(newEtape);\r\n\r\n\t\t\tthis.etapesProcess = new EtapeDataSource(this.currentScenario);\r\n\t\t}\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param idStep\r\n\t */\r\n public removeStep(idStep: number)\r\n {\r\n this.currentScenario.steps\t= _.filter(this.currentScenario.steps, (step: any) => { return step.id !== idStep; });\r\n this.etapesProcess\t\t\t= new EtapeDataSource(this.currentScenario);\r\n }\r\n}\r\n","/**\r\n * \r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum OrderType \r\n{\r\n ASC\t\t= 0,\r\n DESC\t= 1\r\n}\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class Filter\r\n{\r\n constructor(\r\n private _id: string,\r\n private _name: string,\r\n private _default: boolean,\r\n private _groupsFilter: any[]\r\n ){ }\r\n\r\n\r\n get id() { return this._id; }\r\n get name() { return this._name; }\r\n get default() { return this._default; }\r\n get groupsFilter()\t{ return this._groupsFilter; }\r\n\r\n set id(id) { this._id = id; }\r\n set name(name) { this._name = name; }\r\n set default(defaultVal) { this._default = defaultVal; }\r\n set groupsFilter(groupsFilter) { this._groupsFilter = groupsFilter; }\r\n}\r\n","
\r\n\t
Trier par:
\r\n\t
\r\n
","import { Component } from '@angular/core';\r\nimport { Filter } from './classes/filter.class';\r\nimport { SearchBarService } from '../services/search-bar.service';\r\n\r\n\r\n@Component(\r\n {\r\n templateUrl: 'popover-search-filter.html',\r\n })\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class PopoverSearchFilter\r\n{\r\n\r\n public filterChosen: any;\r\n public filters: Filter[];\r\n public searchBarService: SearchBarService;\r\n\r\n\r\n /**\r\n * Creates an instance of PopoverSearchFilter.\r\n * \r\n * @param {ViewController} viewCtrl\r\n * \r\n * @memberOf PopoverSearchFilter\r\n */\r\n constructor() \r\n {\r\n\r\n }\r\n\r\n\r\n /**\r\n * \r\n * @param {any} value\r\n * \r\n * @memberOf PopoverSearchFilter\r\n */\r\n public changeValueFilter(value: any) \r\n {\r\n this.filterChosen = value;\r\n this.searchBarService.setFilterSelected(value);\r\n this.searchBarService.applyFilterAndEmit();\r\n }\r\n\r\n\r\n /**\r\n * @memberOf PopoverSearchFilter\r\n */\r\n public close() \r\n {\r\n// this.viewCtrl.dismiss();\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n
\r\n","import { Component, Input, Output, EventEmitter, OnInit, ViewEncapsulation }\tfrom '@angular/core';\r\nimport { SearchBarService }\t\tfrom './services/search-bar.service';\r\n\r\n\r\n@Component(\r\n\t{\r\n\t\tselector:\t\t'cumstom-search-bar',\r\n\t\tencapsulation:\tViewEncapsulation.None,\r\n\t\ttemplateUrl:\t'./search-bar.component.html',\r\n\t\tstyleUrls:\t\t['./search-bar.component.scss']\r\n\t})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class SearchBar implements OnInit\r\n{\r\n\r\n @Input('datas') jsonDatas: any;\r\n @Input('properties') tabProperties: any;\r\n @Input('filters') filters: any;\r\n @Input('separator-search') separatorSearch: any;\r\n @Input('select-filter') selectFilter: any;\r\n @Output('datasReturned') eventDatasReturn\t= new EventEmitter();\r\n\r\n searchText: string = '';\r\n\r\n\r\n /**\r\n * Creates an instance of SearchBar.\r\n *\r\n * @param {PopoverController} popoverCtrl\r\n * @param {SearchBarService} searchBarService\r\n *\r\n * @memberOf SearchBar\r\n */\r\n// constructor(public popoverCtrl: PopoverController, private searchBarService: SearchBarService)\r\n constructor(private searchBarService: SearchBarService)\r\n {\r\n\t}\r\n\r\n\r\n /**\r\n *\r\n * @memberOf SearchBar\r\n */\r\n public ngOnInit()\r\n {\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n this.searchBarService.setEventEmiter(this.eventDatasReturn);\r\n this.searchBarService.setDatasToManage(this.jsonDatas, this.tabProperties, this.filters, this.separatorSearch);\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param {any} myEvent\r\n *\r\n * @memberOf SearchBar\r\n */\r\n\tpublic presentFilter(myEvent: any)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n /**\r\n *\r\n *\r\n * @memberOf SearchBar\r\n * */\r\n public updateItems()\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let currentSearchText = this.searchText.toLowerCase();\r\n this.searchBarService.updateAvailableItems(currentSearchText);\r\n }\r\n\r\n}\r\n","import { CommonModule }\t\t\t\t\t\t\tfrom '@angular/common';\r\nimport { NgModule, ApplicationRef }\t\t\t\tfrom '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule }\tfrom '@angular/forms';\r\nimport { SearchBar }\t\t\t\t\t\t\tfrom './search-bar.component';\r\nimport { SearchBarService }\t\t\t\t\t\tfrom './services/search-bar.service';\r\nimport { PopoverSearchFilter }\t\t\t\t\tfrom './popover-search-filter/popover-search-filter.component';\r\n\r\n\r\n@NgModule({\r\n\timports:\r\n\t[\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule\r\n\t],\r\n\tdeclarations:\t\t[SearchBar, PopoverSearchFilter],\r\n\tentryComponents:\t[SearchBar, PopoverSearchFilter],\r\n\tproviders:\t\t\t[SearchBarService],\r\n\texports:\t\t\t[SearchBar]\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class SearchBarModule\r\n{\r\n\r\n\tconstructor()\r\n\t{\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { OrderType } from '../popover-search-filter/classes/filter.class';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable()\r\n\r\n\r\nexport class SearchBarService\r\n{\r\n\r\n\tpublic allItemsJson:\t\t\tstring;\r\n\tpublic itemsSelectedJson:\t\tstring;\r\n\tpublic tagsItems:\t\t\t\tany[];\r\n\tpublic tabProperties:\t\t\tany[]\t= [];\r\n\tpublic tabPropertiesSelected:\tany[]\t= [];\r\n\tpublic filters:\t\t\t\t\tany[];\r\n\tpublic filterSelected:\t\t\tany;\r\n\tpublic separatorSearch:\t\t\tstring;\r\n\tpublic currentLevelData:\t\tnumber;\r\n\tpublic eventEmitter:\t\t\tany;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor()\r\n {\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public setDatasToManage(allItemsJson: any, tagsItems: any, filters: any, separatorSearch = ':')\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tthis.allItemsJson\t\t= allItemsJson;\r\n\t\tthis.tagsItems\t\t\t= tagsItems;\r\n\t\tthis.filters\t\t\t= filters;\r\n\t\tthis.separatorSearch\t= separatorSearch;\r\n\r\n\t\tthis.filterSelected = _.where(this.filters, { default: true });\r\n\t\tthis.filterSelected = this.filterSelected.length > 0 ? this.filterSelected[ 0 ] : undefined;\r\n\r\n\t\tthis.tagsItems = _.reject(this.tagsItems, function (item: any) { return !item.tagName || !item.paths || item.paths.length === 0; });\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tfor (let i = 0; i < this.tagsItems.length; i++)\r\n\t\t{\r\n\t\t\tthis.tagsItems[i].currentPathIndex = [];\r\n\t\t\tfor (let j = 0; j < this.tagsItems[i].paths.length; j++)\r\n\t\t\t{\r\n\t\t\t\tthis.tagsItems[i].currentPathIndex.push(0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tthis.parseJsonDatas();\r\n\t\tthis.applyFilterAndEmit();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public setEventEmiter(eventEmiter: any)\r\n {\r\n this.eventEmitter = eventEmiter;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate parseJsonDatas()\r\n\t{\r\n\t\tthis.tabProperties\t\t\t= [];\r\n\t\tthis.tabPropertiesSelected\t= [];\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Si l'ensemble des données à traiter est renseigné, alors on les convertis en structure JSON\r\n\t\t// ---------------------------------------\r\n\t\tif (this.allItemsJson)\r\n\t\t{\r\n\t\t\tlet jsonObjDatas = JSON.parse(this.allItemsJson);\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Les données en entrée doivent être rangées dans un tableau\r\n\t\t\t// ---------------------------------------\r\n\t\t\tif (jsonObjDatas instanceof Array)\r\n\t\t\t{\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// Pour chaque ensemble de données on créé une structure contenant le JSON d'origine\r\n\t\t\t\t// et les données mappées.\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tfor (let data of jsonObjDatas)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet propertiesObj =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trowJson:\tdata,\r\n\t\t\t\t\t\tproperties: this.parseDataRow(data)\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tthis.tabProperties.push(propertiesObj);\r\n\t\t\t\t\tthis.tabPropertiesSelected.push(propertiesObj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate parseDataRow(data: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// On affecte dans un tableau l'ensemble des tags avec leur chemins respectif\r\n\t\t// ---------------------------------------\r\n\t\tlet rowProperties = [];\r\n\t\tfor (let property of this.tagsItems)\r\n\t\t{\r\n\t\t\trowProperties.push(Object.assign({}, property));\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tthis.currentLevelData\t= 0;\r\n\t\trowProperties\t\t\t= this.handleDataRowElement(data, rowProperties);\r\n\r\n\t\treturn rowProperties;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate handleDataRowElement(data: any, rowProperties: any)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet rowPropertiesResult = rowProperties;\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (data instanceof Array)\r\n\t\t{\r\n\t\t\tfor (let subData of data)\r\n\t\t\t{\r\n\t\t\t\trowPropertiesResult = this.handleDataRowElement(subData, rowPropertiesResult);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (data !== undefined && data !== null)\r\n\t\t\t{\r\n\t\t\t\tlet keys = Object.keys(data);\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tfor (let key of keys)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (typeof data[key] !== 'object')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet indexProperty = _.findIndex(rowPropertiesResult, function (property: any)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn property['property'] === key;\r\n\t\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tif (indexProperty !== -1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (rowPropertiesResult[indexProperty].values)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet valToInclude = data[key].toString().toLowerCase();\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tif (rowPropertiesResult[indexProperty].values.includes(valToInclude) === false)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\trowPropertiesResult[indexProperty].values.push(valToInclude);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\trowPropertiesResult[indexProperty].values = [data[key].toString().toLowerCase()];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trowPropertiesResult.push({property: key, values: [data[key].toString().toLowerCase()]});\r\n\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tfor (let i = 0; i < rowPropertiesResult.length; i++)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (rowPropertiesResult[i].paths)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfor (let j = 0; j < rowPropertiesResult[i].paths.length; j++)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (this.currentLevelData === rowPropertiesResult[i].currentPathIndex[j]\r\n\t\t\t\t\t\t\t\t\t\t&& rowPropertiesResult[i].paths[j].length - 1 === rowPropertiesResult[i].currentPathIndex[j]\r\n\t\t\t\t\t\t\t\t\t\t&& rowPropertiesResult[i].paths[j][rowPropertiesResult[i].currentPathIndex[j]] === key)\r\n\t\t\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t\t\tif (rowPropertiesResult[i].values)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlet valToInclude = data[key].toString().toLowerCase();\r\n\t\t\t\t\t\t\t\t\t\t\tif (rowPropertiesResult[i].values.includes(valToInclude) === false)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\trowPropertiesResult[i].values.push(valToInclude);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\trowPropertiesResult[i].values = [data[key].toString().toLowerCase()];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tfor (let i = 0; i < rowPropertiesResult.length; i++)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (rowPropertiesResult[i].paths)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\tfor (let j = 0; j < rowPropertiesResult[i].paths.length; j++)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (this.currentLevelData === rowPropertiesResult[i].currentPathIndex[j]\r\n\t\t\t\t\t\t\t\t\t\t&& rowPropertiesResult[i].paths[j].length - 1 > rowPropertiesResult[i].currentPathIndex[j]\r\n\t\t\t\t\t\t\t\t\t\t&& rowPropertiesResult[i].paths[j][rowPropertiesResult[i].currentPathIndex[j]] === key)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\trowPropertiesResult[i].currentPathIndex[j] = rowPropertiesResult[i].currentPathIndex[j] + 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tthis.currentLevelData++;\r\n\t\t\t\t\t\trowPropertiesResult = this.handleDataRowElement(data[key], rowPropertiesResult);\r\n\t\t\t\t\t\tthis.currentLevelData--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rowPropertiesResult;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic updateAvailableItems(currentSearch: any)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tthis.itemsSelectedJson\t= '';\r\n\t\tlet resultSearch\t\t= [];\r\n\r\n\t\tthis.itemsSelectedJson\t\t= this.allItemsJson;\r\n\t\tthis.tabPropertiesSelected\t= this.tabProperties;\r\n\r\n\t\tlet propertySelected =\r\n\t\t{\r\n\t\t\tkey: '',\r\n\t\t\tvalues: ['']\r\n\t\t};\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (currentSearch.length > 0)\r\n\t\t{\r\n\t\t\tif (currentSearch.charAt(0) === '#')\r\n\t\t\t{\r\n\t\t\t\tlet indexEndKeyWord = currentSearch.indexOf(this.separatorSearch);\r\n\t\t\t\tif (indexEndKeyWord !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet keyWord = currentSearch.substring(1, indexEndKeyWord);\r\n\t\t\t\t\tlet value \t= currentSearch.substring(indexEndKeyWord + 1);\r\n\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tif (value)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresultSearch = _.filter(this.tabProperties, function (propertyObj: any)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet resultFilter = _.filter(propertyObj.properties, function (property: any)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet result = false;\r\n\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\tif (property['tagName'] === keyWord && property['values'])\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tpropertySelected.key = property['tagName'];\r\n\r\n\t\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t\tfor (let i = 0; i < property['values'].length; i++)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (property['values'][i].indexOf(value) !== -1)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tif (!_.contains(propertySelected.values, property['values'][i]))\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tpropertySelected.values.push(property['values'][i]);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tresult = true;\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\treturn resultFilter.length > 0;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tresultSearch = _.filter(this.tabProperties, function (propertyObj: any)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet resultFilter = _.filter(propertyObj.properties, function (property: any)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet result = false;\r\n\r\n\t\t\t\t\t\tif (property['tagName'] === 'default' && property['values'])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpropertySelected.key = property['tagName'];\r\n\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\tfor (let i = 0; i < property['values'].length; i++)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (property['values'][i].indexOf(currentSearch) !== -1)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (!_.contains(propertySelected.values, property['values'][i]))\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpropertySelected.values.push(property['values'][i]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tresult = true;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\treturn resultFilter.length > 0;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.tabPropertiesSelected = [];\r\n\t\t\tfor (let i = 0; i < resultSearch.length; i++)\r\n\t\t\t{\r\n\t\t\t\tthis.tabPropertiesSelected.push(resultSearch[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tthis.applyFilterAndEmit(this.filterSelected, propertySelected, currentSearch);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getitemSelectedJson()\r\n\t{\r\n\t\treturn this.itemsSelectedJson;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic setFilterSelected(filter: any)\r\n\t{\r\n\t\tthis.filterSelected = filter;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getFilterSelected()\r\n\t{\r\n\t\treturn this.filterSelected;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getFilters()\r\n\t{\r\n\t\treturn this.filters;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic applyFilter(filter = this.filterSelected)\r\n\t{\r\n\r\n\t\tif (filter)\r\n\t\t{\r\n\t\t\t// ok ...\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic applyFilterAndEmit(filter = this.filterSelected, propertySelected: any = undefined, searchText: string = '')\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (filter)\r\n\t\t{\r\n\t\t\tlet itemsFilterArray: any = [];\r\n\t\t\tlet groupsToSort = [_.extend([], this.tabPropertiesSelected)];\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tfor (let i = 0; i < filter.groupsFilter.length; i++)\r\n\t\t\t{\r\n\t\t\t\tlet newGroupsToSort: any = [];\r\n\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tfor (let j = 0; j < groupsToSort.length; j++)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet resultFilter;\r\n\t\t\t\t\tlet resultGroupBy;\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tresultFilter = _.sortBy(groupsToSort[j], (properties: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet result\t\t\t= null;\r\n\t\t\t\t\t\tlet propertyToSort\t= _.find(properties['properties'], (property: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn property['tagName'] === filter.groupsFilter[i].name || property['property'] === filter.groupsFilter[i].name;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (propertyToSort)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet valuesSorted\t= filter.groupsFilter[i].order === OrderType.ASC ? propertyToSort['values'].sort() : propertyToSort['values'].sort().reverse();\r\n\t\t\t\t\t\t\tresult\t\t\t\t= valuesSorted[0];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tresultFilter\t= filter.groupsFilter[i].order === OrderType.ASC ? resultFilter : resultFilter.reverse();\r\n\t\t\t\t\tresultGroupBy\t= _.groupBy(resultFilter, (properties: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet result\t\t\t= null;\r\n\t\t\t\t\t\tlet propertyToSort\t= _.find(properties['properties'], (property: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn property['tagName'] === filter.groupsFilter[i].name || property['property'] === filter.groupsFilter[i].name;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (propertyToSort)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresult = propertyToSort['values'][0];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t_.map(resultGroupBy, function (group: any) { newGroupsToSort.push(group); });\r\n\t\t\t\t}\r\n\t\t\t\tgroupsToSort = newGroupsToSort;\r\n\t\t\t}\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tfor (let i = 0; i < groupsToSort.length; i++)\r\n\t\t\t{\r\n\t\t\t\titemsFilterArray = itemsFilterArray.concat(groupsToSort[i].map(function (property: any)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn property.rowJson;\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.eventEmitter.emit(\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue:\t\tJSON.stringify(itemsFilterArray),\r\n\t\t\t\t\tproperty:\tJSON.stringify(propertySelected),\r\n\t\t\t\t\ttextSearch: searchText\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
{{ 'confirmDeleteElement.title' | translate }}
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n\t
\r\n \r\n\t\t\r\n\t
\r\n
\r\n","\r\nimport { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t from '@angular/material';\r\nimport { MAT_DIALOG_DATA } from '@angular/material';\r\n\r\nimport { Etablissement }\t\tfrom '../../classes/etablissement.class';\r\nimport { Session }\t\t\t\tfrom '../../classes/session.class';\r\nimport { Examen }\t\t\t\tfrom '../../classes/examen.class';\r\nimport { Matiere }\t\t\t\tfrom '../../classes/matiere.class';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'warning-delete-element-modal',\r\n\ttemplateUrl:\t'confirmDeleteElementModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./confirmDeleteElementModal.component.scss']\r\n})\r\n\r\n\r\nexport class ConfirmDeleteElementModalComponent\r\n{\r\n public\ttype:\t\tany;\r\n public\telement:\tany;\r\n\r\n constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any)\r\n {\r\n if (data && data.element)\r\n {\r\n this.element = data.element;\r\n\r\n if (data.element instanceof Etablissement)\r\n\t\t\t{\r\n\t\t\t\tthis.type = 'Classeur';\r\n\t\t\t}\r\n\r\n\t\t\tif (data.element instanceof Session)\r\n\t\t\t{\r\n\t\t\t\tthis.type = 'Session';\r\n\t\t\t}\r\n\r\n if (data.element instanceof Examen)\r\n\t\t\t{\r\n this.type = 'Examen';\r\n\t\t\t}\r\n\r\n if (data.element instanceof Matiere)\r\n\t\t\t{\r\n this.type = 'Matiere';\r\n\t\t\t}\r\n }\r\n }\r\n\r\n\r\n /**\r\n * \r\n */\r\n public cancel()\r\n {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n\r\n /**\r\n * \r\n */\r\n public validate()\r\n {\r\n this.dialogRef.close(true);\r\n }\r\n}\r\n","\r\n\t
\r\n\t\t
{{ 'confirmDeleteUserModal.title' | translate }}
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n\t
\r\n \r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t from '@angular/material';\r\nimport { MAT_DIALOG_DATA } from '@angular/material';\r\n\r\n@Component({\r\n\tselector:\t\t'confirm-delete-user-modal',\r\n\ttemplateUrl:\t'confirmDeleteUserModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./confirmDeleteUserModal.component.scss']\r\n})\r\n\r\n\r\nexport class ConfirmDeleteUserModalComponent\r\n{\r\n\tpublic currentUser:\tany;\r\n\r\n\r\n\tconstructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tif (data && data.user)\r\n\t\t{\r\n\t\t\tthis.currentUser = data.user;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic cancel()\r\n {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public validate()\r\n {\r\n this.dialogRef.close(true);\r\n }\r\n}\r\n","\r\n\t
\r\n\t\t
{{ 'confirmGiveFiles.title' | translate }}
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\r\n\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t
\r\n\r\n
\r\n\t
\r\n \r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject, OnInit, OnDestroy }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t from '@angular/material';\r\nimport { MAT_DIALOG_DATA } from '@angular/material';\r\n\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\nimport { UserService } from '../../services/user.service';\r\nimport { EncryptService }\tfrom '../../services/encrypt.service';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n@Component({\r\n\tselector:\t\t'confirm-give-files-keys-modal',\r\n\ttemplateUrl:\t'confirmGiveFilesKeysModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./confirmGiveFilesKeysModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class ConfirmGiveFilesKeysModalComponent implements OnInit, OnDestroy\r\n{\r\n\r\n\tpublic nameUser:\t\t\t\tany;\r\n\tpublic mailUser:\t\t\t\tany;\r\n\tpublic rsaKeyUser:\t\t\t\tany;\r\n\tpublic moGlobalSubscription:\tany;\r\n\r\n\tpublic processing:\t\t\tboolean = false;\r\n\tpublic processPercent:\t\tnumber = 0;\r\n\tpublic processFinished:\t\tboolean = false;\r\n\r\n\tpublic aesKeysQueue:\t\tany[] = [];\r\n\tpublic cptEasKeysToSend:\tnumber = 0;\r\n\r\n\tconstructor(public dialogRef:\t\tMatDialogRef,\r\n\t\t\t\tpublic userData:\t\tUserData,\r\n\t\t\t\tpublic userService:\t\tUserService,\r\n\t\t\t\tpublic encryptService:\tEncryptService,\r\n\t\t\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tif (data && data.user && data.user.completeName && data.user.publics && data.user.publics.rsaPublicKey) \r\n {\r\n\t\t\tthis.nameUser\t= data.user.completeName;\r\n\t\t\tthis.mailUser\t= data.user.mail;\r\n\t\t\tthis.rsaKeyUser = data.user.publics.rsaPublicKey;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.moGlobalSubscription = this.userData.globalEmitter.subscribe((value: any) =>\r\n\t\t{\r\n if (value.length && value.length > 1 && value[0] === 'getAesKeysFromUser')\r\n\t\t\t{\r\n\t\t\t\tconst aesKeys = value[1];\r\n\r\n\t\t\t\tfor (const aesKey of aesKeys)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.aesKeysQueue.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey:\t\taesKey.key,\r\n\t\t\t\t\t\t\tval:\t\taesKey.val,\r\n\t\t\t\t\t\t\tvalDecoded: undefined,\r\n\t\t\t\t\t\t\tvalEncoded: undefined,\r\n\t\t\t\t\t\t\twho:\t\tthis.mailUser\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.cptEasKeysToSend = this.aesKeysQueue.length;\r\n\r\n\t\t\t\tconst keysError: any[] = [];\r\n\r\n\t\t\t\tfor (const aesKeyQueue of this.aesKeysQueue)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Pour chaque clé AES on décode la clé avec la clé RSA de l'utilisateur courant\r\n\t\t\t\t\tconst rsaKey = this.userData.getRSAPrivate();\r\n\r\n\t\t\t\t\tthis.encryptService.decryptData(aesKeyQueue.val, rsaKey).then((decoded: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taesKeyQueue.valDecoded = decoded;\r\n\r\n\t\t\t\t\t\t// On réencrypte la clé avec la clé RSA publique de l'utilisateur concerné\r\n\t\t\t\t\t\tthis.encryptService.encryptData(decoded, this.rsaKeyUser).then((encryptedAes: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taesKeyQueue.valEncoded = encryptedAes;\r\n\t\t\t\t\t\t\tthis.encryptService.sendAesKey(this.mailUser, aesKeyQueue.key, aesKeyQueue.valEncoded, new Date());\r\n\r\n\t\t\t\t\t\t}).catch((err: any) => \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkeysError.push(aesKeyQueue.key);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}).catch((err: any) => \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tkeysError.push(aesKeyQueue.key);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.aesKeysQueue = _.filter(this.aesKeysQueue, (aesKey: any) => keysError.includes(aesKey.key) === false);\r\n\t\t\t}\r\n\r\n\t\t\tif (value.length && value.length > 1 && value[0] === 'userFileKey')\r\n\t\t\t{\r\n\t\t\t\tthis.aesKeysQueue = _.filter(this.aesKeysQueue, (aesKey: any) => aesKey.key !== value[1]);\r\n\r\n\t\t\t\t// On met à jour le pourcentage d'avancement\r\n\t\t\t\tthis.processPercent = Math.floor(((this.cptEasKeysToSend - this.aesKeysQueue.length) / this.cptEasKeysToSend) * 100);\r\n\t\t\t\tif (this.aesKeysQueue.length === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.processFinished = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnDestroy()\r\n\t{\r\n\t\tif (this.moGlobalSubscription) \r\n\t\t{\r\n\t\t\tthis.moGlobalSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic close()\r\n\t{\r\n\t\tthis.dialogRef.close(true);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic validate()\r\n\t{\r\n\t\tthis.processing = true;\r\n\t\tthis.userService.getAesKeysFromUser(this.userData.mail);\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
{{ 'confirmResetRsa.title' | translate }}
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n
\r\n\t
\r\n \r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t from '@angular/material';\r\nimport { MAT_DIALOG_DATA } from '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'confirm-reset-rsa-modal',\r\n\ttemplateUrl:\t'confirmResetRsaModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./confirmResetRsaModal.component.scss']\r\n})\r\n\r\n\r\nexport class ConfirmResetRsaModalComponent\r\n{\r\n\tpublic nameUser: any;\r\n\r\n\r\n\tconstructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tif (data && data.user && data.user.completeName)\r\n {\r\n\t\t\tthis.nameUser = data.user.completeName;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\tpublic validate()\r\n\t{\r\n\t\tthis.dialogRef.close(true);\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\t{{ 'connectApplication.title' | translate }}\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\tfrom '@angular/material';\r\n\r\nimport { SocketService }\tfrom '../../services/socket.service';\r\nimport { AuthService }\t\tfrom '../../services/auth.service';\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\nimport { SCClientSocket }\tfrom 'socketcluster-client';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'connect-application-modal',\r\n\ttemplateUrl:\t'connectApplication.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./connectApplication.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class ConnectApplicationModalComponent\r\n{\r\n public username: string;\r\n public password: string;\r\n\r\n public pending\t\t\t\t= false;\r\n\tpublic isSocketUnavailable\t= false;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n constructor(public dialogRef:\t\tMatDialogRef,\r\n public socketService:\tSocketService,\r\n public authService:\t\tAuthService,\r\n public userData:\t\tUserData)\r\n {\r\n\t\tthis.username = this.userData.getUserId();\r\n\t\tthis.socketService.on('authenticate', this.authChange.bind(this));\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public canValidLogin()\r\n {\r\n return this.pending === false && this.username && this.password;\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public login()\r\n {\r\n this.pending\t= true;\r\n let fingerprint = this.userData.getFingerPrint();\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t{\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tif (!socket || !socket.state || socket.state !== SCClientSocket.OPEN)\r\n\t\t\t{\r\n\t\t\t\tthis.isSocketUnavailable\t= true;\r\n\t\t\t\tthis.pending\t\t\t\t= false;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.isSocketUnavailable = false;\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tlet credentials =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tusername:\t\tthis.username,\r\n\t\t\t\t\t\tpassword:\t\tthis.password,\r\n\t\t\t\t\t\tfingerprint:\tfingerprint\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tsocket.emit('login', credentials);\r\n\t\t\t\tthis.pending = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Handle keypress event, for sending chat message\r\n\t */\r\n\tpublic eventHandler(event: KeyboardEvent): void\r\n\t{\r\n\t\tif (event.key === \"Enter\")\r\n\t\t{\r\n\t\t\tthis.login();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param datas \r\n\t */\r\n\tpublic authChange(datas: any)\r\n\t{\r\n\t\tif (datas)\r\n\t\t{\r\n\t\t\tthis.dialogRef.close(true);\r\n\t\t}\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\tValidation nouvelle machine\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t Erreur: le code saisie est incorrect \r\n\t\t\t Nouveau code envoyé par mail \r\n\t\t\t
\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject, OnInit, OnDestroy }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA } from '@angular/material';\r\nimport { UserService }\t\t\t\t\tfrom '../../services/user.service';\r\nimport { UserData }\t\t\t\t\t from '../../providers/user-data';\r\n\r\n@Component({\r\n\tselector:\t\t'connect-new-machine-modal',\r\n\ttemplateUrl:\t'connectNewMachineModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./connectNewMachineModal.component.scss']\r\n})\r\nexport class ConnectNewMachineModalComponent implements OnInit, OnDestroy\r\n{\r\n\r\n public code:\t\t\t\tany;\r\n public displayErrorCode:\tboolean = false;\r\n public fingerPrint:\t\t\tany;\r\n\r\n\tpublic moUpdateSubscription:\tany;\r\n\tpublic displayInvalidCodeError: boolean = false;\r\n\tpublic displayNewCodeGenerared: boolean = false;\r\n\r\n constructor(public dialogRef:\tMatDialogRef,\r\n public userService: UserService,\r\n public userData:\tUserData,\r\n @Inject(MAT_DIALOG_DATA) public data: any)\r\n {\r\n this.fingerPrint = data.fingerprint;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public ngOnInit()\r\n\t{\r\n this.moUpdateSubscription = this.userData.globalEmitter.subscribe((value: any) =>\r\n\t\t{\r\n if (value === 'FP::machineValidated')\r\n\t\t\t{\r\n\t\t\t\tthis.displayInvalidCodeError = false;\r\n this.dialogRef.close(true);\r\n\t\t\t}\r\n\r\n\t\t\tif (value === 'FP::machineUnvalidated')\r\n\t\t\t{\r\n\t\t\t\tthis.displayInvalidCodeError = true;\r\n\t\t\t\tthis.displayNewCodeGenerared = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (value === 'machineCode:new')\r\n\t\t\t{\r\n\t\t\t\tthis.displayInvalidCodeError = false;\r\n\t\t\t\tthis.displayNewCodeGenerared = true;\r\n\t\t\t}\r\n });\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public ngOnDestroy()\r\n\t{\r\n\t\tthis.moUpdateSubscription.unsubscribe();\r\n\t}\r\n\r\n\r\n /**\r\n\t * Handle keypress event, for sending chat message\r\n\t */\r\n\tpublic eventHandler(event: KeyboardEvent): void\r\n\t{\r\n\t\tif (event.key === \"Enter\")\r\n\t\t{\r\n\t\t\tthis.validateCode();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public validateCode()\r\n\t{\r\n\t\tthis.displayErrorCode = false;\r\n\t\tthis.userService.checkMachineCode(this.code, this.fingerPrint);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public canValidCheckMachine()\r\n\t{\r\n\t\tlet result = false;\r\n\r\n\t\tif (this.code && this.code.length === 4 && ('1' + this.code === Number('1' + this.code).toString()))\r\n\t\t{\r\n\t\t\tresult = true;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic generateNewMachineCode()\r\n\t{\r\n\t\tthis.userService.regenerateCodeMachine();\r\n\t}\r\n\r\n}\r\n\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\tDouble authentification\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\tfrom '@angular/material';\r\nimport { UserService }\t\t\t\t\tfrom '../../services/user.service';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'connect-otp-modal',\r\n\ttemplateUrl:\t'connectOTPModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./connectOTPModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class ConnectOTPModalComponent\r\n{\r\n\r\n\tpublic otpCode: any;\r\n\tpublic displayErrorOtp: boolean = false;\r\n\r\n\t constructor(public dialogRef: MatDialogRef,\r\n public userService: UserService)\r\n {\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Handle keypress event, for sending chat message\r\n\t */\r\n\tpublic eventHandler(event: KeyboardEvent): void\r\n\t{\r\n\t\tif (event.key === \"Enter\")\r\n\t\t{\r\n\t\t\tthis.checkOTP();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic checkOTP()\r\n\t{\r\n\t\tthis.displayErrorOtp = false;\r\n\r\n\t\tthis.userService.checkUserOTPCode(this.otpCode, (err, data) => \r\n\t\t{\r\n\t\t\tif (data && data.logged === true)\r\n\t\t\t{\r\n\t\t\t\tthis.dialogRef.close(true);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.displayErrorOtp = true;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic canValidCheckOTP()\r\n\t{\r\n\t\treturn this.otpCode && this.otpCode.length === 6;\r\n\t}\r\n\r\n}\r\n\r\n\r\n\r\n","\r\n\t
\r\n\t\t
Nouvelle clé RSA
\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { UserData }\t\t\t\t\t\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData }\t\t\t\t\t\t\t\tfrom '../../providers/workspace-data';\r\n\r\nconst fileSaver = require('file-saver');\r\n\r\n@Component({\r\n\tselector:\t\t'download-rsa-modal',\r\n\ttemplateUrl:\t'downloadRsaModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./downloadRsaModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class DownloadRsaModalComponent\r\n{\r\n\r\n\t/**\r\n\t *\r\n\t * @param dialogRef\r\n\t */\r\n\tconstructor(public dialogRef: MatDialogRef,\r\n\t\t\t\tpublic userData: UserData,\r\n\t\t\t\tpublic workspaceData: WorkspaceData)\r\n\t{\r\n\t}\r\n\r\n\tpublic downloadRsa()\r\n\t{\r\n\t\twindow.URL = this.workspaceData.urlCreator;\r\n\t\tconst key = this.userData.getRSAPrivate();\r\n\r\n\t\tif (key !== undefined)\r\n\t\t{\r\n\t\t\tconst blob: Blob = new Blob([key], { type: 'text/plain' });\r\n\t\t\tfileSaver.saveAs(blob, 'rsaKey.exakey');\r\n\t\t}\r\n\t}\r\n\r\n\tpublic close()\r\n\t{\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\tMot de passe oublié\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n \r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, OnInit, OnDestroy }\tfrom '@angular/core';\r\n\r\nimport { MatDialogRef } from '@angular/material';\r\nimport { UserService }\tfrom '../../services/user.service';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'forget-password-modal',\r\n\ttemplateUrl:\t'forgetPasswordModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./forgetPasswordModal.component.scss']\r\n})\r\n\r\n\r\nexport class ForgetPasswordModalComponent\r\n{\r\n\tpublic usermail:\t\tany;\r\n\tpublic displayError:\tboolean = false;\r\n\r\n\tconstructor(public dialogRef: MatDialogRef,\r\n\t\t\t\tpublic userService: UserService)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic canValidReset()\r\n\t{\r\n\t\tlet result = true;\r\n\r\n\t\tif (!this.usermail || this.usermail === '')\r\n\t\t{\r\n\t\t\tresult = false;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(undefined);\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic sendPasswordReset()\r\n\t{\r\n\t\tthis.displayError = false;\r\n\t\t\r\n\t\tthis.userService.sendPasswordReset(this.usermail).then(res =>\r\n\t\t{\r\n\t\t\tthis.dialogRef.close(this.usermail);\r\n\t\t}).catch(err =>\r\n\t\t{\r\n\t\t\tthis.displayError = true;\r\n\t\t});\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\tConfirmation\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tErreur\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n \r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'infos-forget-password-modal',\r\n\ttemplateUrl:\t'infosForgetPasswordModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./infosForgetPasswordModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class InfosForgetPasswordModalComponent\r\n{\r\n\tpublic usermail: any;\r\n\tpublic type: any;\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param dialogRef \r\n\t * @param data \r\n\t */\r\n\tconstructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tif (this.data && this.data.usermail && this.data.type)\r\n\t\t{\r\n\t\t\tthis.usermail = this.data.usermail;\r\n\t\t\tthis.type = this.data.type;\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic close()\r\n\t{\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
Confirmation réinitialisation clé RSA
\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t
- {{ user.completeName }}
\r\n\t\t\t\r\n\t\t\t
la clé sera automatiquement recréée lors de sa prochaine autenthification.
\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\tfrom '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'info-reset-rsa-modal',\r\n\ttemplateUrl:\t'infoResetRsaModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./infoResetRsaModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class InfoResetRsaModalComponent\r\n{\r\n\tpublic user: any;\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param dialogRef \r\n\t * @param data \r\n\t */\r\n\tconstructor(public dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tif (data)\r\n\t\t{\r\n\t\t\tif (data.user)\r\n\t\t\t{\r\n\t\t\t\tthis.user = data.user;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic validate()\r\n\t{\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
Création du compte
\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'info-init-account-modal',\r\n\ttemplateUrl:\t'infosInitAccountModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./infosInitAccountModal.component.scss']\r\n})\r\n\r\nexport class InfoInitAccountModalComponent\r\n{\r\n\tpublic user: any;\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param dialogRef \r\n\t */\r\n\tconstructor(public dialogRef: MatDialogRef)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic validate()\r\n\t{\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\tRéinitialisation du mot de passe\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n \r\n\t\t
\r\n \r\n\t\t\t\r\n\t\t\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, OnInit, OnDestroy, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef } from '@angular/material';\r\nimport { UserService } from '../../services/user.service';\r\nimport { UserData } from '../../providers/user-data';\r\nimport { MAT_DIALOG_DATA } from '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'reset-password-modal',\r\n\ttemplateUrl:\t'resetPasswordModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./resetPasswordModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class ResetPasswordModalComponent implements OnInit, OnDestroy\r\n{\r\n\tpublic newPassword: any;\r\n\tpublic type:\t\tany;\r\n\tpublic libelle:\t\tany;\r\n\r\n\tpublic resetCode:\tany;\r\n\tpublic mailUser:\tany;\r\n\tpublic compteUser:\tany;\r\n\r\n\tpublic hasError: \t\t\t\tboolean = false;\r\n public moUpdateSubscription:\tany;\r\n\r\n\r\n constructor(public dialogRef:\t\tMatDialogRef,\r\n public userService:\t\tUserService,\r\n\t\t\t\tpublic userData:\t\tUserData,\r\n\t\t\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n {\r\n\t\tif (data && data.type)\r\n\t\t{\r\n\t\t\tthis.type = data.type;\r\n\r\n\t\t\tswitch (this.type)\r\n\t\t\t{\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase 'resetForTemporary':\r\n\t\t\t\t\tthis.libelle = 'Votre mot de passe actuel est un mot de passe temporaire. Veillez en saisir un nouveau:';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase 'resetWithCode':\r\n\t\t\t\t\tthis.libelle = 'Vous avez demandé la réinitialisation de votre mot de passe. Veuillez saisir et confirmer votre nouveau mot de passe:';\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (data.resetCode && data.mailUser && data.compteUser)\r\n\t\t\t{\r\n\t\t\t\tthis.resetCode\t= data.resetCode;\r\n\t\t\t\tthis.mailUser\t= data.mailUser;\r\n\t\t\t\tthis.compteUser = data.compteUser;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\t\r\n\t\r\n\t/**\r\n\t * \r\n\t */\r\n public ngOnInit()\r\n\t{\r\n\r\n this.moUpdateSubscription = this.userData.globalEmitter.subscribe((value: any) =>\r\n\t\t{\r\n if (value === 'user::passwordUpdated')\r\n\t\t\t{\r\n\t\t\t\tthis.dialogRef.close(true);\r\n\t\t\t}\r\n });\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public ngOnDestroy()\r\n\t{\r\n\t\tthis.moUpdateSubscription.unsubscribe();\r\n\t}\r\n\r\n\r\n /**\r\n\t * Handle keypress event, for sending chat message\r\n\t */\r\n\tpublic eventHandler(event: KeyboardEvent): void\r\n\t{\r\n let canValidate = this.canValidPassword();\r\n\r\n\t\tif (event.key === \"Enter\" && canValidate === true)\r\n\t\t{\r\n\t\t\tthis.updatePassword();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tupdatePassword()\r\n\t{\r\n\t\tlet datas: any = {};\r\n\r\n\t\tswitch (this.type)\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'resetForTemporary':\r\n\t\t\t\tdatas =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnewPassword:\t\tthis.newPassword,\r\n\t\t\t\t\t\tneedOldPassword:\tfalse\r\n\t\t\t\t\t};\r\n\t\t\t\tthis.userService.updateUserPassword(datas);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'resetWithCode':\r\n\t\t\t\tthis.hasError = false;\r\n\t\t\t\t\r\n\t\t\t\tif (this.compteUser && this.mailUser && this.resetCode && this.newPassword)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.userService.updatePasswordUserWithCode(this.compteUser, this.mailUser, this.resetCode, this.newPassword).then(res =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.dialogRef.close(true);\r\n\t\t\t\t\t}).catch(error =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.hasError = true;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n cancel()\r\n {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param password \r\n\t */\r\n public handleOnValidPassword(password: any)\r\n {\r\n if (password !== false)\r\n {\r\n this.newPassword = password;\r\n }\r\n else\r\n {\r\n this.newPassword = undefined;\r\n }\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n canValidPassword()\r\n {\r\n let result = false;\r\n\r\n if (this.newPassword)\r\n {\r\n result = true;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\tSélection du compte\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\r\n\t\t\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\tCompte\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{account.name}}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef } from '@angular/material';\r\nimport { MAT_DIALOG_DATA } from '@angular/material';\r\n\r\nimport { UserData }\t\tfrom '../../providers/user-data';\r\nimport { UserService }\tfrom '../../services/user.service';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'select-account-modal',\r\n\ttemplateUrl:\t'selectAccountModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./selectAccountModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class SelectAccountModalComponent\r\n{\r\n\r\n\tpublic accounts: any[] = [];\r\n\tpublic selectedAccount: any;\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param dialogRef \r\n\t * @param userService \r\n\t * @param userData \r\n\t * @param data \r\n\t */\r\n\tconstructor(public dialogRef:\t\tMatDialogRef,\r\n\t\tpublic userService: UserService,\r\n\t\tpublic userData: UserData,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tif (data && data.accounts)\r\n\t\t{\r\n\t\t\tthis.accounts \t\t\t= data.accounts;\r\n\t\t\tthis.selectedAccount \t= this.accounts[0].name;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic cancel()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic validate()\r\n\t{\r\n\t\tconst currentToken \t\t\t\t\t= this.userData.getTokenKey();\r\n\t\tthis.userData.account \t\t\t\t= this.selectedAccount;\r\n\t\tthis.userData.bddAccountConnected \t= this.selectedAccount;\r\n\r\n\t\tthis.userService.initKeyspaceAndUser(this.userData.account, this.userData.mail, currentToken).then(res => \r\n\t\t{\r\n\t\t\tthis.dialogRef.close(this.selectedAccount);\r\n\t\t}).catch(err => \r\n\t\t{\r\n\t\t\tthis.dialogRef.close(false);\r\n\t\t});\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t{{titleModal}}\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t{{mailUser}}\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{ 'userModal.accounts' | translate }}\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{ 'common.password' | translate }}\r\n\t\t
\r\n\t\r\n\t\t
\r\n\t\t\t{{ 'userModal.keyAccount' | translate }}\r\n\t
\r\n
\r\n
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\tType d'utilisateur\r\n\t\t\t\t\r\n\t\t\t\t\t{{type.libelle}}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\r\n\t\t\r\n\r\n\t\t
\r\n\t\t\t

Informations principales :

\r\n\t\t\t
\r\n\t\t\t\t
Compte : {{ this.userData.bddAccountConnected }}
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tMerci d'entrer une adresse email valide\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tL'Email est obligatoire\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tUn compte avec ce mail est déjà existant\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tMerci d'entrer une adresse email valide\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{{ 'userModal.useSecondMail' | translate }}\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t

Imprimeur

\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\tOption Imprimeur\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

{{ 'common.jobs' | translate }} :

\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ 'userModal.addProf' | translate }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t
\r\n\r\n\r\n\t\t\r\n\t\t
\r\n\t\t\t

{{ 'userModal.updatePassword' | translate }} :

\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t

Double authentification :

\r\n\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{type.libelle}}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t
\r\n\r\n\r\n\t\t\r\n\t\t
\r\n\t\t\t

Clé RSA du compte :

\r\n\r\n\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ 'userModal.downloadRsaKey' | translate }}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ 'userModal.importRsaKey' | translate }}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ 'userModal.errorImportRsa' | translate }}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ 'userModal.successImportRsa' | translate }}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\r\n
\r\n
\r\n\t\r\n\t\r\n
\r\n
\r\n","
\r\n\t
\r\n\t\t
{{ data.title }}
\r\n\t
\r\n\t
\r\n\t\t{{ data.text }}\r\n
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, Inject, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { MatDialogRef, MatDialog } from '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { FormControl, FormBuilder, FormGroup, Validators }\tfrom '@angular/forms';\r\n\r\nimport { UserService }\t\tfrom '../../services/user.service';\r\nimport { EncryptService } from '../../services/encrypt.service';\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData } \tfrom '../../providers/workspace-data';\r\nimport { TranslateService }\tfrom '@ngx-translate/core';\r\n\r\n\r\ndeclare const require: any;\r\n\r\nimport * as htmlEncode\t\tfrom 'js-htmlencode';\r\nimport * as _\t\t\t\tfrom 'underscore';\r\n\r\nconst fileSaver = require('file-saver');\r\n\r\n\r\n@Component({\r\n selector:\t\t\t'user-modal',\r\n templateUrl:\t\t'userModal.component.html',\r\n\t encapsulation:\tViewEncapsulation.None,\r\n styleUrls:\t\t\t['./userModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class UserModalComponent implements OnInit, OnDestroy\r\n{\r\n /**\r\n * Name of the etablissement to add\r\n */\r\n\tpublic mailUser:\t\tstring;\r\n\tpublic secondMailUser:\tstring;\r\n\tpublic account:\t\t\tstring;\r\n public nomUser:\t\t\tstring;\r\n public prenomUser:\t\tstring;\r\n public color:\t\t\tstring\t= '#ffffff';\r\n\tpublic textColor:\t\tstring\t= '#000000';\r\n\r\n\tpublic mbIsAdmin:\t\t\tboolean = false;\r\n\tpublic mbIsPrinter:\t\t\tboolean = false;\r\n\tpublic mbUseSecondMailUser:\tboolean = false;\r\n\r\n public currentPassword: string;\r\n public passwordUser:\tstring;\r\n\r\n public moFormUser: FormGroup;\r\n\r\n\tpublic moFormCtrlMailUser:\t\t\tFormControl;\r\n\tpublic moFormCtrlAccountUser:\t\tFormControl;\r\n\tpublic moFormCtrlIsAdmin:\t\t\tFormControl;\r\n public moFormCtrlCurrenPasswd: FormControl;\r\n public moFormCtrlNumTelFixe: FormControl;\r\n public moFormCtrlNumTelMobile: FormControl;\r\n\tpublic moFormColor:\t\t\t\t\tFormControl;\r\n public moFormCtrlNomUser:\t\t\tFormControl;\r\n\tpublic moFormCtrlPrenomUser:\t\tFormControl;\r\n\tpublic moFormCtrlSecondMailUser:\tFormControl;\r\n public moFormCtrlDoubleAuthType: FormControl;\r\n\tpublic moFormCtrlOtpValidationCode: FormControl;\r\n\tpublic moFormCtrlNewProfession: \tFormControl;\r\n\r\n public itemSelected:\t\t\t\t\tstring;\r\n public editAccount:\t\t\t\t\t\tboolean = false;\r\n public isCurrentAccount: boolean = false;\r\n public displayMessagePasswordUopdated:\tboolean = false;\r\n public displayMessageOTPValidated: boolean = false;\r\n public displayMessageErrorRsa: boolean = false;\r\n public displayMessageRsaValidated: boolean = false;\r\n\r\n public titleModal:\t\t\tstring;\r\n public titleValidateButton: string;\r\n\r\n public moUpdateSubscription:\tany;\r\n public displayQRcode:\t\t\tboolean = false;\r\n\r\n public tempPrivateRsaKey:\t\tany;\r\n public initialAuthMethod:\t\tany;\r\n public doubleAuthTypes:\t\t\tany\t\t= [];\r\n public doubleAuthTypeSelected\t\t\t= 1;\r\n\r\n public otpGeneratedCode:\tany;\r\n public otpGeneratedUrl:\t\tany;\r\n public otpValidationCode:\tany;\r\n\r\n public numTelFixe: \tstring = '';\r\n public numTelMobile:\tstring = '';\r\n\r\n public professions:\t\tstring[] = [];\r\n public newProfession:\tstring;\r\n\r\n public matieres:\tstring[] = [];\r\n public newMatiere:\tstring \t = '';\r\n\r\n\r\n\tpublic mbIsNew\t\t\t= false;\r\n\tpublic mbIsEditing\t\t= false;\r\n\tpublic mbIsAdminEditing = false;\r\n\r\n\tpublic errorMailAvailable: boolean = false;\r\n\r\n\tpublic currentUserType\t= 'user';\r\n\tpublic userTypes: any[] =\r\n\t[\r\n\t\t{\r\n\t\t\tvalue:\t\t'user',\r\n\t\t\tlibelle:\t'Utilisateur'\r\n\t\t},\r\n\t\t{\r\n\t\t\tvalue:\t\t'printer',\r\n\t\t\tlibelle:\t'Imprimeur'\r\n\t\t},\r\n\t\t{\r\n\t\t\tvalue:\t\t'admin',\r\n\t\t\tlibelle:\t'Administrateur'\r\n\t\t}\r\n\t];\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n constructor(public dialogRef:\t MatDialogRef,\r\n public userService:\t UserService,\r\n public encryptService: EncryptService,\r\n public fb: \t\t FormBuilder,\r\n\t\t\t\tpublic userData:\t UserData,\r\n\t\t\t\tpublic workspaceData: \tWorkspaceData,\r\n public translate: TranslateService,\r\n\t\t\t\tpublic dialog:\t\t\tMatDialog,\r\n @Inject(MAT_DIALOG_DATA) public data: any)\r\n {\r\n\t\tthis.account = this.userData.account;\r\n\r\n\t\ttranslate.get('common.none2').subscribe((none: string) =>\r\n\t\t{\r\n\t\t\ttranslate.get('userModal.oneTimePassword').subscribe((oneTimePass: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.doubleAuthTypes =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue:\t\t1,\r\n\t\t\t\t\t\t\tlibelle:\tnone\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue:\t\t3,\r\n\t\t\t\t\t\t\tlibelle:\toneTimePass\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\ttranslate.get('userModal.createNewUser').subscribe((txt: string) =>\r\n\t\t{\r\n\t\t\tthis.titleModal\t= txt;\r\n\t\t});\r\n\r\n\t\ttranslate.get('userModal.createrUserButon').subscribe((txt: string) =>\r\n\t\t{\r\n\t\t\tthis.titleValidateButton = txt;\r\n\t\t});\r\n\r\n\t\tthis.professions\t= [];\r\n\t\tthis.matieres\t\t= [];\r\n\r\n\r\n\t\tif (this.userData.isSuperviseur() === true)\r\n\t\t{\r\n\t\t/*\tthis.userTypes.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue:\t\t'admin',\r\n\t\t\t\t\tlibelle:\t'Super Administrateur'\r\n\t\t\t\t});*/\r\n\t\t}\r\n\r\n if (data && data.edition && data.edition === true)\r\n {\r\n /**\r\n * Si un utilisateur est transmis on édite cet utlisateur\r\n * sinon on édite l'utilisateur courant\r\n */\r\n let currentUser: any;\r\n if (data.userSelected)\r\n {\r\n\t\t\t\tthis.mbIsNew\t\t\t= false;\r\n\t\t\t\tthis.mbIsEditing\t\t= true;\r\n\t\t\t\tthis.mbIsAdminEditing\t= false;\r\n\r\n this.editAccount\t\t= true;\r\n currentUser\t\t\t\t= data.userSelected;\r\n\r\n if (currentUser.ssoDatas && currentUser.ssoDatas.method)\r\n {\r\n //Si method = 3 alors on est en double authentification\r\n //sinon on est en mode password simple\r\n this.doubleAuthTypeSelected = Number(currentUser.ssoDatas.method);\r\n }\r\n }\r\n else\r\n {\r\n\t\t\t\tthis.mbIsNew\t\t\t= false;\r\n\t\t\t\tthis.mbIsEditing\t\t= false;\r\n\t\t\t\tthis.mbIsAdminEditing\t= true;\r\n\r\n this.isCurrentAccount\t\t= true;\r\n this.doubleAuthTypeSelected\t= this.userData.methodAuth;\r\n this.editAccount\t\t\t= true;\r\n\r\n\t\t\t\tconst accountInfos = this.userData.getAccountInfo();\r\n\r\n if (accountInfos && accountInfos.infosUser)\r\n {\r\n currentUser = accountInfos.infosUser;\r\n }\r\n }\r\n\r\n this.initialAuthMethod = this.doubleAuthTypeSelected;\r\n\r\n if (currentUser)\r\n {\r\n\t\t\t\ttranslate.get('userModal.titlePrefix').subscribe((res: string) =>\r\n\t\t\t\t{\r\n this.titleModal\t= res + currentUser.mail;\r\n });\r\n\r\n\t\t\t\ttranslate.get('common.validate').subscribe((res: string) =>\r\n\t\t\t\t{\r\n this.titleValidateButton = res;\r\n });\r\n\r\n\t\t\t\tthis.mailUser = currentUser.mail;\r\n\r\n if (currentUser.infos)\r\n {\r\n this.nomUser\t\t\t\t= currentUser.infos.nom;\r\n\t\t\t\t\tthis.prenomUser\t\t\t\t= currentUser.infos.prenom;\r\n\t\t\t\t\tthis.secondMailUser\t\t\t= currentUser.infos.secondMail;\r\n this.numTelFixe\t\t\t\t= currentUser.publics.fixe1;\r\n\t\t\t\t\tthis.numTelMobile\t\t\t= currentUser.publics.mobile1;\r\n\t\t\t\t\tthis.mbUseSecondMailUser\t= currentUser.infos.useSecondMail\t=== 'true' || currentUser.infos.useSecondMail === true;\r\n\t\t\t\t\tthis.mbIsAdmin\t\t\t\t= currentUser.publics.isAdmin\t\t=== 'true' || currentUser.publics.isAdmin\t=== true;\r\n\t\t\t\t\tthis.mbIsPrinter\t\t\t= currentUser.publics.isPrinter\t\t=== 'true' || currentUser.publics.isPrinter === true;\r\n\r\n\t\t\t\t\tthis.currentUserType = 'user';\r\n\r\n\t\t\t\t\tif (this.mbIsAdmin === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.currentUserType = 'admin';\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.mbIsPrinter === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.currentUserType = 'printer';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n if (currentUser.infos.color)\r\n {\r\n this.color = currentUser.infos.color;\r\n }\r\n\r\n if (currentUser.publics.professions)\r\n {\r\n const professions = currentUser.publics.professions;\r\n\r\n if (typeof professions === 'string')\r\n {\r\n this.professions = JSON.parse(professions);\r\n }\r\n else\r\n {\r\n this.professions = professions;\r\n }\r\n }\r\n\r\n if (currentUser.publics.matieres)\r\n {\r\n let matieres = currentUser.publics.matieres;\r\n\r\n if (typeof matieres === 'string')\r\n {\r\n this.matieres = JSON.parse(matieres);\r\n }\r\n else\r\n {\r\n this.matieres = matieres;\r\n }\r\n }\r\n }\r\n\t\t\t}\r\n }\r\n else\r\n {\r\n //Il s'agit d'une création de compte\r\n\t\t\tthis.mbIsNew\t\t\t= true;\r\n\t\t\tthis.mbIsEditing\t\t= false;\r\n\t\t\tthis.mbIsAdminEditing\t= false;\r\n //Ongénère automatiquement un mot de passe valide que le createur\r\n //pourra quand même modifier s'il le souhaite\r\n this.generateRandomPassword();\r\n }\r\n\r\n this.itemSelected = 'infos';\r\n\r\n this.moFormCtrlMailUser\t\t\t = this.fb.control({value: this.mailUser, disabled: this.editAccount}, [Validators.required, Validators.email, this.isMailFree.bind(this)]);\r\n\t\tthis.moFormCtrlAccountUser\t\t\t= this.fb.control({value: this.account, disabled: true});\r\n\t\tthis.moFormCtrlCurrenPasswd\t\t\t= this.fb.control(this.currentPassword);\r\n this.moFormCtrlNumTelFixe\t\t = this.fb.control(this.numTelFixe);\r\n this.moFormCtrlNumTelMobile\t\t = this.fb.control(this.numTelMobile);\r\n this.moFormCtrlNomUser\t\t\t = this.fb.control(this.nomUser, Validators.required);\r\n\t\tthis.moFormCtrlPrenomUser\t\t = this.fb.control(this.prenomUser, Validators.required);\r\n\t\tthis.moFormCtrlSecondMailUser\t\t= this.fb.control({value: this.secondMailUser, disabled: false}, Validators.email);\r\n\t\tthis.moFormCtrlIsAdmin\t\t \t= this.fb.control(this.mbIsAdmin);\r\n this.moFormCtrlDoubleAuthType = this.fb.control(this.doubleAuthTypeSelected);\r\n this.moFormCtrlOtpValidationCode = this.fb.control(this.otpValidationCode);\r\n\t\tthis.moFormColor\t\t\t\t\t= this.fb.control(this.color);\r\n\t\tthis.moFormCtrlNewProfession\t\t= this.fb.control(this.newProfession);\r\n\r\n\r\n this.moFormUser = this.fb.group(\r\n\t\t{\r\n\t\t\tmail:\t\t this.moFormCtrlMailUser,\r\n\t\t\taccount:\t\t\tthis.moFormCtrlAccountUser,\r\n\t\t\tadmin:\t\t\t\tthis.moFormCtrlIsAdmin,\r\n\t\t\tcurrentPassword: this.moFormCtrlCurrenPasswd,\r\n\t\t\ttelFixe: this.moFormCtrlNumTelFixe,\r\n\t\t\ttelMobile: this.moFormCtrlNumTelMobile,\r\n\t\t\tnom:\t\t this.moFormCtrlNomUser,\r\n\t\t\tprenom:\t\t this.moFormCtrlPrenomUser,\r\n\t\t\tsecondMail:\t\t\tthis.moFormCtrlSecondMailUser,\r\n\t\t\tcolor:\t\t this.moFormColor,\r\n\t\t\tdoubleAuthType: this.moFormCtrlDoubleAuthType,\r\n\t\t\totpValidationCode: this.moFormCtrlOtpValidationCode,\r\n\t\t\tnewProfession: \t\tthis.moFormCtrlNewProfession\r\n\t\t});\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public ngOnInit()\r\n\t{\r\n this.moUpdateSubscription = this.userData.globalEmitter.subscribe((value: any) =>\r\n\t\t{\r\n if (value.length && value.length > 1 && value[0] === 'user::newPassword')\r\n\t\t\t{\r\n\t\t\t\tthis.passwordUser = value[1];\r\n\t\t\t}\r\n\r\n if (value === 'OTP:codeValidated')\r\n\t\t\t{\r\n\t\t\t\tthis.displayMessageOTPValidated = true;\r\n\t\t\t}\r\n\r\n if (value.length && value.length > 1 && value[0] === 'OTP:newCode')\r\n\t\t\t{\r\n\t\t\t\tthis.otpGeneratedCode\t= value[1];\r\n\t\t\t\tthis.otpGeneratedUrl\t= '';\r\n\r\n\t\t\t\tthis.otpGeneratedUrl += 'otpauth://totp/';\r\n\t\t\t\tthis.otpGeneratedUrl += this.mailUser;\r\n\t\t\t\tthis.otpGeneratedUrl += '?secret=';\r\n\t\t\t\tthis.otpGeneratedUrl += this.otpGeneratedCode;\r\n\t\t\t\tthis.otpGeneratedUrl += '&issuer=Exatech&algorithm=SHA1';\r\n\t\t\t}\r\n\r\n if (value.length && value.length === 3 && value[0] === 'RSA:validate')\r\n\t\t\t{\r\n\r\n const dataEncoded\t\t= value[1];\r\n\t\t\t\tconst dataToValidate\t= value[2];\r\n\r\n\t\t\t\tthis.encryptService.decryptData(dataEncoded, this.tempPrivateRsaKey).then((decoded: any) =>\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tif (dataToValidate === decoded)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t//On renregistre la clé RSA privée dans le localstorage\r\n\t\t\t\t\t\tthis.displayMessageErrorRsa\t\t= false;\r\n\t\t\t\t\t\tthis.displayMessageRsaValidated = true;\r\n\r\n\t\t\t\t\t\tthis.userData.setRSAPrivate(this.tempPrivateRsaKey);\r\n\r\n\t\t\t\t\t\tconst dialogRef2 = this.dialog.open(DialogOverviewExampleDialog,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\twidth: '600px',\r\n\t\t\t\t\t\t\t\tdata:\t{ text: 'Succès: votre clé RSA est désormais enregistrée dans votre navigateur.', title: 'Clé RSA correcte' }\r\n\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tdialogRef2.afterClosed().subscribe((result: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.setRSAPrivate(this.tempPrivateRsaKey);\r\n\t\t\t\t\t\tconst dialogRef3 = this.dialog.open(DialogOverviewExampleDialog,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\twidth: '600px',\r\n\t\t\t\t\t\t\t\tdata:\t{ text: 'Erreur: la clé RSA importée est incorrecte.', title: 'Clé RSA incorrecte' }\r\n\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tdialogRef3.afterClosed().subscribe((result: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t//On affiche un message d'érreur\r\n\t\t\t\t\t\tthis.displayMessageErrorRsa\t\t= true;\r\n\t\t\t\t\t\tthis.displayMessageRsaValidated = false;\r\n\t\t\t\t\t\tthis.tempPrivateRsaKey\t\t\t= undefined;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}).catch((err: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst dialogRef3 = this.dialog.open(DialogOverviewExampleDialog,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\twidth: '600px',\r\n\t\t\t\t\t\t\tdata:\t{ text: 'Erreur: la clé RSA importée est incorrecte.', title: 'Clé RSA incorrecte' }\r\n\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tdialogRef3.afterClosed().subscribe((result: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t});\r\n\t\t\t\t\t//On affiche un message d'érreur\r\n\t\t\t\t\tthis.displayMessageErrorRsa\t\t= true;\r\n\t\t\t\t\tthis.displayMessageRsaValidated = false;\r\n\t\t\t\t\tthis.tempPrivateRsaKey\t\t\t= undefined;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public ngOnDestroy()\r\n\t{\r\n\t\tif (this.moUpdateSubscription)\r\n\t\t{\r\n\t\t\tthis.moUpdateSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param control\r\n\t */\r\n\tpublic isMailFree(control: FormControl): any\r\n\t{\r\n\t\tlet xReturn: any = null;\r\n\r\n\t\tthis.errorMailAvailable = false;\r\n\r\n\t\t// si on est en édition, il fait laisser passer le nom actuel\r\n\t\tif (control && control.value)\r\n\t\t{\r\n\t\t\tconst objUsers\t\t= this.userData.getUsers();\r\n\t\t\tconst mailsUsers\t= Object.keys(objUsers);\r\n\r\n\t\t\tif (mailsUsers.includes(control.value))\r\n\t\t\t{\r\n\t\t\t\tthis.errorMailAvailable = true;\r\n\t\t\t\txReturn\t\t\t\t\t= { invalid: true };\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn xReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param rubriquel\r\n\t */\r\n public switch_tab(rubrique: string)\r\n {\r\n this.displayMessagePasswordUopdated = false;\r\n this.displayMessageOTPValidated\t\t= false;\r\n this.itemSelected\t\t\t\t\t= rubrique;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public validateOTP()\r\n {\r\n this.userService.validateUserOTPCode(this.mailUser, this.otpValidationCode);\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param password\r\n\t */\r\n public handleOnValidPassword(password: any)\r\n {\r\n this.passwordUser = password;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n public onKeyUpMail(event: any)\r\n {\r\n\t\tif (this.mailUser)\r\n\t\t{\r\n\t\t\tthis.mailUser = this.mailUser.toLowerCase();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.mailUser = '';\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tpublic onKeyUpMail2(event: any)\r\n {\r\n\t\tif (this.secondMailUser)\r\n\t\t{\r\n\t\t\tthis.secondMailUser = this.secondMailUser.toLowerCase();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.secondMailUser = '';\r\n\t\t}\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public canValidateUserModal()\r\n {\r\n let result = true;\r\n\r\n\t\tif (!this.mailUser || this.mailUser === '' || !this.nomUser || this.nomUser === '' || !this.prenomUser || this.prenomUser === '' || (!this.passwordUser && !this.editAccount))\r\n\t\t{\r\n\t\t\tresult = false;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n /**\r\n * Executed when the modal is validated and a new etablissement must be created\r\n */\r\n\tpublic validate()\r\n\t{\r\n\t\t//on apelle htmlEncode afin d'éviter l'injection de code\r\n\t\tif (this.mailUser)\r\n\t\t{\r\n\t\t\tthis.mailUser = htmlEncode.htmlEncode(this.mailUser);\r\n\t\t}\r\n\r\n\t\tif (this.nomUser)\r\n\t\t{\r\n\t\t\tthis.nomUser = htmlEncode.htmlEncode(this.nomUser);\r\n\t\t}\r\n\r\n\t\tif (this.prenomUser)\r\n\t\t{\r\n\t\t\tthis.prenomUser = htmlEncode.htmlEncode(this.prenomUser);\r\n\t\t}\r\n\r\n\t\tif (this.secondMailUser)\r\n\t\t{\r\n\t\t\tthis.secondMailUser = htmlEncode.htmlEncode(this.secondMailUser);\r\n\t\t}\r\n\r\n\t\tif (this.numTelFixe)\r\n\t\t{\r\n\t\t\tthis.numTelFixe = htmlEncode.htmlEncode(this.numTelFixe);\r\n\t\t}\r\n\r\n\t\tif (this.numTelMobile)\r\n\t\t{\r\n\t\t\tthis.numTelMobile = htmlEncode.htmlEncode(this.numTelMobile);\r\n\t\t}\r\n\r\n\t\tif (this.mailUser && this.mailUser !== '' && this.nomUser && this.nomUser !== '' && this.prenomUser && this.prenomUser !== '')\r\n {\r\n\t\t\tconst jsonUser: any =\r\n\t\t\t{\r\n\t\t\t\tinfos:\r\n\t\t\t\t{\r\n\t\t\t\t\tnom:\t\t\tthis.nomUser,\r\n\t\t\t\t\tprenom:\t\t\tthis.prenomUser,\r\n\t\t\t\t\tcolor:\t\t\tthis.color,\r\n\t\t\t\t\tsecondMail:\t\tthis.secondMailUser,\r\n\t\t\t\t\tuseSecondMail:\tthis.mbUseSecondMailUser\r\n\t\t\t\t},\r\n\t\t\t\tpublics:\r\n\t\t\t\t{\r\n\t\t\t\t\tfixe1:\t\tthis.numTelFixe,\r\n\t\t\t\t\tmobile1:\tthis.numTelMobile,\r\n\t\t\t\t\tisPrinter:\tthis.mbIsPrinter,\r\n\t\t\t\t\tisAdmin:\tthis.mbIsAdmin\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n //Si on passe de la double authentification à l'authentification password\r\n //alors on doit faire une mise à jour sur le sso\r\n if (this.doubleAuthTypeSelected === 1 && this.doubleAuthTypeSelected !== this.initialAuthMethod)\r\n {\r\n jsonUser.authMethod = this.doubleAuthTypeSelected;\r\n }\r\n\r\n\t\t\tif (!this.mbIsPrinter)\r\n\t\t\t{\r\n\t\t\t\tthis.professions.push(this.newProfession);\r\n\t\t\t\tconst professionsFiltered = _.filter(this.professions, (profession: any) => { return profession && profession !== ''; });\r\n\r\n\t\t\t\tfor (let i = 0; i < professionsFiltered.length; i++)\r\n\t\t\t\t{\r\n\t\t\t\t\tprofessionsFiltered[i] = htmlEncode.htmlEncode(professionsFiltered[i]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjsonUser.publics.professions = professionsFiltered;\r\n\r\n\t\t\t\tthis.matieres.push(this.newMatiere);\r\n\t\t\t\tconst matieresFiltered = _.filter(this.matieres, (matiere: any) => { return matiere && matiere !== ''; });\r\n\r\n\t\t\t\tfor (let i = 0; i < matieresFiltered.length; i++)\r\n\t\t\t\t{\r\n\t\t\t\t\tmatieresFiltered[i] = htmlEncode.htmlEncode(matieresFiltered[i]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjsonUser.publics.matieres = matieresFiltered;\r\n\t\t\t}\r\n\r\n if (this.editAccount === true)\r\n {\r\n if (jsonUser.authMethod)\r\n {\r\n this.userService.changeOtpMethod(this.mailUser, jsonUser.authMethod);\r\n }\r\n\r\n //Si le mot de passe a été modifié on le met à jour coté serveur\r\n if (this.passwordUser && (this.isCurrentAccount === false || this.currentPassword))\r\n {\r\n const datas: any =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tidUser:\t\t\tthis.mailUser,\r\n\t\t\t\t\t\tnomUser:\t\tthis.nomUser,\r\n\t\t\t\t\t\tprenomUser:\t\tthis.prenomUser,\r\n\t\t\t\t\t\tnewPassword:\tthis.passwordUser\r\n\t\t\t\t\t};\r\n\r\n if (this.currentPassword)\r\n {\r\n datas.oldPassword = this.currentPassword;\r\n }\r\n\r\n if (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n {\r\n datas.needOldPassword = false;\r\n\t\t\t\t\t}\r\n\r\n this.userService.updateUserPassword(datas);\r\n\t\t\t\t}\r\n this.userService.updateUser(this.mailUser, jsonUser);\r\n }\r\n else\r\n {\r\n if (this.passwordUser)\r\n {\r\n jsonUser.password = this.passwordUser;\r\n }\r\n\r\n\t\t\t\tjsonUser.mail = this.mailUser;\r\n this.userService.createNewUser(jsonUser);\r\n }\r\n }\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n public onChangeAuthType(event: any)\r\n {\r\n this.doubleAuthTypeSelected\t\t= event;\r\n this.displayMessageOTPValidated = false;\r\n\r\n if (this.doubleAuthTypeSelected === 3)\r\n {\r\n //Si l'iutlisateur était en simple password on génère directement\r\n //le QR Code\r\n if (this.initialAuthMethod === 1)\r\n {\r\n this.createOtpQRCode();\r\n this.displayQRcode = true;\r\n }\r\n else\r\n {\r\n //Sinon on affiche un bouton permettant de générer un nouveau QR Code\r\n this.displayQRcode = false;\r\n }\r\n }\r\n else\r\n {\r\n this.displayQRcode = false;\r\n }\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public generateNewOTPCode()\r\n {\r\n this.createOtpQRCode();\r\n this.displayQRcode = true;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public generateRandomPassword()\r\n {\r\n this.userService.generateNewPassword(10);\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public createOtpQRCode()\r\n {\r\n this.otpGeneratedCode\t= undefined;\r\n this.otpGeneratedUrl\t= undefined;\r\n\r\n this.userService.createUserOTPCode(this.mailUser);\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic addProfession()\r\n\t{\r\n\t\tthis.professions.push(this.newProfession);\r\n\t\tthis.newProfession = '';\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param index\r\n\t */\r\n\tpublic removeProfession(index: any)\r\n\t{\r\n\t\tthis.professions.splice(index, 1);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic addMatiere()\r\n\t{\r\n\t\tthis.matieres.push(this.newMatiere);\r\n\t\tthis.newMatiere = '';\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param index\r\n\t */\r\n\tpublic removeMatiere(index: any)\r\n\t{\r\n\t\tthis.matieres.splice(index, 1);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param index\r\n\t * @param item\r\n\t */\r\n\tpublic trackByProfession(index: any, item: any)\r\n\t{\r\n\t\treturn index;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param index\r\n\t * @param item\r\n\t */\r\n\tpublic trackByMatiere(index: any, item: any)\r\n\t{\r\n\t\treturn index;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic downloadRsaKey()\r\n\t{\r\n\t\twindow.URL = this.workspaceData.urlCreator;\r\n\t\tlet key = this.userData.getRSAPrivate();\r\n\r\n\t\tif (key !== undefined)\r\n\t\t{\r\n\t\t\tlet blob: Blob = new Blob([key], { type: 'text/plain' });\r\n\t\t\tfileSaver.saveAs(blob, 'rsaKey.exakey');\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tpublic importRsaKey(event: any)\r\n\t{\r\n\t\tif (event)\r\n\t\t{\r\n\t\t\tlet psFile: File = event.target.files[0];\r\n\r\n\t\t\tif (psFile)\r\n\t\t\t{\r\n\t\t\t\tlet reader = new FileReader();\r\n\r\n\t\t\t\treader.onload = (error) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.tempPrivateRsaKey = reader.result;\r\n\t\t\t\t\t//On génère une chaine représentant le jour actuel\r\n\t\t\t\t\tlet date\t\t= new Date();\r\n\t\t\t\t\tlet bucketDate\t= date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate();\r\n\t\t\t\t\tlet encryptStr\t= this.userData.getUserId() + bucketDate;\r\n\r\n\t\t\t\t\tthis.userService.encryptDatasForValidation(encryptStr);\r\n\r\n\t\t\t\t};\r\n\t\t\t\treader.readAsText(psFile);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public hasRsaPrivate()\r\n {\r\n return this.userData.hasRSAprivate();\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic close()\r\n\t{\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param color\r\n\t */\r\n\ttestColor(color: any)\r\n\t{\r\n\t\tcolor = color.replace('#', '');\r\n\r\n\t\tvar arrBuff\t\t= new ArrayBuffer(4);\r\n\t\tvar vw\t\t\t= new DataView(arrBuff);\r\n\r\n\r\n\t\tvw.setUint32(0, parseInt(color, 16), false);\r\n\t\tvar arrByte = new Uint8Array(arrBuff);\r\n\r\n\t\t//\t\treturn arrByte[1] + \",\" + arrByte[2] + \",\" + arrByte[3];\r\n\r\n\t\tlet value\t\t= (arrByte[1] * 299 + arrByte[2] * 587 + arrByte[3] * 114) / 1000;\r\n\t\tlet colorReturn = \"#000\";\r\n\r\n\t\tif (value < 128)\r\n\t\t{\r\n\t\t\tcolorReturn = \"#fff\";\r\n\t\t}\r\n\r\n\t\tthis.textColor = colorReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic onChangePrint()\r\n\t{\r\n\t\tthis.mbIsPrinter = !this.mbIsPrinter;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tpublic onChangeUserTypeSelect(event: any)\r\n\t{\r\n\t\tthis.currentUserType = event;\r\n\r\n\t\tswitch (event)\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'user':\r\n\t\t\t\tthis.mbIsAdmin\t\t= false;\r\n\t\t\t\tthis.mbIsPrinter\t= false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'admin':\r\n\t\t\t\tthis.mbIsAdmin\t\t= true;\r\n\t\t\t\tthis.mbIsPrinter\t= false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'printer':\r\n\t\t\t\tthis.mbIsAdmin\t\t= false;\r\n\t\t\t\tthis.mbIsPrinter\t= true;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tselector:\t\t'dialog-overview-example-dialog',\r\n\tstyleUrls:\t\t['./dialog-overview-example-dialog.scss'],\r\n\ttemplateUrl:\t'dialog-overview-example-dialog.html',\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class DialogOverviewExampleDialog\r\n{\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param dialogRef23\r\n\t * @param data\r\n\t */\r\n\tconstructor(\r\n\t\tpublic dialogRef23: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tonNoClick(): void\r\n\t{\r\n\t\tthis.dialogRef23.close();\r\n\t}\r\n\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\tErreur: Présence d'un bloceur de publicité\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t\r\n\t
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'warning-add-blocker-enabled',\r\n\ttemplateUrl:\t'warningAddBlockerEnabledModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./warningAddBlockerEnabledModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class WarningAddBlockerEnabledComponent\r\n{\r\n\t\r\n\t\r\n\t/**\r\n\t * \r\n\t * @param dialogRef \r\n\t */\r\n\tconstructor(public dialogRef: MatDialogRef)\r\n {\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public validate()\r\n {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","\r\n\t
\r\n\t\t
Avertissement: aucune clé RSA détectée
\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\tfrom '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'warning-rsa-modal',\r\n\ttemplateUrl:\t'warningRsaModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./warningRsaModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class WarningRsaModalComponent\r\n{\r\n\tpublic typeWarning: number = 1;\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param dialogRef \r\n\t * @param data \r\n\t */\r\n\tconstructor(public dialogRef: MatDialogRef,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tif (data && data.typeWarning)\r\n\t\t{\r\n\t\t\tthis.typeWarning = data.typeWarning;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic validate()\r\n\t{\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n}\r\n","/**\r\n * \r\n */\r\nexport interface IMessage\r\n{\r\n _userId: string;\r\n _content: string;\r\n _date: Date;\r\n}\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport enum SocketWhat\r\n{\r\n\tinfo,\r\n\tresponse,\r\n\trequest\r\n}\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport interface ISocketData\r\n{\r\n\tiam:\tstring;\r\n\tname:\tstring;\r\n\twhat:\tSocketWhat;\r\n\tcmd:\tstring;\r\n\tidc?:\tstring;\r\n\targs:\tany;\r\n}","
\r\n
\r\n
\r\n {{ 'adminSystem.general' | translate }}\r\n
\r\n
\r\n {{ 'adminSystem.process' | translate }}\r\n\t\t
\r\n\t\t
\r\n {{ 'adminSystem.mail' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t

{{ 'adminSystem.isNumeric' | translate }}

\r\n\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ 'common.enabled' | translate }}\r\n\t\t\t\t\t\t{{ 'common.disabled' | translate }}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\r\n\t\t\t\r\n\t\t\t

Temps aménagés

\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ 'common.enabled' | translate }}\r\n\t\t\t\t\t\t{{ 'common.disabled' | translate }}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tNom: {{specialTimeItem.name}} - Type: {{specialTimeItem.type}} \r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
Le type du temps aménagés doit être unique
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\r\n\t\t\t\r\n\t\t\t

{{ 'adminSystem.server' | translate }}

\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t

{{ 'adminSystem.mailServer' | translate }}

\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ type.text }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tle serveur est-il {{ 'adminSystem.securised' | translate }} ?\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\r\n\r\n\t\t\t\t\t\r\n\r\n\r\n\t\t\t\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\t\t\t\r\n\r\n\t\t

{{ 'adminSystem.scenarios' | translate }}

\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ scenario.title }}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n\r\n
\r\n\t

{{ 'adminSystem.mailsTemplates' | translate }}

\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{ mailTemplate.title }}\r\n\t\t\t\r\n\t\t\r\n\t\r\n
\r\n
\r\n\r\n
\r\n\t

{{ 'adminSystem.jetonsAvailables' | translate }}

\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n
\r\n\r\n
\r\n
\r\n\t

{{ 'adminSystem.titleMailTemplate' | translate }}

\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n
\r\n\r\n
\r\n
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n\r\n
\r\n
\r\n\t\r\n\t\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import { Component, ViewEncapsulation, OnInit, OnDestroy, HostListener, Inject }\tfrom '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } \t\t\t\tfrom '@angular/material';\r\nimport { EditionProcessusModalComponent } \t\t\t\tfrom './modals/editionProcessusModal.component';\r\nimport { ConfirmDeleteProcessusModalComponent } \t\t\tfrom './modals/confirmDeleteProcessusModal.component';\r\nimport { InfosDeleteProcessusModalComponent } \t\t\t\tfrom './modals/infosDeleteProcessusModal.component';\r\n\r\nimport { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';\r\n\r\nimport { AdminData }\tfrom '../../../providers/admin-data';\r\nimport { AdminService } from '../../../services/admin.service';\r\nimport { SpecialTime }\tfrom '../../../classes/specialTime.class';\r\n\r\nimport { Observable } from 'rxjs/Rx';\r\n\r\nimport * as htmlEncode\tfrom 'js-htmlencode';\r\nimport * as _\t\t\tfrom 'underscore';\r\nimport { NavigationStart, Router } from '@angular/router';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector:\t\t'app-admin-system',\r\n encapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'./admin-system.component.html',\r\n styleUrls:\t\t['./admin-system.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class AdminSystemComponent implements OnInit, OnDestroy\r\n{\r\n\tprivate routeSub:any; // subscription to route observer\r\n\r\n\r\n\r\n public moFromGroupMain: FormGroup;\r\n\r\n public moFormCtrlUrlMailServer:\t\t\tFormControl;\r\n public moFormCtrlMailContact:\t\t\tFormControl;\r\n public moFormCtrlMailNoReply:\t\t\tFormControl;\r\n public moFormCtrlTypeMailServer:\t\tFormControl;\r\n public moFormCtrlHostMailServer:\t\tFormControl;\r\n public moFormCtrlPortMailServer:\t\tFormControl;\r\n public moFormCtrlSecureMailServer:\t\tFormControl;\r\n public moFormCtrlUseAccount:\t\t\tFormControl;\r\n public moFormCtrlLoginAccount:\t\t\tFormControl;\r\n\tpublic moFormCtrlPasswordAccount:\t\tFormControl;\r\n\tpublic moFormCtrlNumericEnabled:\t\tFormControl;\r\n\tpublic moFormCtrlSpecialTimeEnabled:\tFormControl;\r\n\t//public moFormCtrlSpecialTimeArray:\tFormControl;\r\n\r\n\tpublic moFormCtrlSpecialTimeName:\t\tFormControl;\r\n\tpublic moFormCtrlSpecialTimeType:\t\tFormControl;\r\n\r\n public moAdminSubscription:\tany;\r\n public mbShowItemGeneral\t\t= true;\r\n\tpublic mbShowItemProcessus = false;\r\n\tpublic mbShowItemMail\t\t\t= false;\r\n\r\n public urlMailServer:\tany;\r\n public mailContact:\t\tany;\r\n public mailNoReply:\t\tany;\r\n\r\n public hostMailServer:\t\tany;\r\n public portMailServer:\t\tany;\r\n public typeMailServer:\t\tstring\t= 'postfix';\r\n public secureMailServer:\tboolean = false;\r\n\r\n\r\n public useAccount:\t\tboolean = false;\r\n public loginAccount:\tstring\t= '';\r\n public passwordAccount: string\t= '';\r\n\r\n public mainParametersUpdated: boolean = false;\r\n\r\n public typesMailsServer: any[] = [\r\n {\r\n value: 'postfix',\r\n text: 'Postfix'\r\n\t\t},\r\n\t\t{\r\n value: 'smtp',\r\n text: 'SMTP'\r\n }\r\n\t];\r\n\r\n\tpublic numericEnabled: \t\tboolean \t\t= false;\r\n\tpublic specialTimeArray: \tSpecialTime[] \t= [];\r\n\tpublic specialTimeEnabled: \tboolean \t\t= false;\r\n\r\n\tpublic scenariosAvailable:\t\tany[] = [];\r\n\tpublic mailsTemplatesAvailable: any[] = [];\r\n\r\n public titleScenarioSelected:\t\tany;\r\n\tpublic scenarioSelected:\t\t\tany;\r\n\tpublic titleMailTemplateSelected:\tany;\r\n\tpublic mailTemplateSelected:\t\tany;\r\n\tpublic quill:\t\t\t\t\t\tany;\r\n\r\n\tpublic specialTimeName:\t\tstring \t= '';\r\n\tpublic specialTimeType:\t\tstring \t= '';\r\n\tpublic canValidParams: \t\tboolean = false;\r\n\tpublic RouterSubscription: \tany;\r\n\r\n\tquillModules =\r\n\t{\r\n\t\ttoolbar:\r\n\t\t{\r\n\t\t\tcontainer: [\r\n\t\t\t\t[{ 'font': [''] }],\r\n\t\t\t\t[{ 'size': ['small', false, 'large', 'huge'] }],\r\n\t\t\t\t['bold', 'italic', 'underline', 'strike'],\r\n\t\t\t\t[{ 'header': 1 }, { 'header': 2 }],\r\n\t\t\t\t[{ 'color': [''] }, { 'background': [''] }],\r\n\t\t\t\t[{ 'list': 'ordered' }, { 'list': 'bullet' }],\r\n\t\t\t\t[{ 'align': [''] }]\r\n\t\t\t]\r\n\t\t},\r\n//\t\timageResize: true,\r\n\t\tformula: true\r\n\t};\r\n\r\n\tloading = true;\r\n\r\n\t/**\r\n\t *\r\n\t * @param dialog\r\n\t * @param adminService\r\n\t * @param adminData\r\n\t * @param fb\r\n\t */\r\n constructor(public dialog:\t\t\tMatDialog,\r\n public adminService:\tAdminService,\r\n public adminData:\t\tAdminData,\r\n\t\t\t\tpublic router:\t\t\tRouter,\r\n public fb:\t\t\t\tFormBuilder)\r\n {\r\n this.mainParametersUpdated = false;\r\n\t\tthis.adminService.getAllAdminParameters();\r\n\t\t\r\n\t\tlet isFirst = true;\r\n\t\tthis.RouterSubscription = router.events.subscribe((val) => \r\n\t\t{\r\n\t\t\tif (val instanceof NavigationStart && isFirst && this.moFromGroupMain.dirty) \r\n\t\t\t{\r\n\t\t\t\tlet result = confirm(\"Voulez vous vraiment quitter cette page ? Des paramètres n'ont pas été enregistrés et vont être perdus\");\r\n\t\t\t\tif(!result)\r\n\t\t\t\t{\r\n\t\t\t\t\trouter.navigateByUrl('/admin');\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tisFirst = false;\r\n\t\t\t\t\tthis.router.navigate([val.url]); \r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t});\r\n\t}\r\n\t\r\n/*\r\n\t\r\n\t@HostListener('window:beforeunload', ['$event'])\r\n\tbeforeunloadHandler(event: any)\r\n\t{\r\n\r\n\t}\r\n\t@HostListener('window:unload', ['$event']) \r\n\tunloadHandler(event: any) { \r\n\t} \r\n\r\n\t@HostListener('window:beforeunload', ['$event'])\r\n\tonBeforeUnload(event: any)\r\n\t{\r\n\t\t\r\n\t\tlet result = confirm('ok');\r\n\t\tif(result)\r\n\t\t{\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t}\r\n*/\r\n\t \r\n\t/**\r\n\t *\r\n\t */\r\n public ngOnInit()\r\n\t{\r\n this.moAdminSubscription = this.adminData.adminEmitter.subscribe((value: any) =>\r\n\t\t{\r\n if (value === 'admin::parameters::read')\r\n\t\t\t{\r\n this._initParameters();\r\n }\r\n\r\n if (value === 'admin::parameters::update')\r\n\t\t\t{\r\n this._initParameters();\r\n\r\n //On a mis à jour des informations dans la fenètre générale\r\n if (this.mbShowItemGeneral === true)\r\n {\r\n this.mainParametersUpdated = true;\r\n }\r\n\t\t\t}\r\n\r\n\t\t\t\tif (typeof value === 'object' && value.length > 1)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (value[0] === 'admin::scenario::delete')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst result = value[1];\r\n\t\t\t\t\t\tconst scenarioToDelete = this.scenariosAvailable.find((scenario: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn scenario.id === result.idScenario;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (result.deleted === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.scenariosAvailable = _.filter(this.scenariosAvailable, (scenario: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn scenario.id !== result.idScenario;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tthis.scenarioSelected\t\t\t\t= this.scenariosAvailable[0];\r\n\t\t\t\t\t\t\tthis.titleScenarioSelected\t\t\t= this.scenarioSelected.title;\r\n\t\t\t\t\t\t\tthis.adminData.scenariosAvailable\t= this.scenariosAvailable;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.dialog.open(InfosDeleteProcessusModalComponent,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\theight:\t\t\t'30%',\r\n\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\twidth:\t\t\t'40%',\r\n\t\t\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdeleted:\t\tresult.deleted,\r\n\t\t\t\t\t\t\t\t\tscenarioUsed:\tresult.scenarioUsed,\r\n\t\t\t\t\t\t\t\t\tscenario:\t\tscenarioToDelete\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t});\r\n\r\n\r\n this.moFormCtrlUrlMailServer\t\t= this.fb.control(this.urlMailServer);\r\n this.moFormCtrlMailContact\t\t\t= this.fb.control(this.mailContact);\r\n this.moFormCtrlMailNoReply\t\t\t= this.fb.control(this.mailNoReply);\r\n this.moFormCtrlTypeMailServer\t\t= this.fb.control(this.typeMailServer);\r\n this.moFormCtrlHostMailServer\t\t= this.fb.control(this.hostMailServer);\r\n this.moFormCtrlPortMailServer\t\t= this.fb.control(this.portMailServer);\r\n this.moFormCtrlSecureMailServer \t= this.fb.control(this.secureMailServer);\r\n this.moFormCtrlUseAccount\t\t\t= this.fb.control(this.useAccount);\r\n this.moFormCtrlLoginAccount\t\t\t= this.fb.control(this.loginAccount);\r\n\t\tthis.moFormCtrlPasswordAccount\t\t= this.fb.control(this.passwordAccount);\r\n\t\tthis.moFormCtrlNumericEnabled\t\t= this.fb.control(this.numericEnabled);\r\n\t\tthis.moFormCtrlSpecialTimeEnabled\t= this.fb.control(this.specialTimeEnabled);\r\n\t\t// this.moFormCtrlSpecialTimeArray\t\t= this.fb.control(this.specialTimeArray);\r\n\t\tthis.moFormCtrlSpecialTimeName\t\t= this.fb.control(this.specialTimeName);\r\n\t\tthis.moFormCtrlSpecialTimeType\t\t= this.fb.control(this.specialTimeType);\r\n\r\n\r\n this.moFromGroupMain = this.fb.group(\r\n\t\t{\r\n\t\t\turlMailServer:\t\t\tthis.moFormCtrlUrlMailServer,\r\n\t\t\tmailContact:\t\t\tthis.moFormCtrlMailContact,\r\n\t\t\tmailNoReply:\t\t\tthis.moFormCtrlMailNoReply,\r\n\t\t\ttypeMailServer:\t\t\tthis.moFormCtrlTypeMailServer,\r\n\t\t\thostMailServer:\t\t\tthis.moFormCtrlHostMailServer,\r\n\t\t\tportMailServer:\t\t\tthis.moFormCtrlPortMailServer,\r\n\t\t\tsecureMailServer:\t\tthis.moFormCtrlSecureMailServer,\r\n\t\t\tuseAccount:\t\t \tthis.moFormCtrlUseAccount,\r\n\t\t\tloginAccount:\t\t\tthis.moFormCtrlLoginAccount,\r\n\t\t\tpasswordAccount:\t\tthis.moFormCtrlPasswordAccount,\r\n\t\t\tnumericEnabled:\t\t\tthis.moFormCtrlNumericEnabled,\r\n\t\t\tspecialTimeEnabled:\t\tthis.moFormCtrlSpecialTimeEnabled,\r\n\t\t\tspecialTimeName:\t\tthis.moFormCtrlSpecialTimeName,\r\n\t\t\tspecialTimeType:\t\tthis.moFormCtrlSpecialTimeType\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public ngOnDestroy()\r\n\t{\r\n if (this.moAdminSubscription)\r\n\t\t{\r\n\t\t\tthis.moAdminSubscription.unsubscribe();\r\n\t\t\tthis.RouterSubscription.unsubscribe();\r\n\t\t}\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic addSpecialTime()\r\n\t{\r\n\r\n\t\tif ( this.specialTimeName !== '' && this.specialTimeType !== '')\r\n\t\t{\r\n\t\t\tlet nNewId = 0;\r\n\r\n\t\t\tfor (let specialTime of this.specialTimeArray)\r\n\t\t\t{\r\n\t\t\t\tif(nNewId <= specialTime.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tnNewId = specialTime.id + 1; \r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet bIsUnique = true;\r\n\t\t\t\r\n\t\t\tfor (let specialTime of this.specialTimeArray)\r\n\t\t\t{\r\n\t\t\t\tif(this.specialTimeType === specialTime.type)\r\n\t\t\t\t{\r\n\t\t\t\t\tbIsUnique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (bIsUnique)\r\n\t\t\t{\r\n\t\t\t\tconst oSpecialTime: SpecialTime = new SpecialTime(nNewId, this.specialTimeName, this.specialTimeType);\r\n\r\n\t\t\t\tthis.specialTimeArray.push(oSpecialTime);\r\n\t\t\t\tthis.specialTimeName \t= '';\r\n\t\t\t\tthis.specialTimeType \t= ''; \r\n\t\t\t\tthis.canValidParams \t= true;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.specialTimeName \t= '';\r\n\t\t\t\tthis.specialTimeType \t= '';\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t}\r\n\t} \r\n\r\n\r\n\tshowSpecialTimeAlert()\r\n\t{\r\n\t\tlet bReturn = false;\r\n\r\n\t\tfor (let specialTime of this.specialTimeArray)\r\n\t\t{\r\n\t\t\tif(this.specialTimeType === specialTime.type)\r\n\t\t\t{\r\n\t\t\t\tbReturn = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn bReturn;\r\n\r\n\t}\r\n\r\n\tpublic canAddSpecialTime()\r\n\t{\r\n\t\tlet bReturn = true;\r\n\r\n\t\tif(!this.specialTimeName || !this.specialTimeType)\r\n\t\t{\r\n\t\t\tbReturn = false;\r\n\t\t}\r\n\r\n\t\t\r\n\t\tfor (let specialTime of this.specialTimeArray)\r\n\t\t{\r\n\t\t\tif(this.specialTimeType === specialTime.type)\r\n\t\t\t{\r\n\t\t\t\tbReturn = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn bReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic delSpecialTime(psId: number)\r\n\t{\r\n\t\tlet newSpecialTimeArray: SpecialTime[] = [];\r\n\t\tfor (let specialTime of this.specialTimeArray)\r\n\t\t{\r\n\t\t\tif (specialTime.id !== psId)\r\n\t\t\t{\r\n\t\t\t\tnewSpecialTimeArray.push(specialTime);\r\n\t\t\t} \r\n\t\t}\r\n\t\tthis.specialTimeArray = newSpecialTimeArray;\r\n\t\tthis.canValidParams = true;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param tabName\r\n\t */\r\n public switch_tab(tabName: any)\r\n {\r\n this.mbShowItemGeneral\t\t= false;\r\n\t\tthis.mbShowItemProcessus\t= false;\r\n\t\tthis.mbShowItemMail\t\t\t= false;\r\n\t\tthis.mainParametersUpdated\t= false;\r\n\r\n switch (tabName)\r\n\t\t{\r\n\t\t\tcase 'general':\r\n\t\t\t\tthis.mbShowItemGeneral = true;\r\n\t\t\t\tbreak;\r\n case 'processus':\r\n\t\t\t\tthis.mbShowItemProcessus = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'mail':\r\n\t\t\t\tthis.mbShowItemMail = true;\r\n\t\t\t\t//Initialisation des templates de mail\r\n\t\t\t\tthis.initMailsTemplates();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public updateMainParameters()\r\n {\r\n let datas: any = {};\r\n\r\n if (this.moFormCtrlUrlMailServer.dirty)\t\t\tdatas['domaine']\t\t\t= htmlEncode.htmlEncode(this.urlMailServer);\r\n if (this.moFormCtrlMailContact.dirty)\t\t\tdatas['@admin']\t\t\t\t= htmlEncode.htmlEncode(this.mailContact);\r\n if (this.moFormCtrlMailNoReply.dirty)\t\t\tdatas['@sys']\t\t\t\t= htmlEncode.htmlEncode(this.mailNoReply);\r\n if (this.moFormCtrlTypeMailServer.dirty)\t\tdatas['typemailserver']\t\t= htmlEncode.htmlEncode(this.typeMailServer);\r\n if (this.moFormCtrlHostMailServer.dirty)\t\tdatas['hostmailserver']\t\t= htmlEncode.htmlEncode(this.hostMailServer);\r\n if (this.moFormCtrlPortMailServer.dirty)\t\tdatas['portmailserver']\t\t= htmlEncode.htmlEncode(this.portMailServer);\r\n if (this.moFormCtrlSecureMailServer.dirty)\t\tdatas['secure']\t\t\t\t= this.secureMailServer ? 1 : 0;\r\n if (this.moFormCtrlUseAccount.dirty)\t\t\tdatas['useaccount']\t\t\t= this.useAccount\t\t? 1 : 0;\r\n if (this.moFormCtrlLoginAccount.dirty)\t\t\tdatas['loginaccount']\t\t= htmlEncode.htmlEncode(this.loginAccount);\r\n\t\tif (this.moFormCtrlPasswordAccount.dirty)\t\tdatas['passwdaccount']\t\t= htmlEncode.htmlEncode(this.passwordAccount);\r\n\t\tif (this.moFormCtrlNumericEnabled.dirty)\t\tdatas['numericEnabled']\t\t= this.numericEnabled ? 1 : 0;\r\n\t\tif (this.moFormCtrlSpecialTimeEnabled.dirty)\tdatas['specialTimeEnabled']\t= this.specialTimeEnabled ? 1 : 0;\r\n\r\n\t\tconst specialTimeArrayJson: any[] = [];\r\n\r\n\r\n\t\tfor (const specialTime of this.specialTimeArray)\r\n\t\t{\r\n\t\t\tspecialTimeArrayJson.push(specialTime.toJson());\r\n\t\t}\r\n\r\n\t\tif(specialTimeArrayJson.length > 0)\r\n\t\t{\r\n\t\t\tdatas['specialTimeArray']\t= JSON.stringify(specialTimeArrayJson);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tdatas['specialTimeArray'] = {};\r\n\t\t}\r\n\r\n\t\t// if (this.moFormCtrlSpecialtimeEnabled.dirty)\tdatas['specialtimeEnabled']\t= this.specialtimeEnabled ? 1 : 0;\r\n\r\n\t\tthis.adminService.updateAdminParameters(datas);\r\n\t\tthis.canValidParams = false;\r\n }\r\n\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public createNewProcess()\r\n\t{\r\n\t\tthis.dialog.open(EditionProcessusModalComponent,\r\n\t\t{\r\n\t\t\theight: \t\t'80%',\r\n\t\t\tpanelClass: \t'responsive_modal',\r\n\t\t\twidth: \t\t\t'75%',\r\n\t\t\tdisableClose: \ttrue,\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic canDeleteCurrentProcess()\r\n\t{\r\n\t\tlet result = true;\r\n\r\n\t\tif (!this.scenarioSelected || this.scenarioSelected.id === 0)\r\n\t\t{\r\n\t\t\tresult = false;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic deleteCurrentProcess()\r\n\t{\r\n\t\tconst dialogRef = this.dialog.open(ConfirmDeleteProcessusModalComponent,\r\n\t\t{\r\n\t\t\t\theight:\t\t\t'30%',\r\n\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\twidth:\t\t\t'40%',\r\n\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\tscenario: this.scenarioSelected\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t{\r\n\t\t\tif (result === true)\r\n\t\t\t{\r\n\t\t\t\tthis.adminService.deleteScenario(this.scenarioSelected.id);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public changeScenarioSelected()\r\n {\r\n this.scenarioSelected = _.find(this.scenariosAvailable, (scenario: any) => { return scenario.title === this.titleScenarioSelected; });\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tpublic changeTemplateMailSelected(event: any)\r\n {\r\n\t\tthis.titleMailTemplateSelected\t= event;\r\n this.mailTemplateSelected\t\t= _.find(this.mailsTemplatesAvailable, (template: any) => { return template.title === this.titleMailTemplateSelected; });\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tpublic onEditorCreated(event: any)\r\n\t{\r\n\t\tthis.quill = event;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param jeton\r\n\t */\r\n\tpublic onClickJeton(jeton: any)\r\n\t{\r\n\t\tconst range = this.quill.getSelection();\r\n\t\tif (range)\r\n\t\t{\r\n\t\t\tif (range.length === 0)\r\n\t\t\t{\r\n\t\t\t\tthis.quill.insertText(range.index, '{{' + jeton + '}}');\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.quill.deleteText(range.index, range.length);\r\n\t\t\t\tthis.quill.insertText(range.index, '{{' + jeton + '}}');\r\n\t\t\t}\r\n\r\n\t\t\tconst elementContentQuill = document.getElementsByClassName('ql-editor');\r\n\r\n\t\t\tif (elementContentQuill.length > 0)\r\n\t\t\t{\r\n\t\t\t\tconst element\t\t\t\t\t\t\t= elementContentQuill[0];\r\n\t\t\t\tthis.mailTemplateSelected.datas.content = element.innerHTML;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tconst elementTitleTemplate: any = document.getElementById('titleTemplate');\r\n\t\t\tconst startPosition:\t\tany = elementTitleTemplate['selectionStart'];\r\n\t\t\tconst endPosition:\t\t\tany = elementTitleTemplate['selectionEnd'];\r\n\r\n\t\t\tif (this.mailTemplateSelected.datas.title)\r\n\t\t\t{\r\n\t\t\t\tconst substr1 = this.mailTemplateSelected.datas.title.substring(0, startPosition);\r\n\t\t\t\tconst substr2 = this.mailTemplateSelected.datas.title.substring(endPosition);\r\n\r\n\t\t\t\tthis.mailTemplateSelected.datas.title = substr1 + '{{' + jeton + '}}' + substr2;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Initialisation des modèles de mail telles qu'ils sont en base de données\r\n\t */\r\n\tpublic initMailsTemplates()\r\n\t{\r\n\t\tif (this.adminData.mailsTemplates && this.adminData.mailsTemplates.length > 0)\r\n\t\t{\r\n\t\t\tthis.mailsTemplatesAvailable = [];\r\n\r\n\t\t\tfor (const template of this.adminData.mailsTemplates)\r\n\t\t\t{\r\n\t\t\t\tconst tempTemplate = Object.assign({}, template);\r\n\r\n\t\t\t\tif (template.datas)\r\n\t\t\t\t{\r\n\t\t\t\t\ttempTemplate.datas = Object.assign({}, template.datas);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.mailsTemplatesAvailable.push(tempTemplate);\r\n\t\t\t}\r\n\r\n\t\t\tthis.mailTemplateSelected\t\t= this.mailsTemplatesAvailable[0];\r\n\t\t\tthis.titleMailTemplateSelected\t= this.mailTemplateSelected.title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sauvegarde des modèles de mail\r\n\t */\r\n\tpublic saveMailsTemplates()\r\n\t{\r\n\t\tthis.adminData.mailsTemplates = [];\r\n\r\n\t\tfor (const template of this.mailsTemplatesAvailable)\r\n\t\t{\r\n\t\t\tthis.adminData.mailsTemplates.push(Object.assign({}, template));\r\n\t\t}\r\n\r\n\t\tthis.adminService.updateAdminMailsTemplates(this.adminData.mailsTemplates);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n private _initParameters()\r\n {\r\n //Initialisation des paramètres généraux\r\n if (this.adminData.generalParameters)\r\n {\r\n this.urlMailServer\t\t\t= this.adminData.generalParameters['domain'];\r\n this.mailContact\t\t\t= this.adminData.generalParameters['mailAdmin'];\r\n this.mailNoReply\t\t\t= this.adminData.generalParameters['mailSystem'];\r\n this.typeMailServer\t\t\t= this.adminData.generalParameters['typeMailServer'];\r\n this.hostMailServer\t\t\t= this.adminData.generalParameters['hostMailServer'];\r\n this.portMailServer\t\t\t= this.adminData.generalParameters['portMailServer'];\r\n this.secureMailServer\t\t= Number(this.adminData.generalParameters['secure'])\t\t\t\t=== 1;\r\n this.useAccount\t\t\t\t= Number(this.adminData.generalParameters['useAccount'])\t\t\t=== 1;\r\n this.loginAccount\t\t\t= this.adminData.generalParameters['loginAccount'];\r\n\t\t\tthis.passwordAccount\t\t= this.adminData.generalParameters['passwdAccount'];\r\n\t\t\tthis.numericEnabled\t\t\t= Number(this.adminData.generalParameters['numericEnabled']) \t\t=== 1;\r\n\t\t\tthis.specialTimeEnabled\t\t= Number(this.adminData.generalParameters['specialTimeEnabled']) \t=== 1;\r\n\t\t\tthis.specialTimeArray\t\t= this.adminData.generalParameters['specialTimeArray'];\r\n\r\n\t\t\t// todo\r\n\t\t\t//this.specialTimeEnabledArray\t\t= Number(this.adminData.generalParameters['specialTimeEnabled']) \t=== 1;\r\n }\r\n\r\n //Initialisation des scénarios\r\n if (this.adminData.scenariosAvailable && this.adminData.scenariosAvailable.length > 0)\r\n {\r\n this.scenarioSelected\t\t= this.adminData.scenariosAvailable[0];\r\n this.titleScenarioSelected\t= this.scenarioSelected.title;\r\n this.scenariosAvailable\t\t= this.adminData.scenariosAvailable;\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n
\r\n
\r\n\t\t\t
\r\n\t\t\t\t{{ 'adminSystem.confirmDeleteScenario' | translate }}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n
\r\n
\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\r\n\r\n\r\n@Component({\r\n selector:\t\t'confirm-delete-processus-modal',\r\n templateUrl:\t'confirmDeleteProcessusModal.component.html',\r\n styleUrls:\t\t['./confirmDeleteProcessusModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class ConfirmDeleteProcessusModalComponent\r\n{\r\n\tpublic scenario: any;\r\n\r\n\r\n\tconstructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tif (data && data.scenario)\r\n\t\t{\r\n\t\t\tthis.scenario = data.scenario;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic validate()\r\n\t{\r\n\t\tthis.dialogRef.close(true);\r\n\t}\r\n\r\n\r\n\tpublic close()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n}\r\n","
\r\n
\r\n
\r\n\t\t\t
\r\n\t\t\t\t{{titleModal}}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
close
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n
\r\n
\r\n","import { Component, Inject, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\r\n\r\nimport { AdminData }\t\t\t from '../../../../providers/admin-data';\r\nimport { AdminService } from '../../../../services/admin.service';\r\n\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n@Component({\r\n selector:\t\t'edition-processus-modal',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'editionProcessusModal.component.html',\r\n styleUrls:\t\t['./editionProcessusModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class EditionProcessusModalComponent implements OnInit, OnDestroy\r\n{\r\n\r\n public itemSelected:\t\tstring\t= 'infos';\r\n public titleModal:\t\t\tstring\t= 'Edition scénario';\r\n public titleValidateButton: string\t= 'Ajouter un scénario';\r\n public objProcess:\t\t\tany\t\t= {};\r\n\r\n\r\n /**\r\n * \r\n * @param dialogRef \r\n * @param adminService \r\n * @param adminData \r\n * @param data \r\n */\r\n constructor(public dialogRef:\t\tMatDialogRef,\r\n public adminService:\tAdminService,\r\n public adminData:\t\tAdminData,\r\n @Inject(MAT_DIALOG_DATA) public data: any)\r\n {\r\n\t\tthis.objProcess =\r\n\t\t{\r\n\t\t\tid:\t\t\t\tthis.adminData.scenariosAvailable.length,\r\n\t\t\ttitle:\t\t\t'',\r\n\t\t\tdescription:\t'',\r\n\t\t\tsteps:\t\t\t[]\r\n\t\t};\r\n\t}\r\n\t\r\n\r\n /**\r\n * \r\n */\r\n public ngOnInit()\r\n\t{\r\n }\r\n\r\n\r\n /**\r\n * \r\n */\r\n\tpublic ngOnDestroy()\r\n\t{\r\n\r\n }\r\n\r\n\r\n /**\r\n * \r\n * @param rubrique \r\n */\r\n public switch_tab(rubrique: string)\r\n {\r\n this.itemSelected = rubrique;\r\n }\r\n\r\n\r\n /**\r\n * \r\n */\r\n public canValidateNewProcess()\r\n {\r\n let result = true;\r\n\r\n if (this.objProcess.title === undefined || this.objProcess.title === '' || this.objProcess.steps.length === 0) \r\n\t\t{\r\n result = false;\r\n }\r\n\r\n return result;\r\n }\r\n\t\r\n\r\n /**\r\n * \r\n */\r\n public validate()\r\n {\r\n let scenariosToSend = this.adminData.scenariosAvailable.concat(this.objProcess);\r\n\r\n\t\tlet datas: any =\r\n\t\t\t{\r\n\t\t\t\tscenarios: JSON.stringify(scenariosToSend)\r\n\t\t\t};\r\n\t\tthis.adminService.updateAdminParameters(datas);\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n /**\r\n * \r\n */\r\n public close()\r\n {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{{titleModal}}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\r\n\r\n\r\n@Component({\r\n selector:\t\t'infos-delete-processus-modal',\r\n templateUrl:\t'infosDeleteProcessusModal.component.html',\r\n styleUrls:\t\t['./infosDeleteProcessusModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class InfosDeleteProcessusModalComponent\r\n{\r\n\tpublic deleted:\t\t\tany;\r\n\tpublic scenarioUsed:\tany;\r\n\tpublic scenario:\t\tany;\r\n\tpublic titleModal:\t\tany;\r\n\tpublic messageModal:\tany;\r\n\t\r\n\r\n constructor(public dialogRef:\t\tMatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any)\r\n {\r\n\t\tif (data && data.deleted !== undefined && data.scenarioUsed !== undefined && data.scenario !== undefined)\r\n\t\t{\r\n\t\t\tthis.deleted\t\t= data.deleted;\r\n\t\t\tthis.scenarioUsed\t= data.scenarioUsed;\r\n\t\t\tthis.scenario\t\t= data.scenario;\r\n\r\n\t\t\tif (this.deleted === true)\r\n\t\t\t{\r\n\t\t\t\tthis.titleModal\t\t= 'Confirmation suppression de scénario';\r\n\t\t\t\tthis.messageModal\t= 'Le scénario suivant a bien été supprimé :';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.titleModal = 'Erreur suppression de scénario';\r\n\r\n\t\t\t\tif (this.scenarioUsed === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.messageModal = 'Le scénario suivant n\\'as pas pu être supprimé car il est utilisé par une épreuve existante :';\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.messageModal = 'Le scénario suivant n\\'as pas pu être supprimé, veuillez rééssayer ultérieurement :';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public validate()\r\n {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
\r\n\r\n
\r\n\t
\r\n\t\t
\r\n\t\t

Merci d'ajouter ou de sélectionner un utilisateur

\r\n\t\t\r\n\t
\r\n
\r\n\r\n
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\tAdministrateur\r\n\t\t\t\tUtilisateur\r\n\t\t\t\tImprimeur\r\n\t\t\t\tSuper Administrateur\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{{selectedUser.mail}}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{{ selectedUser.infos.nom }}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{{ selectedUser.infos.prenom }}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t{{selectedUser.publics.fixe1}}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t{{selectedUser.publics.mobile1}}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{{profession}}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{{ getCodeMachine(selectedUser) }}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n\r\n
\r\n\t \r\n
\r\n","import { Component, ViewEncapsulation, OnInit, OnDestroy }\tfrom '@angular/core';\r\nimport { MatDialog }\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\nimport { UserData }\t\t\t\t\t\t\t\tfrom '../../../providers/user-data';\r\nimport { UserModalComponent }\t\t\t\t\tfrom '../../../modal/user/userModal.component';\r\nimport { ConfirmResetRsaModalComponent }\t\tfrom '../../../modal/confirmResetRsa/confirmResetRsaModal.component';\r\nimport { ConfirmDeleteUserModalComponent }\t\tfrom '../../../modal/confirmDeleteUser/confirmDeleteUserModal.component';\r\nimport { ConfirmGiveFilesKeysModalComponent }\tfrom '../../../modal/confirmGiveFilesKeys/confirmGiveFilesKeysModal.component';\r\n\r\nimport { UserService } from '../../../services/user.service';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n@Component({\r\n selector:\t\t'app-admin-users',\r\n encapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'./admin-users.component.html',\r\n styleUrls:\t\t['./admin-users.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class AdminUsersComponent implements OnInit, OnDestroy\r\n{\r\n public users:\t\t\t\tany[] = [];\r\n public selectedUser:\t\tany;\r\n public moUserSubscription:\tany;\r\n\r\n public userDataChanged:\t\tany\t\t= {};\r\n public hasUserDataChanger:\tboolean = false;\r\n\r\n public arrayProfessions:\tstring[] = [];\r\n public arrayMatieres:\t\tstring[] = [];\r\n\r\n constructor(public userData:\tUserData,\r\n public userService: UserService,\r\n public dialog:\t\tMatDialog)\r\n {\r\n this._initUsers();\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public ngOnInit()\r\n\t{\r\n\r\n this.moUserSubscription = this.userData.globalEmitter.subscribe((value: string) =>\r\n\t\t{\r\n\t\t\t//Evènement récupéré lorsqu'un nouvel utilisateur à été ajouté\r\n\t\t\t//On ajoute donc le nouvel utilisateur dans la liste\r\n\t\t\tif (value[0] === 'user::add')\r\n\t\t\t{\r\n\t\t\t\tif (value[1])\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.displayDetailUser(value[1]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (value[0] === 'user::update')\r\n\t\t\t{\r\n\t\t\t\tthis._initUsers();\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n public ngOnDestroy()\r\n\t{\r\n\t\tif (this.moUserSubscription)\r\n\t\t{\r\n\t\t\tthis.moUserSubscription.unsubscribe();\r\n\t\t}\r\n }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param user \r\n\t */\r\n public displayDetailUser(user: any)\r\n {\r\n if (user)\r\n {\r\n this.userDataChanged\t= {};\r\n this.hasUserDataChanger = false;\r\n\t\t\tthis.selectedUser\t\t= user;\r\n\t\t\tthis.arrayProfessions = this.selectedUser.publics.professions;\r\n\t\t\t\r\n\t\t\tif (typeof this.arrayProfessions === 'string')\r\n\t\t\t{\r\n\t\t\t\tthis.arrayProfessions = JSON.parse(this.arrayProfessions);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.arrayProfessions = this.arrayProfessions;\r\n\t\t\t}\r\n\r\n\t\t\tthis.arrayMatieres = this.selectedUser.publics.matieres;\r\n\r\n\t\t\tif (typeof this.arrayMatieres === 'string')\r\n\t\t\t{\r\n\t\t\t\tthis.arrayMatieres = JSON.parse(this.arrayMatieres);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.arrayMatieres = this.arrayMatieres;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic addNewUser()\r\n\t{\r\n\t\tlet dialogRef = this.dialog.open(UserModalComponent,\r\n\t\t{\r\n\t\t\theight:\t\t\t'80%',\r\n\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\twidth:\t\t\t'75%',\r\n\t\t\tdisableClose:\ttrue,\r\n\t\t});\r\n\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t{\r\n\t\t});\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic displayModalAccount()\r\n\t{\r\n\t\tlet dialogRef = this.dialog.open(UserModalComponent,\r\n\t\t{\r\n\t\t\theight:\t\t\t'80%',\r\n\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\twidth:\t\t\t'75%',\r\n\t\t\tdisableClose:\ttrue,\r\n\t\t\tdata:\r\n\t\t\t{\r\n\t\t\t\t'edition':\t\ttrue,\r\n\t\t\t\tuserSelected:\tthis.selectedUser\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t{\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic toggleEnableAccount()\r\n\t{\r\n\t\tif (this.selectedUser.enabled === true)\r\n\t\t{\r\n\t\t\t//On désactive le compte\r\n\t\t\tthis.userService.toggleEnabledUser(this.selectedUser.mail, false);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t//On le réactive\r\n\t\t\tthis.userService.toggleEnabledUser(this.selectedUser.mail, true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Réinitialisation de la clé RSA de l'utilisateur selectionné\r\n\t */\r\n\tpublic resetRsaKey(user: any)\r\n\t{\r\n\t\tconst dialogRef = this.dialog.open(ConfirmResetRsaModalComponent,\r\n\t\t{\r\n\t\t\theight:\t\t\t'200px',\r\n\t\t\tpanelClass:\t\t'responsive_mini_modal',\r\n\t\t\twidth:\t\t\t'50%',\r\n\t\t\tdisableClose:\ttrue,\r\n\t\t\tdata:\r\n\t\t\t{\r\n\t\t\t\tuser: user\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t{\r\n\t\t\tif (result === true && user.mail)\r\n\t\t\t{\r\n\t\t\t\tthis.userService.resetRsaKeyUSer(user.mail);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic giveFilesKeys(user: any)\r\n\t{\r\n\t\tconst dialogRef = this.dialog.open(ConfirmGiveFilesKeysModalComponent,\r\n\t\t{\r\n\t\t\theight:\t\t\t'250px',\r\n\t\t\tpanelClass:\t\t'responsive_mini_modal',\r\n\t\t\twidth:\t\t\t'50%',\r\n\t\t\tdisableClose:\ttrue,\r\n\t\t\tdata:\r\n\t\t\t{\r\n\t\t\t\tuser: user\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t{\r\n\t\t\tif (result === true)\r\n\t\t\t{\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic deleteAccount()\r\n\t{\r\n\t\tconst dialogRef = this.dialog.open(ConfirmDeleteUserModalComponent,\r\n\t\t{\r\n\t\t\theight:\t\t\t'200px',\r\n\t\t\twidth:\t\t\t'50%',\r\n\t\t\tpanelClass:\t\t'responsive_mini_modal',\r\n\t\t\tdisableClose:\ttrue,\r\n\t\t\tdata:\r\n\t\t\t{\r\n\t\t\t\t'user': this.selectedUser,\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) => \r\n\t\t{\r\n\t\t\tif (result === true)\r\n\t\t\t{\r\n\t\t\t\tthis.userService.deleteUser(this.selectedUser.mail);\r\n\t\t\t\tthis.selectedUser = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate _initUsers()\r\n\t{\r\n\t\tthis.users\t\t\t= [];\r\n\t\tconst objUsers\t\t= this.userData.getUsers();\r\n\t\tconst currentUserId\t= this.userData.getUserId();\r\n\r\n\t\tlet newUser: any;\r\n\t\tfor (const key in objUsers)\r\n\t\t{\r\n\t\t\tif (currentUserId !== key)\r\n\t\t\t{\r\n\t\t\t\tnewUser\t\t\t\t\t= objUsers[key];\r\n\t\t\t\tnewUser.completeName\t= newUser.infos.nom + ' ' + newUser.infos.prenom;\r\n\t\t\t\tthis.users.push(newUser);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param pjUser \r\n\t */\r\n\tpublic isSelected(pjUser: any)\r\n\t{\r\n\t\tlet bReturn = false;\r\n\t\tif (this.selectedUser)\r\n\t\t{\r\n\t\t\tif (pjUser.mail === this.selectedUser.mail)\r\n\t\t\t{\r\n\t\t\t\tbReturn = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn bReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * A revoir car un super admin doit pouvoir delete un admins\r\n\t */\r\n\tpublic isCurrentUserAdminOrSuperUser()\r\n\t{\r\n\t\tlet bReturn = false;\r\n\r\n\t\tif (this.selectedUser)\r\n\t\t{\r\n\t\t\tif (this.selectedUser.publics && (this.selectedUser.publics.isAdmin === 'true' || this.selectedUser.publics.isSuperUser === 'true'))\r\n\t\t\t{\r\n\t\t\t\tbReturn = true;\r\n\t\t\t} \r\n\r\n\t\t\t// Si l'user courant est super, il doit pouvoir delete un admin\r\n\t\t\tif (this.selectedUser.publics && (this.selectedUser.publics.isAdmin === 'true' && this.userData.status === 'superviseur'))\r\n\t\t\t{\r\n\t\t\t\tbReturn = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn bReturn;\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic hasCurrentUserRsaKey()\r\n\t{\r\n\t\tlet bReturn = false;\r\n\r\n\t\tif (this.selectedUser)\r\n\t\t{\r\n\t\t\tif (this.selectedUser.publics && this.selectedUser.publics.rsaPublicKey !== undefined && this.selectedUser.publics.rsaPublicKey !== '')\r\n\t\t\t{\r\n\t\t\t\tbReturn = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn bReturn;\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic canMakeActionOnCurrentUser()\r\n\t{\r\n\t\tlet bReturn = true;\r\n\t\t// Si l'utlisateur courant est un super user, il ne peut pas faire d'action sur les autres super user\r\n\t\tif (this.userData.isSuperviseur() === true)\r\n\t\t{\r\n\t\t\tif (this.selectedUser.publics && this.selectedUser.publics.isSuperUser === 'true')\r\n\t\t\t{\r\n\t\t\t\tbReturn = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Si l'utlisateur courant est admin, il ne peut pas faire d'action sur les autres super user et admin\r\n\t\tif (this.userData.isAdmin() === true)\r\n\t\t{\r\n\t\t\tif (this.selectedUser.publics && (this.selectedUser.publics.isSuperUser === 'true' || this.selectedUser.publics.isAdmin === 'true'))\r\n\t\t\t{\r\n\t\t\t\tbReturn = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Si l'utlisateur courant est un user simple, il ne peut rien faire (de toute facon il ne devrait même pas être la)\r\n\t\tif (this.userData.isSimpleUser() === true)\r\n\t\t{\r\n\t\t\tbReturn = false;\r\n\t\t}\r\n\r\n\t\treturn bReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param user \r\n\t */\r\n\tpublic getCodeMachine(user: any)\r\n\t{\r\n\t\tlet result = '';\r\n\r\n\t\tif (user && user.privates && user.privates.fp)\r\n\t\t{\r\n\t\t\tlet fp = user.privates.fp;\r\n\t\t\tif (typeof fp === 'string')\r\n\t\t\t{\r\n\t\t\t\tfp = JSON.parse(fp);\r\n\t\t\t}\r\n\r\n\t\t\tif (fp.code)\r\n\t\t\t{\r\n\t\t\t\tresult = fp.code;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","
\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, ViewEncapsulation, ViewChild, OnInit }\t\tfrom '@angular/core';\r\n\r\nimport { AppComponent }\tfrom '../../app.component';\r\nimport { Router, ActivatedRoute, NavigationEnd }\t\tfrom '@angular/router';\r\n\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\n\r\n\r\n@Component({\r\n selector:\t\t'admin',\r\n templateUrl:\t'./admin.component.html',\r\n encapsulation:\tViewEncapsulation.None,\r\n styleUrls:\t\t['./admin.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class AdminComponent implements OnInit\r\n{\r\n\tpublic panelSelected:\t\t\t\t\tnumber\t= 0;\r\n public isChatPanelSelected:\t\t\t\tboolean\t= true;\r\n public isForumtPanelSelected:\t\t\tboolean\t= false;\r\n public isNotificationstPanelSelected:\tboolean\t= false;\r\n public mbLoadState:\t\t\t\t\t\tboolean\t= false;\r\n\tpublic matTabs:\t\t\t\t\t\t\tany;\r\n\r\n /**\r\n * Creates an instance of CommunityPage.\r\n *\r\n * @param {PopoverController} popoverCtrl\r\n * @param {NavController} nav\r\n *\r\n * @memberOf CommunityPage\r\n */\r\n\tconstructor( public userData:\tUserData,\r\n\t\t\t\t public router:\t\tRouter)\r\n\t{\r\n\t\tthis.panelSelected = 0;\r\n\r\n\t\t//\tToodo => récup l'index en cours, et en fonction on affiche\r\n\t\t//\tappComponent.setPageTitle('Communauté - Messagerie');\r\n\t\t//this.matTabs.position = 1;\r\n\r\n\t\tif (!this.userData.isAdmin() && !this.userData.isSuperviseur())\r\n\t\t{\r\n\t\t\tthis.router.navigate(['/home']);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.panelSelected = 0;\r\n\t\tthis.refreshTab(0);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnChange()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t *\r\n\t * @memberOf CommunityPage\r\n\t */\r\n\tpublic updateSegment(): void\r\n\t{\r\n\t\t// this.isChatPanelSelected \t\t\t= this.panelSelected === 0 ? true : false\t\t;\r\n\t\t// this.isForumtPanelSelected \t\t\t= this.panelSelected === 1 ? true : false\t\t;\r\n\t\t// this.isNotificationstPanelSelected \t= this.panelSelected === 2 ? true : false;\r\n\t}\r\n\r\n\r\n /**\r\n *\r\n */\r\n\tpublic addCommunityItem(nameButton: any)\r\n\t{\r\n\t\tswitch (nameButton)\r\n\t\t{\r\n\t\t\tcase 'newTopic':\r\n\t\t\tbreak;\r\n\t\t\tcase 'publicConversation':\r\n\t\t\tcase 'privateGroup':\r\n\t\t\t//\t\t\tcase 'privateConversation':\r\n\t\t\t//\t\t\t\tlet popover = this.popoverCtrl.create(PopoverCreateChat, {type: nameButton}, {cssClass: 'popover-create-chat'});\r\n\t\t\t//\t\t\t\tpopover.present();\r\n\t\t\t//\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Retourne true une fois la page chargée\r\n\t *\r\n\t * @returns\r\n\t *\r\n\t * @memberOf WorkspacePage\r\n\t */\r\n\tpublic isLoaded(): boolean\r\n\t{\r\n\t\treturn this.mbLoadState;\r\n\t}\r\n\r\n\r\n /**\r\n * Display message for chat, topic and notifications creation. Display equally error messages\r\n *\r\n * @returns\r\n *\r\n * @memberOf WorkspacePage\r\n */\r\n\tpublic presentToast(message: any)\r\n\t{\r\n\t\t//\t\tlet toast = this.toastCtrl.create({\r\n\t\t//\t\t\tmessage: message,\r\n\t\t//\t\t\tduration: 3000\r\n\t\t//\t\t});\r\n\t\t//\t\ttoast.present();\r\n \t}\r\n\r\n\r\n\t/**\r\n\t * Call on every modification of the tab\r\n\t */\r\n\tpublic refreshTab(e: any)\r\n\t{\r\n\r\n\t\t// En fonction de l'index on va choisir quelle section est à afficher\r\n\t}\r\n}\r\n","
\r\n\r\n\t
\r\n\t\t keyboard_arrow_left\r\n\r\n\t
\r\n\t
\r\n\t\t{{ viewDate | calendarDate:(view + 'ViewTitle'):'fr' }}\r\n\t
\r\n\t\r\n\t\tkeyboard_arrow_right\r\n\t
\r\n\t
\r\n
\r\n\r\n
\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n
\r\n\r\n","import { Component, ChangeDetectionStrategy, EventEmitter, ViewChild, Output, TemplateRef, ViewEncapsulation, OnInit, OnDestroy }\tfrom '@angular/core';\r\n\r\nimport { startOfMonth, endOfMonth, isSameDay, isSameMonth }\tfrom 'date-fns';\r\nimport { CalendarEventTimesChangedEvent }\t\t\t\t\tfrom 'angular-calendar';\r\n\r\nimport { Subject }\t\t\t\t\tfrom 'rxjs';\r\nimport { UserData }\t\t\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData }\t\t\tfrom '../../providers/workspace-data';\r\nimport { TaskData }\t\t\t\t\tfrom '../../providers/task-data';\r\nimport { SocketService }\t\t\tfrom '../../services/socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../../models/message.model';\r\n\r\n\r\nconst colors: any =\r\n\t{\r\n\t\tred:\r\n\t\t{\r\n\t\t\tprimary:\t'#ad2121',\r\n\t\t\tsecondary:\t'#FAE3E3'\r\n\t\t},\r\n\t\tblue:\r\n\t\t{\r\n\t\t\tprimary:\t'#1e90ff',\r\n\t\t\tsecondary:\t'#D1E8FF'\r\n\t\t},\r\n\t\tyellow:\r\n\t\t{\r\n\t\t\tprimary:\t'#e3bc08',\r\n\t\t\tsecondary:\t'#FDF1BA'\r\n\t\t}\r\n\t};\r\n\r\n\r\n@Component({\r\n\tchangeDetection:\tChangeDetectionStrategy.OnPush,\r\n\tselector:\t\t\t'app-calendar',\r\n\tencapsulation:\t\tViewEncapsulation.None,\r\n\ttemplateUrl:\t\t'./calendar.component.html',\r\n\tstyleUrls:\t\t\t['./calendar.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class CalendarComponent implements OnInit, OnDestroy\r\n{\r\n\r\n\t@ViewChild('modalContent') modalContent: TemplateRef;\r\n\t@Output() viewDateChange: EventEmitter\t= new EventEmitter();\r\n\t@Output() clickDateEvent: EventEmitter\t\t= new EventEmitter();\r\n\r\n\r\n\tpublic refresh: Subject = new Subject();\r\n\r\n\tpublic view:\t\t\t\tstring\t= 'month';\r\n\tpublic viewDate:\t\t\tDate\t= new Date();\r\n\tpublic events:\t\t\t\tany[]\t= [];\r\n\tpublic socket:\t\t\t\tany\t\t= undefined;\r\n\tpublic activeDayIsOpen:\t\tboolean = true;\r\n\tpublic moDateSubscription:\tany;\r\n\r\n\tpublic modalData:\r\n\t{\r\n\t\taction: string;\r\n\t\tevent:\tany;\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param userData \r\n\t * @param socketService \r\n\t * @param workspaceData \r\n\t * @param taskData \r\n\t */\r\n\tconstructor(public userData:\t\tUserData,\r\n\t\t\t\tpublic socketService:\tSocketService,\r\n\t\t\t\tpublic workspaceData:\tWorkspaceData,\r\n\t\t\t\tpublic taskData:\t\tTaskData)\r\n\t{\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.moDateSubscription = this.userData.globalEmitter.subscribe((value: string) =>\r\n\t\t{\r\n\t\t\t//Evènement récupéré lorsqu'un nouveau classeur à été ajouté\r\n\t\t\t//On ajoute donc le dernier elément de la structure dans user data\r\n\t\t\t//dans les classeurs du composant\r\n\t\t\tif (value === 'calendar:newDate')\r\n\t\t\t{\r\n\t\t\t\tthis._initCalendarFromUserDatas();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tthis.viewDateChange.subscribe((viewDate: any) =>\r\n\t\t{\r\n\r\n\t\t\tlet month = (viewDate.getFullYear() * 100 + (viewDate.getMonth() + 1));\r\n\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t'what': SocketWhat.request,\r\n\t\t\t\t\t\t\t'cmd':\t'calendar',\r\n\t\t\t\t\t\t\t'args': { month: month }\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//On apelle une fois l'initialisation pour traiter les éventuelles\r\n\t\t//dates existantes dans le localstorage\r\n\t\tthis._initCalendarFromUserDatas();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnDestroy()\r\n\t{\r\n\t\tif (this.moDateSubscription)\r\n\t\t{\r\n\t\t\tthis.moDateSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ouvre un évent à partir d'un clic sur un jour\r\n\t */\r\n\tpublic dayClicked({ date, events }: { date: Date; events: any[] }): void\r\n\t{\r\n\t\tif (isSameMonth(date, this.viewDate))\r\n\t\t{\r\n\t\t\tif ((isSameDay(this.viewDate, date) && this.activeDayIsOpen === true) || events.length === 0 )\r\n\t\t\t{\r\n\t\t\t\tthis.activeDayIsOpen = false;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.activeDayIsOpen\t= true;\r\n\t\t\t\tthis.viewDate\t\t\t= date;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param param0 \r\n\t */\r\n\tpublic eventTimesChanged({event, newStart, newEnd }: CalendarEventTimesChangedEvent): void\r\n\t{\r\n\t\tevent.start = newStart;\r\n\t\tevent.end\t= newEnd;\r\n\r\n\t\tthis.handleEvent('Dropped or resized', event);\r\n\t\tthis.refresh.next();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param action \r\n\t * @param event \r\n\t */\r\n\tpublic handleEvent(action: string, event: any): void\r\n\t{\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tlet idSplitted = event.id.split('::');\r\n\t\t\tif (idSplitted.length > 1 && idSplitted[0] === '*task')\r\n\t\t\t{\r\n\t\t\t\tlet task = this.taskData.getTaskById(idSplitted[1]);\r\n\t\t\t\tthis.clickDateEvent.emit(task);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// this.modalData = { event, action };\r\n\t\t// this.modal.open(this.modalContent, { size: 'lg' });\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate _initCalendarFromUserDatas()\r\n\t{\r\n\t\tlet calendarDatas\t= this.userData.getCalendarDatas();\r\n\t\tthis.events\t\t\t= [];\r\n\r\n\t\tfor (let dateKey of Object.keys(calendarDatas))\r\n\t\t{\r\n\t\t\tif (calendarDatas[dateKey])\r\n\t\t\t{\r\n\t\t\t\tlet date = calendarDatas[dateKey];\r\n\r\n\t\t\t\tif (date.unique)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet objDate = new Date(date.unique.date);\r\n\t\t\t\t\tthis.events.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tstart: objDate,\r\n\t\t\t\t\t\t\ttitle: date.unique.libelle,\r\n\t\t\t\t\t\t\tcolor: colors.blue,\r\n\t\t\t\t\t\t\tid: date.unique.id\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (date.inter)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet objDate = new Date(date.inter.date);\r\n\t\t\t\t\tthis.events.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tstart:\tstartOfMonth(objDate),\r\n\t\t\t\t\t\t\tend:\tendOfMonth(objDate),\r\n\t\t\t\t\t\t\ttitle:\tdate.inter.libelle,\r\n\t\t\t\t\t\t\tcolor:\tcolors.yellow,\r\n\t\t\t\t\t\t\tid: \tdate.inter.id\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (date.debut)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet objDate = new Date(date.debut.date);\r\n\r\n\t\t\t\t\tlet newEvent: any =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tstart:\tobjDate,\r\n\t\t\t\t\t\t\tend:\tendOfMonth(objDate),\r\n\t\t\t\t\t\t\ttitle:\tdate.debut.libelle,\r\n\t\t\t\t\t\t\tcolor:\tcolors.yellow,\r\n\t\t\t\t\t\t\tid: \tdate.debut.id\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (date.fin)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnewEvent.end = new Date(date.fin.date);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.events.push(newEvent);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.refresh.next();\r\n\t}\r\n}","\r\n
\r\n\t\r\n
","import { Component, Input, ViewChild, ElementRef, HostListener, AfterViewInit, AfterViewChecked, ViewEncapsulation } from '@angular/core';\r\n\r\ndeclare var Caman: any;\r\n\r\n@Component({\r\n\tselector:\t\t'app-canvas',\r\n\ttemplateUrl:\t'./canvas.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./canvas.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class CanvasComponent implements AfterViewInit, AfterViewChecked\r\n{\r\n\r\n\t@ViewChild('img') img:\t\tElementRef;\r\n\t@Input() src:\t\t\t\tstring;\r\n\t@Input() containerWidth:\tnumber;\r\n\t@Input() containerHeight:\tnumber;\r\n\r\n\t@Input()\r\n set canvasId(canvasId: any)\r\n {\r\n this.idCanvas = canvasId;\r\n }\r\n\r\n\tpublic ctx:\t\t\t\t\tCanvasRenderingContext2D;\r\n\tpublic element:\t\t\t\tHTMLImageElement;\r\n\tpublic elementOriginal:\t\tHTMLImageElement;\r\n\r\n\tpublic canvas:\t\tany;\r\n\tpublic idCanvas:\tstring;\r\n\tpublic width:\t\tnumber;\r\n\tpublic height:\t\tnumber;\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param canvas \r\n\t * @param img \r\n\t */\r\n\tconstructor(canvas: ElementRef, img: ElementRef)\r\n\t{\r\n\t\tthis.width\t\t= window.innerWidth;\r\n\t\tthis.height\t\t= window.innerHeight;\r\n\t\tthis.idCanvas\t= 'target5';\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngAfterViewInit()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération des éléments de la page pour transformation\r\n\t\t// ---------------------------------------\r\n\t\tthis.canvas\t= document.getElementById(this.idCanvas);\r\n\t\tif (this.canvas)\r\n\t\t{\r\n\t\t\tthis.ctx\t\t\t\t= this.canvas.getContext('2d');\r\n\t\t\tthis.element\t\t\t= this.img.nativeElement;\r\n\t\t\tthis.elementOriginal\t= this.img.nativeElement;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sale => julien's tips\r\n\t */\r\n\tpublic getSrc()\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération de la source de l'image\r\n\t\t// ---------------------------------------\r\n\t\tthis.width\t= this.img.nativeElement.clientWidth;\r\n\t\tthis.height = this.img.nativeElement.clientHeight;\r\n\t\tthis.canvas = document.getElementById(this.idCanvas);\r\n\r\n\t\treturn this.src;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic getWidth()\r\n\t{\r\n\t\treturn this.width;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic getHeight()\r\n\t{\r\n\t\treturn this.height;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngAfterViewChecked()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Trigger au changement de l'url de l'image (modif par l'user)\r\n\t\t// ---------------------------------------\r\n\t\tthis.img.nativeElement.onload = () =>\r\n\t\t{\r\n\t\t\tthis.canvas\t\t= document.getElementById(this.idCanvas);\r\n\t\t\tthis.element\t= this.img.nativeElement;\r\n\r\n\t\t\tthis.render();\r\n\t\t};\r\n\r\n\t\tthis.render();\r\n\t}\r\n\r\n\r\n\t@HostListener('window:resize')\r\n\tpublic resize()\r\n\t{\r\n\t\tthis.render();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic clear()\r\n\t{\r\n\t\tthis.ctx.clearRect(0, 0, this.width, this.height);\r\n\t}\r\n\t\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic render()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Une fois l'image découpé on la place dans le canvas pour la découpe\r\n\t\t// ---------------------------------------\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.canvas\t\t= document.getElementById(this.idCanvas);\r\n\r\n\t\t\tif (this.canvas)\r\n\t\t\t{\r\n\t\t\t\tthis.ctx\t\t= this.canvas.getContext('2d');\r\n\t\t\t\tthis.clear();\r\n\r\n\t\t\t\tif (this.containerWidth && this.containerHeight)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet coeffResize;\r\n\t\t\t\t\tlet newX = 0;\r\n\t\t\t\t\tlet newY = 0;\r\n\r\n\t\t\t\t\tlet realContainerWidth;\r\n\t\t\t\t\tlet realContainerHeight;\r\n\r\n\t\t\t\t\trealContainerWidth\t= this.containerWidth\t> this.canvas.width\t\t? this.canvas.width\t\t: this.containerWidth;\r\n\t\t\t\t\trealContainerHeight = this.containerHeight\t> this.canvas.height\t? this.canvas.height\t: this.containerHeight;\r\n\r\n\t\t\t\t\tif (this.width > this.height)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcoeffResize = this.width / realContainerWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcoeffResize = this.height / realContainerHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.width\t= Math.round(this.width / coeffResize);\r\n\t\t\t\t\tthis.height = Math.round(this.height / coeffResize);\r\n\r\n\t\t\t\t\tnewX = Math.round((realContainerWidth\t- this.width)\t/ 2);\r\n\t\t\t\t\tnewY = Math.round((realContainerHeight\t- this.height)\t/ 2);\r\n\r\n\t\t\t\t\tnewX = newX > 0 ? newX : 0;\r\n\t\t\t\t\tnewY = newY > 0 ? newY : 0;\r\n\r\n\t\t\t\t\tthis.ctx.drawImage(this.element, newX, newY, this.width, this.height);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.ctx.drawImage(this.element, 0, 0, this.width, this.height);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(error) \r\n\t\t{\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t}\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule }\tfrom '@angular/common';\r\n\r\nimport { CanvasComponent } from './canvas.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n CanvasComponent,\r\n ],\r\n imports: [\r\n ],\r\n exports: [\r\n CanvasComponent\r\n ]\r\n})\r\nexport class CanvasModule {}\r\n","
\r\n\t
\r\n\t\t
{{ 'chat.chatWith' | translate }} {{chatData.selectedRoom.displayName}}
\r\n\t\t
{{chatData.selectedRoom.description}}
\r\n\t\t
{{ 'chat.created' | translate }}\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\r\n\t\t
\r\n\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n
","import { Component, Input, ViewEncapsulation, OnInit, EventEmitter, Output, OnChanges, ViewChild, ElementRef } from '@angular/core';\r\n\r\nimport { SocketService }\tfrom '../../../services/socket.service';\r\nimport { ChatHttpService }\tfrom '../../../services/http/chatHttp.service';\r\nimport { RoomService }\t\tfrom '../../../services/room.service';\r\nimport { UserData }\t\t\tfrom '../../../providers/user-data';\r\nimport { ChatData }\t\t\tfrom '../../../providers/chat-data';\r\n\r\ndeclare var socketCluster: any;\r\nimport { timer as Timer} from 'rxjs/observable/timer';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n//\t\tScrollGlue ,\r\n//declare var emoji = require('node-emoji')\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'app-chat-detail',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\ttemplateUrl:\t'./chat-detail.component.html',\r\n\toutputs:\t\t['_sendMessageEmitter: onSendMessage'],\r\n\tstyleUrls:\t\t['./chat-detail.component.scss']\r\n\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class ChatDetailComponent implements OnChanges, OnInit\r\n{\r\n\t@Input() displayMessage:\tboolean;\r\n\t@Input() isRoomSelected:\tany;\r\n\t@ViewChild('message2') vc:\t\t\tElementRef;\r\n\t@ViewChild('textArea') textArea:\tElementRef;\r\n\r\n\tpublic _sendMessageEmitter: EventEmitter = new EventEmitter();\r\n\r\n\tpublic lastMessageTix:\t\tstring;\r\n\tpublic currentUser:\t\t\tstring;\r\n\tpublic messages:\t\t\tany;\r\n\tpublic message:\t\t\t\tany = '';\r\n\tpublic mustScrollBottom:\tboolean = false;\r\n\r\n\tlastDate:\tstring;\r\n\tdateObj:\tany;\r\n\tmonth:\t\tany; //months from 1-12\r\n\tday:\t\tany;\r\n\tyear:\t\tany;\r\n\r\n\r\n\t/**\r\n\t * Creates an instance of ChatDetail.\r\n\t *\r\n\t * @param { ChatService } chatService\r\n\t *\r\n\t * @memberOf ChatDetail\r\n\t */\r\n\tconstructor(public socketService:\tSocketService,\r\n\t\t\t\tpublic userData:\t\tUserData,\r\n\t\t\t\tpublic roomService:\t\tRoomService,\r\n\t\t\t\tpublic chatData:\t\tChatData,\r\n\t\t\t\tpublic chatHttpService:\tChatHttpService)\r\n\t{\r\n\r\n\t\t// récupération de l'utilisateur en cours\r\n\t\tthis.currentUser\t= userData.getUserId();\r\n\t\tthis.dateObj\t\t= new Date();\r\n\t\tthis.month\t\t\t= this.dateObj.getUTCMonth() + 1; //months from 1-12\r\n\t\tthis.day\t\t\t= this.dateObj.getUTCDate();\r\n\t\tthis.year\t\t\t= this.dateObj.getUTCFullYear();\r\n\r\n\t\tthis.lastDate = this.year + '' + this.month + '' + this.day;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\t// Récupération de l'utilisateur courant, pour l'emission des sockets\r\n\t\tthis.getMessagesAvailable();\r\n\t\tthis.mustScrollBottom = true;\r\n\t\tthis.userData.globalEmitter.subscribe((value: any[]) => this.chatControl(value[0], value[1]),\r\n\t\t\t(error: Error) => console.log(error),\r\n\t\t\t() => console.log('done'));\r\n\r\n\t\tthis.scrollToBottom();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param key \r\n\t * @param value \r\n\t */\r\n\tpublic chatControl(key: any, value: any)\r\n\t{\r\n\t\tif(key === 'notify' && value === 'scrollBottom')\r\n\t\t{\r\n\t\t\tthis.scrollToBottom();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tngAfterViewChecked()\r\n\t{\r\n\t\tif (this.mustScrollBottom === true)\r\n\t\t{\r\n\t\t\tthis.mustScrollBottom = false;\r\n\t\t\tthis.scrollToBottom();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tscrollToBottom(): void\r\n\t{\r\n\t\tlet timer2 = Timer(100);\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\ttimer2.subscribe((t2: any) =>\r\n\t\t{\r\n\t\t\tthis.vc.nativeElement.scrollTop = this.vc.nativeElement.scrollHeight;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnChanges()\r\n\t{\r\n\t\t// Récupération de l'utilisateur courant, pour l'emission des sockets\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @returns Une liste de message en fonction du compte\r\n\t *\r\n\t * @memberOf ChatDetail\r\n\t */\r\n\tpublic getMessagesAvailable()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic clearTextArea()\r\n\t{\r\n\t\tthis.message = '';\r\n\t\tthis.textArea.nativeElement.value = '';\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Au cluc sur envoyer, ou la touche \"enter\", permet d'envoyer le contenu du textarea sous forme de message\r\n\t * Sauf si ce contenu est vide.\r\n\t *\r\n\t *\r\n\t * TODO => prévoir de vider le textarea\taprès l'envoi\r\n\t */\r\n\tpublic send()\r\n\t{\r\n\t\tif (this.message !== '' && this.message !== undefined && this.message !== '\\n')\r\n\t\t{\r\n\t\t\tthis._sendMessageEmitter.emit(this.message);\r\n\t\t\tthis.clearTextArea();\r\n\t\t}\r\n\t\tif (this.message === undefined || this.message === '\\n')\r\n\t\t{\r\n\t\t\tthis.clearTextArea();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Est appelé à chaque modification du textarea, permet de garder à jours le message à envoyer une fois le btn send cliqué.\r\n\t */\r\n\tpublic refreshMessage(poValue: any)\r\n\t{\r\n\t\tthis.message = poValue;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Handle keypress event, for sending chat message\r\n\t */\r\n\tpublic eventHandler(event: KeyboardEvent): void\r\n\t{\r\n\t\tif ((event.key === \"Enter\" && !event.shiftKey) && (this.message !== '' && this.message !== undefined && this.message !== '\\n' && this.message !== null))\r\n\t\t{\r\n\t\t\tevent.preventDefault();\r\n\t\t\tthis.message = this.replaceBr(this.message);\r\n\t\t\tthis.send();\r\n\t\t}\r\n\r\n\t\telse if (event.key === \"Enter\" && !event.shiftKey && (this.message === '\\n' || this.message === undefined || this.message === null || this.message === ''))\r\n\t\t{\r\n\t\t\tevent.preventDefault();\r\n\t\t\tif (this.message)\r\n\t\t\t{\r\n\t\t\t\tthis.message = this.replace(this.message);\r\n\t\t\t}\r\n\t\t\tthis.clearTextArea();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Handle keypress event, for sending chat message\r\n\t */\r\n\tpublic eventHandlerUp(event: KeyboardEvent): void\r\n\t{\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif (event.key === \"Enter\" && !event.shiftKey && (this.message === '\\n' || this.message === undefined || this.message === null || this.message === ''))\r\n\t\t{\r\n\t\t\tthis.clearTextArea();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param v \r\n\t */\r\n\temojiAdded(v: any)\r\n\t{\r\n\t\tthis.message = v;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param chaine \r\n\t */\r\n\treplace(chaine: any)\r\n\t{\r\n\t\treturn (chaine.replace(/\\n/g, \"\"));\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param chaine \r\n\t */\r\n\treplaceBr(chaine: any)\r\n\t{\r\n\t\treturn (chaine.replace(/\\n/g, \"
\"));\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic handlerFunction()\r\n\t{\r\n\t\tif (this.chatData.selectedRoom)\r\n\t\t{\r\n\t\t\tthis.roomService.getMessagesBucket(this.chatData.selectedRoom.id, this.chatData.selectedRoom.firstId, 100, 'true');\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","
\r\n\t\r\n\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\r\n
\r\n\r\n\r\n
\r\n\t
\r\n\t\t\r\n\t\t\t

{{ 'chat.chooseConversation' | translate }}

\r\n\t\t\t\r\n\t
\r\n
\r\n
\r\n\t\r\n
\r\n
\r\n\t\r\n\t\t\r\n\t\r\n
\r\n","import { Component, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialog }\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { TranslateService } \t\t\t\t\t\tfrom '@ngx-translate/core';\r\n\r\nimport { Piece }\t\t\t\tfrom '../../../classes/piece.class';\r\nimport { User }\t\t\t\t\tfrom '../../../classes/user.class';\r\nimport { Message }\t\t\t\tfrom '../../../classes/message.class';\r\nimport { UserData }\t\t\t\tfrom '../../../providers/user-data';\r\nimport { ChatData }\t\t\t\tfrom '../../../providers/chat-data';\r\nimport { SocketService }\t\tfrom '../../../services/socket.service';\r\nimport { UserService }\t\t\tfrom '../../../services/user.service';\r\nimport { RoomService }\t\t\tfrom '../../../services/room.service';\r\nimport { Filter, OrderType }\tfrom '../../../components/search-bar/popover-search-filter/classes/filter.class';\r\nimport { SocketWhat }\t\t\tfrom '../../../models/message.model';\r\nimport { ISocketData }\t\t\tfrom '../../../models/message.model';\r\n\r\nimport { ModalCreateChatComponent } from '../modals/modal-create-chat/modal-create-chat.component';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n@Component({\r\n selector:\t\t'app-chat-list',\r\n encapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'./chat-list.component.html',\r\n styleUrls:\t\t['./chat-list.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * Composant parent du chat. Gère la liste des personnes et demande\r\n * au composant détail d'afficher la bonne conversation\r\n */\r\nexport class ChatListComponent implements OnInit, OnDestroy\r\n{\r\n public pieces:\t\t\t\tPiece[];\r\n public users:\t\t\t\tUser[];\r\n\r\n\t//Todo clean : voir à quoi il peut bien servir lui\r\n public datasPieces:\t\tstring;\r\n public piecesAvailable:\tany = {};\r\n public filters:\t\t\tFilter[];\r\n public separatorSearch:\tstring;\r\n public dataProperties:\tany[];\r\n public displayMessage:\tboolean;\r\n\r\n public room:\t\t\tstring = '';\r\n public selectedRoomId:\tstring = '';\r\n public newRoom:\t\t\tstring = '';\r\n public currentUser:\t\tstring = '';\r\n\r\n //a clean\r\n public isLoading:\t\tboolean = false;\r\n public showFab:\t\t\tboolean = false;\r\n public firstLoad:\t\tboolean = true;\r\n public messages:\t\tany;\r\n public socket:\t\t\tany;\r\n public channels:\t\tany;\r\n public selectedOption:\tstring;\r\n public userToken:\t\tany;\r\n\r\n public me:\t\t\t\tany;\r\n public fingerPrint:\t\tany;\r\n\tpublic isFormOpen:\t\tboolean = false;\r\n\tpublic isRoomSelected:\tboolean = false;\r\n\tpublic messagesReaded:\tany;\r\n\tpublic listener:\t\tany;\r\n\r\n\r\n\t/**\r\n\t * Creates an instance of ChatList.\r\n\t *\r\n\t * @param {ChatService} chatService\r\n\t * Todo finir de renseigner les params\r\n\t * @memberOf ChatList\r\n\t */\r\n constructor(\r\n\t\tpublic translate:\t\tTranslateService,\r\n public userData:\t\tUserData,\r\n public chatData:\t\tChatData,\r\n public roomService:\t\tRoomService,\r\n public socketService:\tSocketService,\r\n public dialog:\t\t\tMatDialog)\r\n\t\t{\r\n\t\t\tthis.translate.get('chat.filterName').subscribe((filterName: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.translate.get('chat.filterMessage').subscribe((filterMessage: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\t// Liste des filtres disponible\r\n\t\t\t\t\tthis.filters =\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\tnew Filter('name', \t\t\tfilterName, \ttrue, \t[{ 'name': 'default', 'order': OrderType.ASC }]),\r\n\t\t\t\t\t\tnew Filter('lastMessage', \tfilterMessage, \tfalse, \t[{ 'name': 'dateMessage', 'order': OrderType.DESC }])\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t});\r\n });\r\n\r\n\t\t\t// Infos pour la recherche\r\n\t\t\tthis.separatorSearch\t= ':';\r\n\t\t\tthis.datasPieces\t\t= JSON.stringify(this.chatData.rooms);\r\n\t\t\tthis.dataProperties\t\t=\r\n\t\t\t\t[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttagName: 'default',\r\n\t\t\t\t\t\tpaths: [['_name']]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttagName: 'etablissement',\r\n\t\t\t\t\t\tpaths: [['_users', '_etablissement']]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttagName: 'session',\r\n\t\t\t\t\t\tpaths: [['_users', '_session']]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttagName: 'examen',\r\n\t\t\t\t\t\tpaths: [['_users', '_examen']]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttagName: 'status',\r\n\t\t\t\t\t\tpaths: [['_users', '_status']]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttagName: 'dateMessage',\r\n\t\t\t\t\t\tpaths: [['_messages', '_date']]\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.listener = this.userData.globalEmitter.subscribe((value: any[]) => this.chatControl(value[0], value[1]),\r\n\t\t\t(error: Error) => console.log(error),\r\n\t\t\t() => console.log('done'));\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupérations des infos de base\r\n\t\t// ---------------------------------------\r\n\t\tthis.currentUser\t= this.userData.getUserId();\r\n\t\tthis.userToken\t\t= this.userData.getTokenKey();\r\n\t\tthis.isLoading\t\t= true;\r\n\t\tlet array: any\t\t= [];\r\n\t\tthis.users\t\t\t= array;\r\n\t\tthis.channels\t\t= {};\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// A partir de la liste des messages on retrouve les users par rooms\r\n\t\t// ---------------------------------------\r\n\t\t/**\r\n\t\t * Récupération du socket global pour faire des appels depuis ce fichier\r\n\t\t */\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tthis.socket = socket;\r\n\t\t});\r\n\r\n\r\n\t\tthis.isLoading = false;\r\n\r\n\t\tif (this.chatData.selectedRoom !== null && this.chatData.selectedRoom !== undefined)\r\n\t\t{\r\n\t\t\tthis.openPiece(this.chatData.selectedRoom);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ouvre la modal pour créer une conversation\r\n\t */\r\n\tpublic openDialog()\r\n\t{\r\n\t\tthis.showFab = true;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ferme la modal de création de conversation\r\n\t */\r\n\tpublic closeDialog()\r\n\t{\r\n\t\tthis.showFab = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Toggle de la modal de conversation\r\n\t */\r\n\tpublic toggleDialog()\r\n\t{\r\n\t\tthis.showFab = !this.showFab;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Activé au clic sur le +.\r\n\t * Envoie une demande de récupération de la liste des users.\r\n\t * A la reception de celle ci la fonction openForm est apzellé\r\n\t */\r\n\tpublic addCommunityItem()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération de la liste des users pour pourvoir créer la liste des personnes invitable\r\n\t\t// ---------------------------------------\r\n\t\tlet userId: string = this.userData.getUserId();\r\n\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\r\n\t\t// Demande de la liste des utilisateurs, un écouteur est placé,\r\n\t\t// lorsque la réponse arrive la modal s'ouvre automatiquement\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tthis.socket = socket;\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t'name': userId,\r\n\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t'cmd':\t'user',\r\n\t\t\t\t\t\t'args': { mail:'' }\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.openForm('chat::getUsers');\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Controller qui à partir d'une commande reçu apelle la bonne fonction\r\n\t * Pour le moment permet d'ouvrir la modale de creation et d'ouvrir une room\r\n\t * après la demande de récup d'info\r\n\t */\r\n\tpublic chatControl(value: any, data: any = null)\r\n\t{\r\n\r\n\t\t// this.piecesAvailable.pieces.push(newPiece);\r\n\t\t// ---------------------------------------\r\n\t\t// TODO: Faire un switch\r\n\t\t// ---------------------------------------\r\n\t\tif (value === 'chat::getUsers' && !this.isFormOpen)\r\n\t\t{\r\n\t\t\tthis.openForm(value);\r\n\t\t}\r\n\r\n\t\tif (value === 'chat::openRoomAfterData')\r\n\t\t{\r\n\t\t\tthis.openRoomAfterData();\r\n\t\t}\r\n\r\n\t\tif (value === 'chat::newMessage')\r\n\t\t{\r\n\t\t\tthis.newMessageReceived(data);\r\n\t\t}\r\n\r\n\t\tif (value === 'notify2')\r\n\t\t{\r\n//\t\t\tthis.chatData.setSelectedRoomBy(data);\r\n\t\t\tthis.roomService.getMessagesBucket(data);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic majRooms(newPiece: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Ici rajouter la room à afficher\r\n\t\t// ---------------------------------------\r\n\t\tthis.piecesAvailable.pieces.push(newPiece);\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Ouverture du formulaire de création de room,\r\n\t * est automatiquement appelé à la reception de la liste des users.\r\n\t * (un clic sur le btn plus envoie la demande de la liste des users disponible.)\r\n\t */\r\n\tpublic openForm(value: string)\r\n\t{\r\n\t\t// Vérification que la commande qui active l'ouverture est la bonne.\r\n\t\t// On vérifie aussi que le chat ne soit pas déjà ouvert (cas du double clic sur le +)\r\n\t\tif (!this.isFormOpen)\r\n\t\t{\r\n\t\t\t// MAJ de la variable, pour bloquer les futures ouvertures temps que le form n'est pas fermé\r\n\t\t\tthis.isFormOpen = true;\r\n\r\n\t\t\t// Récupération de la liste des users depuis le localstorage et on la passe au formulaire.\r\n\t\t\tlet userList = this.userData.getUsers();\r\n\r\n\t\t\t// Les rooms déjà ouverte pour récup les users déjà en cours\r\n\t\t\tlet rooms = this.chatData.rooms;\r\n\t\t\tlet arrayOfUserRoom = [];\r\n\t\t\tlet userList2 = [];\r\n\r\n\t\t\t// On met tt ça ds un tableau\r\n\t\t\tfor (let room of rooms)\r\n\t\t\t{\r\n\t\t\t\tfor (let user of room.users)\r\n\t\t\t\t{\r\n\t\t\t\t\tarrayOfUserRoom.push(user.mail);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// On rajoute le mail de l'user en cours\r\n\t\t\tarrayOfUserRoom.push(this.userData.getUserId());\r\n\r\n\t\t\tfor (let key in userList)\r\n\t\t\t{\r\n\t\t\t\tlet finded = false;\r\n\r\n\t\t\t\t// On compare les mails dispo et les mails déjà en chat\r\n\t\t\t\tfor (let user of arrayOfUserRoom)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (key === user)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfinded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!finded)\r\n\t\t\t\t{\r\n\t\t\t\t\tuserList2.push(userList[key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Ouverture de la modal de selection d'user\r\n\t\t\tlet dialogRef = this.dialog.open(ModalCreateChatComponent,\r\n\t\t\t\t{\r\n\t\t\t\t\theight:\t\t\t'50%',\r\n\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\twidth:\t\t\t'60%',\r\n\t\t\t\t\tdata:\t\t\t{'userList': userList2},\r\n\t\t\t\t\tdisableClose:\tfalse\r\n\t\t\t\t});\r\n\t\t\tlet userId = localStorage.getItem('userid');\r\n\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Après la fermeture, création de la room via socket\r\n\t\t\t// ---------------------------------------\r\n\t\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t\t{\r\n\t\t\t\t// vérification du result.. si c'est false = erreur, du coup on va pas ajouter\r\n\t\t\t\tif (result)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.isFormOpen = false;\r\n\t\t\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\r\n\t\t\t\t\t// Lib auto permet d'avoir un nom automatique en fonction de la personne avec qui on communique.\r\n\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.socket = socket;\r\n\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t\t\t\t'name':\tuserId,\r\n\t\t\t\t\t\t\t\t\t'what':\teSocketWhat,\r\n\t\t\t\t\t\t\t\t\t'cmd':\t'room',\r\n\t\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t'libAuto':\t\ttrue,\r\n\t\t\t\t\t\t\t\t\t\t'owner':\t\tuserId,\r\n\t\t\t\t\t\t\t\t\t\t'isPublic':\t\tfalse,\r\n\t\t\t\t\t\t\t\t\t\t'isReadOnly':\tfalse\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tsocket.emit('create', data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tthis.isFormOpen = false;\r\n\t\t\t\tdialogRef.close();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Fonction pour afficher un nouveau message, est bindé directement avec la récup de new message\r\n\t */\r\n\tpublic newMessageReceived(data: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Message = isocket data\r\n\t\t// ---------------------------------------\r\n\t\tif (data.cmd === 'msg')\r\n\t\t{\r\n\t\t\tif (this.chatData.selectedRoom)\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.selectedRoom.counter = 0;\r\n\t\t\t\tthis.chatData.setCounterByRoom(this.chatData.selectedRoom.id, 0);\r\n\t\t\t\t// création de l'objet message et ajout dans la room correspondante (var message en global)\r\n\t\t\t\tlet arrayKey\t\t= [];\r\n\t\t\t\tlet arrayMessage\t= _.toArray(data.args.messages);\r\n\r\n\t\t\t\t// Tableau de clef pour les selectionner plus simplement par l'indice\r\n\t\t\t\tfor(let key in data.args.messages)\r\n\t\t\t\t{\r\n\t\t\t\t\tarrayKey.push(key);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(let key in arrayKey)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet values = JSON.parse(arrayMessage[key].val);\r\n\r\n\t\t\t\t\tif (values.name === this.chatData.selectedRoom.users[0].mail || values.name === this.userData.getUserId())\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet oMessage = new Message(values.name, values.args.message, arrayMessage[key].dateticks, arrayMessage[key].id);\r\n\t\t\t\t\t\tthis.addMessage(oMessage);\r\n\r\n\r\n\t\t\t\t\t\t// Commentaire à rajouter\r\n\t\t\t\t\t\tif (values.name !== this.userData.getUserId())\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t\t\t\t'cmd':\t'msg.read',\r\n\t\t\t\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tbucket:\t\t'rooms',\r\n\t\t\t\t\t\t\t\t\t\t\t\tnotifier:\t['*room::' + this.chatData.selectedRoom.id + '::priv'],\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey:\t\tthis.chatData.selectedRoom.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\tsub:\t\t'M',\r\n\t\t\t\t\t\t\t\t\t\t\t\twhen:\t\tarrayMessage[key].id\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\tsocket.emit('update', data);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param {*} piece\r\n\t * @returns\r\n\t *\r\n\t * @memberOf ChatList\r\n\t */\r\n public isPieceSelected(piece: any)\r\n {\r\n }\r\n\r\n\r\n\t/**\r\n\t * est appelé au clic sur une room.\r\n\t * Va envoyer une demande de récup des messages ... à faire que si on a pas de messages sauvegardé et 0 nouveau\r\n\t */\r\n\tpublic openPiece(piece: any)\r\n\t{\r\n\t\tthis.roomService.getMessagesBucket(piece.id);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Une fois les data de la room reçu pour l'ouverture, on les traites et on ouvre la room\r\n\t * TODO : Rajouter un appel de messages supplémentaire si y'en a pas assez\r\n\t */\r\n\tpublic openRoomAfterData(messages: any = null)\r\n\t{\r\n\t\tthis.isRoomSelected = false;\r\n\r\n\t//ici=> revoir formatage\r\n\t\tlet arrayMessage: any[];\r\n\t\tlet isFormated\t= false;\r\n\r\n\t\tif (messages === null && this.chatData.selectedRoom)\r\n\t\t{\r\n\t\t\t// cas par socket, a été stocké dès la reception des infos => puis emit pr déclancher cette fonction\r\n\t\t\tarrayMessage\t\t= this.chatData.getMessagesByRoomId(this.chatData.selectedRoom.id);\r\n\t\t\tthis.selectedRoomId = this.chatData.selectedRoom.id;\r\n\r\n\t\t\tif (arrayMessage)\r\n\t\t\t{\r\n\t\t\t\tarrayMessage.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tisFormated\t\t= true;\r\n\t\t\tarrayMessage\t= messages;\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// A partir de la piece selected, récup les infos des users en storage\r\n\t\t// ---------------------------------------\r\n\t\tlet messageList = [];\r\n\t\tif(arrayMessage)\r\n\t\t{\r\n\t\t\tfor (let message of arrayMessage)\r\n\t\t\t{\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// On recoit un Esocket data à transformer en Message\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tlet oMessage\t\t= new Message();\r\n\t\t\t\tlet eScocketMessage;\r\n\t\t\t\tif (!isFormated)\r\n\t\t\t\t{\r\n\t\t\t\t\t// eScocketMessage\t\t= JSON.parse(message._content);\r\n\t\t\t\t\t// eScocketMessage\t\t= JSON.parse(message.message);\r\n\t\t\t\t\toMessage.content\t= message._content;\r\n\t\t\t\t\toMessage.userId\t\t= message._userId;\r\n\t\t\t\t\toMessage.ticks\t\t= message.ticks;\r\n\r\n\t\t\t\t\tlet tempConvert = new Date(message._date).getTime();\r\n\t\t\t\t\t// let delta\t\t= Math.round((+new Date - this.date) / 1000);\r\n\r\n\t\t\t\t\ttempConvert\t\t= Math.round((tempConvert));\r\n\t\t\t\t\tlet dateTest\t= new Date(tempConvert);\r\n\t\t\t\t\toMessage.date\t= dateTest;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\toMessage.content\t= message._content;\r\n\t\t\t\t\toMessage.userId\t\t= message._userId;\r\n\t\t\t\t\toMessage.date\t\t= message._date;\r\n\t\t\t\t\toMessage.ticks\t\t= message.ticks;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// On balance les messages dans un tableau pr les insérer à la room par la suite\r\n\t\t\t\tif (oMessage.content)\r\n\t\t\t\t{\r\n\t\t\t\t\tmessageList.push(oMessage);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.chatData.selectedRoom && this.chatData.selectedRoom.lastDate < oMessage.date)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.chatData.selectedRoom.lastId\t= oMessage.ticks;\r\n\t\t\t\t\tthis.chatData.selectedRoom.lastDate = oMessage.date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.chatData.selectedRoom.firstDate > oMessage.date)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.chatData.selectedRoom.firstId\t\t= oMessage.ticks;\r\n\t\t\t\t\t\tthis.chatData.selectedRoom.firstDate\t= oMessage.date;\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.chatData.selectedRoom)\r\n\t\t{\r\n\t\t\tthis.chatData.selectedRoom.counter = 0;\r\n\t\t\tthis.chatData.setCounterByRoom(this.chatData.selectedRoom.id, 0);\r\n\t\t}\r\n\r\n\t\t// modification du boolean pour l'affichage de la room selectionnée\r\n\t\tthis.isRoomSelected = true;\r\n\t\tthis.userData.globalEmitter.emit(['notify', 'scrollBottom']);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Construit le JSON pour envoyer le message\r\n\t */\r\n\tpublic sendMessage(psMessage: string)\r\n\t{\r\n\r\n\t\t// récupération du nom et de l'id de la room en cours\r\n\t\t// TODO: Factoriser et stocker tt ça, userData me semble pas mal pour ça\r\n\t\tif (this.chatData.selectedRoom)\r\n\t\t{\r\n\t\t\tconst name\t\t= '*room::' + this.chatData.selectedRoom.id + '::priv';\r\n\t\t\tconst roomId\t= this.socketService.findRoomAGerer(name);\r\n\r\n\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\t\t// Cas d'erreur\r\n\t\t\tif (roomId === -1)\r\n\t\t\t{\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// récupération de l'object room, et publication du message\r\n\t\t\tlet oRoom = this.socketService.roomsAGerer[roomId];\r\n\r\n\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t// \"authToken\":\tthis.userToken,\r\n\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd':\t'msg',\r\n\t\t\t\t\t'args': { 'message': psMessage }\r\n\t\t\t\t};\r\n\r\n\t\t\toRoom.channel.publish(data);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @param {Piece} piece\r\n\t *\r\n\t * @memberOf ChatList\r\n\t */\r\n\tpublic listenPiece(piece: Piece)\r\n\t{\r\n\r\n\t\tthis.displayMessage = true;\r\n\r\n\t\t//Gestion des erreursw\r\n\t\tthis.socket.on('error', function (err: any)\r\n\t\t{\r\n\t\t\tthrow 'Socket error - ' + err;\r\n\t\t});\r\n\r\n\t\t// logout\r\n\t\tthis.socket.on('logout', function (err: any)\r\n\t\t{\r\n\r\n\t\t});\r\n\r\n\r\n\t\t// Une fois connecté\r\n\t\tthis.socket.on('connect', function ()\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.getUserId() + '::' + this.userData.account + '::socketCluster.authToken', this.userToken);\r\n\t\t}.bind(this));\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Vérification de la souscription\r\n\t\t// ---------------------------------------\r\n\t\tconst isSuscribed = this.socket.isSubscribed(piece.id);\r\n\r\n\t\tif (isSuscribed)\r\n\t\t{\r\n\t\t\t// Vérif watcher\r\n\t\t\tconst arrayWatchers = this.socket.watchers(\"*room::\" + piece.id + \"::priv\");\r\n\r\n\t\t\tif (arrayWatchers === undefined || arrayWatchers.length === 0)\r\n\t\t\t{\r\n\t\t\t\tthis.watchPiece(piece.id);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param roomId \r\n\t */\r\n\tprivate watchPiece(roomId: string)\r\n\t{\r\n\t\tif (this.channels && this.channels[roomId])\r\n\t\t{\r\n\t\t\tthis.channels[roomId].watch((newMessage: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (newMessage.cmd === 'message')\r\n\t\t\t\t{\r\n\t\t\t\t\tconst message = new Message(newMessage.name, newMessage.args.value, new Date());\r\n\t\t\t\t\tthis.addMessage(message);\r\n\t\t\t\t\tthis.messages += message;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic addMessage(pjMessage: any)\r\n\t{\r\n\t\t// Programmation défensive à mettre en place\r\n\t\tif (this.chatData.selectedRoom)\r\n\t\t{\r\n\t\t\tthis.chatData.selectedRoom.addMessage(pjMessage, pjMessage.ticks);\r\n\r\n\t\t\tif (this.chatData.selectedRoom.lastDate < pjMessage.date)\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.selectedRoom.lastId\t= pjMessage.ticks;\r\n\t\t\t\tthis.chatData.selectedRoom.lastDate = pjMessage.date;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.chatData.selectedRoom.firstDate > pjMessage.date)\r\n\t\t\t{\r\n\t\t\t\tthis.chatData.selectedRoom.firstId\t\t= pjMessage.ticks;\r\n\t\t\t\tthis.chatData.selectedRoom.firstDate\t= pjMessage.date;\r\n\t\t\t}\r\n\r\n\t\t\tthis.userData.globalEmitter.emit(['notify', 'scrollBottom']);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic initMessage(pjMessage: any)\r\n\t{\r\n\t}\r\n\r\n\r\n /**\r\n * @param event\r\n *\r\n * @memberOf ChatList\r\n *\r\n */\r\n\tpublic updatePiecesAvailable(event: any)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Update des pieces\r\n\t\t// ---------------------------------------\r\n\t\tif (event.value)\r\n\t\t{\r\n\t\t\tthis.piecesAvailable.pieces = [];\r\n\t\t\tlet value = JSON.parse(event.value);\r\n\t\t\tfor (let i = 0; i < value.length; i++)\r\n\t\t\t{\r\n\t\t\t\tthis.piecesAvailable.pieces.push(Piece.fromJsonObject(value[i]));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public join(): void\r\n\t{\r\n //\t\tthis.roomService.join(this.room);\r\n }\r\n\r\n\r\n\t/**\r\n\t * Create room, when Create-button is pressed and empty newRoom text input\r\n\t */\r\n\tpublic create(): void\r\n\t{\r\n\r\n\t\t/*\r\n\t\t * Creation d'un new room() (class)\r\n\t\t */\r\n\t\tlet id:\t\t\t\tstring\t= '';\r\n\t\tlet users:\t\t\tany[]\t= [];\r\n\t\tlet messages:\t\tany[]\t= [];\r\n\t\tlet sType:\t\t\tstring\t= '';\r\n\t\tlet name:\t\t\tstring\t= '';\r\n\t\tlet displayName:\tstring\t= '';\r\n\t\tlet description:\tstring\t= '';\r\n\t\tlet state:\t\t\tboolean = false;\r\n\r\n\r\n\t\t/*\r\n\t\t * Si création ok => on ajoute la room a la liste des rooms\r\n\t\t */\r\n\t\tlet newRoom = new Piece(id, users, messages, sType, name,displayName, description, state);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Remove room, when Remove-button is pressed and unset selected room\r\n\t */\r\n\tpublic remove(): void\r\n\t{\r\n\t\t// this.roomService.remove(this.room);\r\n\t\t// this.room = \"\";\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Handle keypress event (for creating a new room)\r\n\t */\r\n\tpublic eventHandler(event: KeyboardEvent): void\r\n\t{\r\n\r\n\t\tif (event.key === \"Enter\")\r\n\t\t{\r\n\t\t\t// this.create();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic ngOnDestroy()\r\n\t{\r\n\r\n\t\tif (!this.firstLoad)\r\n\t\t{\r\n\t\t\t//Ici on a changé de room, permet d'avoir qu'un seul watch en cours !\r\n\t\t}\r\n\t\tthis.listener.unsubscribe();\r\n\r\n\t}\r\n\r\n\r\n\tpublic changeFocus(event: any)\r\n\t{\r\n\t}\r\n\r\n}\r\n\r\n","
\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n\r\n","import { Component, ViewEncapsulation, OnInit }\t\tfrom '@angular/core';\r\n\r\nimport { AppComponent }\tfrom '../../app.component';\r\n\r\nimport { MatDialog }\tfrom '@angular/material';\r\nimport { UserData }\t\tfrom '../../providers/user-data';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'app-community',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\ttemplateUrl:\t'./community.component.html',\r\n\tstyleUrls:\t\t['./community.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class CommunityComponent implements OnInit\r\n{\r\n\r\n\tpublic panelSelected\t\t\t\t\t= 0;\r\n public isChatPanelSelected = true;\r\n public isForumtPanelSelected = false;\r\n public isNotificationstPanelSelected = false;\r\n public mbLoadState = false;\r\n\t\r\n\t\r\n\tpublic canAccessChat:\t\t\tboolean = true;\r\n\tpublic canAccessForum:\t\t\tboolean = false;\r\n\tpublic canAccessNotification:\tboolean = false;\r\n\t\r\n\r\n /**\r\n * Creates an instance of CommunityPage.\r\n * \r\n * @param {PopoverController} popoverCtrl\r\n * @param {NavController} nav\r\n *\r\n * @memberOf CommunityPage\r\n */\r\n\tconstructor(public appComponent:\tAppComponent,\r\n\t\t\t\tpublic dialog:\t\t\tMatDialog,\r\n\t\t\t\tpublic userData:\t\tUserData,)\r\n\t{\r\n\t\tthis.panelSelected = 0;\r\n//\t\tthis.canAccessChat = this.userData.canAccessChat;\r\n\t\t\r\n\t\t// Vérification des droits pour valider l'accès aux différentes parties\r\n\t\tif (this.userData.canAccessForum === true)\r\n\t\t{\r\n\t\t\tthis.canAccessForum = true;\r\n\t\t}\r\n\t\t\r\n\t\t// Modification du header\r\n\t\tappComponent.setPageTitle('Communauté');\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\t// TODO: voir si c'est tjr d'actualité\r\n\t\tthis.panelSelected = 0;\r\n\t\tthis.refreshTab(0);\r\n//\t\tthis.appComponent.setHeaderColor('#0277bd');\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnChange()\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @memberOf CommunityPage\r\n\t */\r\n\tpublic updateSegment(): void\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n /**\r\n *\r\n */\r\n\tpublic addCommunityItem(nameButton: any)\r\n\t{\r\n\t\tswitch (nameButton)\r\n\t\t{\r\n\t\t\tcase 'newTopic':\r\n\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\tcase 'publicConversation':\r\n\t\t\tcase 'privateGroup':\r\n\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\tdefault:\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\t/**\r\n\t * Retourne true une fois la page chargée\r\n\t *\r\n\t * @returns\r\n\t *\r\n\t * @memberOf WorkspacePage\r\n\t */\r\n\tpublic isLoaded(): boolean\r\n\t{\r\n\t\treturn this.mbLoadState;\r\n\t}\r\n\r\n\r\n /**\r\n * Display message for chat, topic and notifications creation. Display equally error messages\r\n *\r\n * @returns\r\n *\r\n * @memberOf WorkspacePage\r\n */\r\n\tpublic presentToast(message: any)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Call on every modification of the tab\r\n\t */\r\n\tpublic refreshTab(e: any)\r\n\t{\r\n\r\n\t\t// En fonction de l'index on va choisir quelle section est à afficher\r\n\t\tswitch (e)\r\n\t\t{\r\n\t\t\tcase 0:\r\n\t\t\t\tthis.appComponent.setPageTitle('Communauté - Messagerie');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 1:\r\n\t\t\t\tthis.appComponent.setPageTitle('Communauté - Forum');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 2:\r\n\t\t\t\tthis.appComponent.setPageTitle('Communauté - Notification');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\tNouvelle conversation\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
Entrez les premières lettres du nom ou du mail de votre interlocuteur
\r\n\t\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
{{ user.infos.prenom }} {{ user.infos.nom }}
\r\n\t\t\t\t
{{user.mail}}
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, OnInit, ViewEncapsulation, Inject } from '@angular/core';\r\n\r\nimport { FormControl } \tfrom '@angular/forms';\r\nimport { MatDialogRef }\tfrom '@angular/material';\r\n\r\nimport { WorkspaceDataService } from '../../../../providers/workspaceData.service';\r\nimport { UserData }\t\t\t\tfrom '../../../../providers/user-data';\r\n\r\nimport * as _ from 'underscore';\r\nimport {MAT_DIALOG_DATA} from '@angular/material';\r\n\r\n\r\n/**\r\n *\r\n */\r\n@Component({\r\n\tselector:\t\t'app-modal-create-chat',\r\n\ttemplateUrl:\t'./modal-create-chat.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./modal-create-chat.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class ModalCreateChatComponent implements OnInit\r\n{\r\n public userSelected: any\t= null;\r\n public user\t\t\t\t\t= '';\r\n\tpublic usersList: any\t\t= [];\r\n\tpublic selectedType: any;\r\n\r\n\t// ---------------------------------------\r\n\t// Controle du formulaier\r\n\t// ---------------------------------------\r\n\tpublic userCtrl: FormControl;\r\n\r\n\t// Les élements filtré pour l'autocompletion\r\n\tpublic filteredUsers: any;\r\n\r\n\r\n\tpublic typesAvailable =\r\n\t[\r\n\t\t{ value: 'public',\tlibelle: 'Conversation publique' },\r\n\t\t{ value: 'group',\tlibelle: 'Conversation de groupe' }\r\n\t];\r\n\r\n\r\n /**\r\n * Creates an instance of PopoverCreateChat.\r\n *\r\n * @param {ViewController} viewCtrl\r\n *\r\n * @memberOf PopoverCreateChat\r\n */\r\n\tconstructor(public dialogRef: MatDialogRef,\r\n\t\t\t\tpublic workData: WorkspaceDataService,\r\n\t\t\t\tpublic userData:UserData,\r\n\t\t\t\t@Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tthis.usersList = this.data.userList;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Init des formsControl\r\n\t\t// ---------------------------------------\r\n\t\tthis.userCtrl\t\t= new FormControl();\r\n\r\n\t\t// Raffraichi le filtrage à chaque modification\r\n \tthis.filteredUsers = this.userCtrl.valueChanges.startWith(null).map((name: any) => this.filterMail(name));\r\n\t}\r\n\r\n\r\n /**\r\n * Create a new piece with parameters of the current popup\r\n *\r\n * @memberOf PopoverCreateChat\r\n */\r\n\tpublic createPiece()\r\n\t{\r\n\t\tthis.userData.userForChatInvite = this.userSelected;\r\n\t\tthis.dialogRef.close(true);\r\n\t}\r\n\r\n\r\n /**\r\n * Close the current popup\r\n *\r\n * @memberOf PopoverCreateChat\r\n */\r\n\tpublic close()\r\n\t{\r\n\t\tthis.dialogRef.close(false);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param user \r\n\t */\r\n \tpublic displayUsername(user: any): string\r\n\t{\r\n \treturn user ? user.mail : null;\r\n \t}\r\n\r\n\r\n\t/**\r\n\t Salut à tous,\r\n\t Le 11 mai je vous donne rendez-vous à Serignan pour mon premier combat en boxe anglaise 🥊\r\n\t Je tiens à remercier Jacques Patrac mon matchmaker, ainsi mon coach Daniel Barry pour la prépa au top ainsi que tout les membres du Boxing Club Montpelliérain pour leur accueil.\r\n\t Un gros bisous à mes supporter, ils ne sont pas nombreux mais ils se reconnaitront !\r\n\t Boxe serignan <= tagguer ici l'event\r\n\t *\r\n\t */\r\n\tpublic filterMail(val: any)\r\n\t{\r\n\r\n\t\tlet result\t= this.usersList;\r\n\t\tlet result2 = this.usersList;\r\n\t\tlet result3 = this.usersList;\r\n\t\tlet result4 = this.usersList;\r\n\t\tlet result5 = this.usersList;\r\n\r\n\t\tif (val && typeof val === 'string')\r\n\t\t{\r\n\t\t\tresult\t= this.usersList.filter((user: any) => user.mail.toLowerCase().indexOf(val.toLowerCase())\t\t\t=== 0);\r\n\t\t\tresult2 = this.usersList.filter((user: any) => user.infos.nom.toLowerCase().indexOf(val.toLowerCase())\t\t=== 0);\r\n\t\t\tresult3 = this.usersList.filter((user: any) => user.infos.prenom.toLowerCase().indexOf(val.toLowerCase())\t=== 0);\r\n\r\n\t\t\tresult4 = this.usersList.filter((user: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst str = user.infos.prenom.toLowerCase() + ' ' + user.infos.nom.toLowerCase();\r\n\t\t\t\t\r\n\t\t\t\treturn str.indexOf(val.toLowerCase()) === 0;\r\n\t\t\t});\r\n\r\n\t\t\tresult5 = this.usersList.filter((user: any) =>\r\n\t\t\t{\r\n\t\t\t\tconst str = user.infos.nom.toLowerCase() + ' ' + user.infos.prenom.toLowerCase();\r\n\t\t\t\t\r\n\t\t\t\treturn str.indexOf(val.toLowerCase())\t=== 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst aReturn = _.union(result, result2, result3, result4, result5);\r\n\r\n\t\treturn aReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic onNoClick(): void\r\n\t{\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic canCreateRoom()\r\n\t{\r\n\t\tlet result = false;\r\n\r\n\t\tif (this.userSelected && this.userSelected.mail)\r\n\t\t{\r\n\t\t\tresult = true;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t 0\">{{room.counter}}\r\n\t\t\r\n\t\t
\r\n\t
\r\n
","import { Component, OnInit, Input,ViewEncapsulation } from '@angular/core';\r\nimport { ChatData }\t\t\t\tfrom '../../../providers/chat-data';\r\nimport { Router }\t\t\t\tfrom '@angular/router';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'app-module-chat',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\ttemplateUrl:\t'./module-chat.component.html',\r\n\tstyleUrls:\t\t['./module-chat.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class ModuleChatComponent implements OnInit\r\n{\r\n\t@Input() maHomeRooms:\tany;\r\n\t@Input() contexte:\t\tany;\r\n\t\r\n\r\n\t/**\r\n\t * \r\n\t * @param chatData \r\n\t * @param router \r\n\t */\r\n\tconstructor(public chatData:\tChatData,\r\n\t\t\t\tpublic router:\t\tRouter) \r\n\t{ }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param id \r\n\t */\r\n\tpublic onClick(id: any)\r\n\t{\r\n\t\tthis.chatData.setSelectedRoomBy(id);\r\n\t\tthis.router.navigate(['/community']);\r\n\t}\r\n\r\n}","import { Component, OnInit, ViewEncapsulation }\tfrom '@angular/core';\r\nimport { UserData }\t\t\t\tfrom '../../../providers/user-data';\r\nimport {\r\n MatSnackBar,\r\n MatSnackBarConfig,\r\n MatSnackBarHorizontalPosition,\r\n MatSnackBarVerticalPosition,\r\n} from '@angular/material';\r\n\r\n\r\n@Component({\r\n\tselector: 'app-notification-modal',\r\n\ttemplateUrl: './notification-modal.component.html',\r\n\tstyleUrls: ['./notification-modal.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class NotificationModalComponent implements OnInit\r\n{\r\n\tpoHorizontalPosition: MatSnackBarHorizontalPosition = 'end';\r\n\tpoVerticalPosition: MatSnackBarVerticalPosition\t\t= 'top';\r\n\r\n\r\n\tactionButtonLabel:\tstring\t= '';\r\n\taction:\t\t\t\tboolean = true;\r\n\tsetAutoHide:\t\tboolean = true;\r\n\tautoHide:\t\t\tnumber\t= 5000;\r\n\taddExtraClass:\t\tboolean = true;\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param userData \r\n\t * @param snackBar \r\n\t */\r\n\tconstructor(public userData: UserData, public snackBar: MatSnackBar) { }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.userData.notifEmitter.subscribe((value: any[]) => this.control(value[0], value[1]),\r\n\t\t\t(error: Error) => console.log(error),\r\n\t\t\t() => console.log('done'));\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param psMessage \r\n\t * @param psAction \r\n\t */\r\n\tpublic control(psMessage: any, psAction: any)\r\n\t{\r\n\t\tthis.openSnackBar(psMessage, psAction);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param message \r\n\t * @param action \r\n\t */\r\n\tprivate openSnackBar(message: string, action: string)\r\n\t{\r\n\t\tlet config = new MatSnackBarConfig();\r\n\r\n\t\tconfig.verticalPosition\t\t= this.poVerticalPosition;\r\n\t\tconfig.horizontalPosition\t= this.poHorizontalPosition;\r\n\t\tconfig.duration\t\t\t\t= this.setAutoHide ? this.autoHide : 0;\r\n//\t\tconfig.extraClasses\t\t\t= this.addExtraClass ? ['exa_snack'] : undefined;\r\n\r\n\t\tthis.snackBar.open(message, action, config);\r\n\t}\r\n}\r\n","{{content}}\r\n{{content}}","import { Component, OnInit, Input, OnChanges, DoCheck } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: \t\t'app-date-user-friendly',\r\n\ttemplateUrl: \t'./date-user-friendly.component.html',\r\n\tstyleUrls: \t\t['./date-user-friendly.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class DateUserFriendlyComponent implements OnChanges, DoCheck\r\n{\r\n\r\n\t@Input() date:\t\tany;\r\n\t@Input() log:\t\tboolean = false;\r\n\t@Input() noFuture:\tboolean = false;\r\n\t\r\n\tpublic content:\t\tany;\r\n\tpublic dateClass:\tany;\r\n\tpublic fullDate:\tany;\r\n\t\r\n\tpublic noToolTip = false;\r\n\r\n\tconstructor() { this.content = ''; }\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnChanges()\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngDoCheck()\r\n\t{\r\n\t\tlet oDate;\r\n\r\n\t\tif (!this.date)\r\n\t\t{\r\n\t\t\tthis.content\t= 'Aucune';\r\n\t\t\tthis.dateClass\t= 'futur';\r\n\t\t\tthis.noToolTip\t= true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlet delta = Math.round((+Date.now() - this.date) / 1000);\r\n\r\n\t\t\tif (isNaN(delta ))\r\n\t\t\t{\r\n\t\t\t\tdelta = Math.round((+Date.now() - new Date(this.date).getTime()) / 1000);\r\n\t\t\t}\r\n\r\n\t\t\tlet daysName = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'];\r\n\r\n\t\t\tlet minute\t= 60,\r\n\t\t\t\thour\t= minute\t* 60,\r\n\t\t\t\tday\t\t= hour\t\t* 24,\r\n\t\t\t\tweek\t= day\t\t* 7,\r\n\t\t\t\tmonth\t= day\t\t* 30;\r\n\r\n\r\n\t\t\tthis.content = '';\r\n\r\n\t\t\tif (this.date instanceof Date)\r\n\t\t\t{\r\n\t\t\t\toDate = this.date;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\toDate = new Date(this.date);\r\n\t\t\t}\r\n\r\n\t\t\tthis.fullDate = oDate.toLocaleString();\r\n\r\n\t\t\tthis.dateClass = 'passe';\r\n\r\n\t\t\t\r\n\t\t\t// Futur\r\n\t\t\tif (delta < 0 && !this.noFuture)\r\n\t\t\t{\r\n\t\t\t\tthis.dateClass = 'futur';\r\n\r\n\t\t\t\tif (delta > -59)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.content = 'A l\\'instant.';\r\n\t\t\t\t}\r\n\t\t\t\telse if (delta > -minute)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.content = \"Dans \" + delta + ' secondes.';\r\n\t\t\t\t}\r\n\t\t\t\telse if (delta > -hour)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.content = \"Dans \" + (Math.round(delta / minute)) * -1 + ' minutes.';\r\n\t\t\t\t}\r\n\t\t\t\telse if (Math.floor(delta / -hour) == 1)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.content = 'Dans une heure'\r\n\t\t\t\t}\r\n\t\t\t\telse if (delta > -day)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.content = 'Dans ' + (Math.round(delta / hour)) * -1 + ' heures.';\r\n\t\t\t\t}\r\n//\t\t\t\telse if (delta > -(day * 2))\r\n//\t\t\t\t{\r\n//\t\t\t\t\tthis.content = 'Demain';\r\n//\t\t\t\t}\r\n\t\t\t\telse if (delta > -week)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Hier\r\n\t\t\t\t\tlet dateNumber = oDate.getDay() - 1;\r\n\t\t\t\t\tif(dateNumber === -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdateNumber = 6;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.content = daysName[dateNumber] + ' prochain';\r\n\t\t\t\t}\r\n\t\t\t\telse if (delta > -month)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Moins d'une semaine => Todo mardi dernier\r\n\t\t\t\t\t// this.content = 'il y à moins d\\'une semaine';\r\n\t\t\t\t\tthis.content = 'Dans ' + (Math.round(delta / day))*-1 + ' jours';\r\n\t\t\t\t}\r\n\t\t\t\telse if (delta > (-month * 12))\r\n\t\t\t\t{\r\n\t\t\t\t\t// Moins de deux mois\r\n\t\t\t\t\tthis.content = 'Dans ' + Math.round(delta / month)*-1 + ' mois';\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// au delà\r\n\t\t\t\t\tthis.content = 'Dans ' + Math.round(delta / month / 12)*-1 + ' an(s)';\r\n\t\t\t\t}\r\n\r\n\t\t\t} //Passé\r\n\t\t\telse if (delta < 59)\r\n\t\t\t{\r\n\t\t\t\t// Moins de 30 secondes\r\n\t\t\t\tthis.content = 'A l\\'instant.';\r\n\t\t\t}\r\n\t\t\telse if (delta < minute)\r\n\t\t\t{\r\n\t\t\t\t// Moins d1 minute\r\n\t\t\t\tthis.content = \"il y a \" + delta + ' secondes.';\r\n\t\t\t}\r\n\t\t\telse if (delta < 2 * minute)\r\n\t\t\t{\r\n\t\t\t\t// Moins de deux\r\n\t\t\t\tthis.content = 'il y a une minute.'\r\n\t\t\t}\r\n\t\t\telse if (delta < hour)\r\n\t\t\t{\r\n\t\t\t\t// Moins d 1 heure\r\n\t\t\t\tthis.content = \"il y a \" + Math.round(delta / minute) + ' minutes.';\r\n\t\t\t}\r\n\t\t\telse if (Math.round(delta / hour) == 1)\r\n\t\t\t{\r\n\t\t\t\t// une heure\r\n\t\t\t\tthis.content = 'il y a une heure'\r\n\t\t\t}\r\n\t\t\telse if (delta < day)\r\n\t\t\t{\r\n\t\t\t\t// x heures\r\n\t\t\t\tthis.content = 'il y a ' + Math.round(delta / hour) + ' heures.';\r\n\t\t\t}\r\n\t\t\telse if (delta < day * 2)\r\n\t\t\t{\r\n\t\t\t\t// Hier\r\n\t\t\t\tthis.content = 'Hier';\r\n\t\t\t}\r\n\t\t\telse if (delta < week)\r\n\t\t\t{\r\n\t\t\t\t// Hier\r\n\t\t\t\tlet dateNumber = oDate.getDay() - 1;\r\n\t\t\t\tif (dateNumber === -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tdateNumber = 6;\r\n\t\t\t\t}\r\n\t\t\t\tthis.content = daysName[dateNumber] + ' dernier';\r\n\t\t\t}\r\n\t\t\telse if (delta < month)\r\n\t\t\t{\r\n\t\t\t\t// Moins d'une semaine => Todo mardi dernier\r\n\t\t\t\t// this.content = 'il y à moins d\\'une semaine';\r\n\t\t\t\tthis.content = 'Il y a ' + Math.round(delta / day) + ' jours1';\r\n\t\t\t}\r\n\t\t\telse if (delta > month && delta < month * 12)\r\n\t\t\t{\r\n\t\t\t\t// Moins de deux mois\r\n\t\t\t\tthis.content = 'Il y a ' + Math.round(delta / month) + ' mois';\r\n\t\t\t}\r\n\t\t\telse if (delta > month * 12 && delta < month * 2000 )\r\n\t\t\t{\r\n\t\t\t\t// au delà\r\n\t\t\t\tthis.content = 'Il y a ' + Math.round(delta / (month / 12)) + ' an(s)';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.content\t= 'Aucune';\r\n\t\t\t\tthis.dateClass\t= 'futur';\r\n\t\t\t\tthis.noToolTip\t= true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","\r\n\t\r\n \r\n \r\n \r\n\r\n","import { Component, OnInit, DoCheck }\tfrom '@angular/core';\r\nimport { ViewEncapsulation }\tfrom '@angular/core';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData }\t\t\t\tfrom '../../providers/workspace-data';\r\nimport { Router }\t\t\t\tfrom '@angular/router';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'footer-component',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\ttemplateUrl:\t'./footer.component.html',\r\n\tstyleUrls:\t\t['./footer.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class FooterComponent implements OnInit, DoCheck\r\n{\r\n\tpublic showMenu:\t\tboolean\t= false;\r\n\tpublic isHomeSelected:\tboolean = false;\r\n\tpublic isWorkSelected:\tboolean = false;\r\n\tpublic isTaskSelected:\tboolean = false;\r\n\tpublic isComuSelected:\tboolean = false;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(public userData: UserData,\r\n\t\t\t\tpublic router: Router,\r\n\t\t\t\tpublic workspaceData: WorkspaceData,\r\n\t\t\t\t)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.isHomeSelected = false;\r\n\t\tthis.isWorkSelected = false;\r\n\t\tthis.isTaskSelected = false;\r\n\t\tthis.isComuSelected = false;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t//\r\n\t\t// ---------------------------------------\r\n\t\tswitch (this.router.url)\r\n\t\t{\r\n\t\t\tcase '/home':\r\n\t\t\t\tthis.isHomeSelected = true;\r\n\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\tcase '/workspace':\r\n\t\t\t\tthis.workspaceData.mbisWorkspaceLoading = false;\r\n\t\t\t\tthis.isWorkSelected = true;\r\n\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\tcase '/task':\r\n\t\t\t\tthis.isTaskSelected = true;\r\n\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\tcase '/community':\r\n\t\t\t\tthis.isComuSelected = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tngDoCheck()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t//\r\n\t\t// ---------------------------------------\r\n\t\tswitch (this.router.url)\r\n\t\t{\r\n\t\t\tcase '/home':\r\n\t\t\t\tthis.isHomeSelected = true;\r\n\t\t\t\tthis.isWorkSelected = false;\r\n\t\t\t\tthis.isTaskSelected = false;\r\n\t\t\t\tthis.isComuSelected = false;\r\n\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase '/workspace':\r\n\t\t\t\tthis.isWorkSelected = true;\r\n\t\t\t\tthis.isHomeSelected = false;\r\n\t\t\t\tthis.isTaskSelected = false;\r\n\t\t\t\tthis.isComuSelected = false;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase '/task':\r\n\t\t\t\tthis.isTaskSelected = true;\r\n\t\t\t\tthis.isHomeSelected = false;\r\n\t\t\t\tthis.isWorkSelected = false;\r\n\t\t\t\tthis.isComuSelected = false;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\tcase '/community':\r\n\t\t\t\tthis.isComuSelected = true;\r\n\t\t\t\tthis.isHomeSelected = false;\r\n\t\t\t\tthis.isWorkSelected = false;\r\n\t\t\t\tthis.isTaskSelected = false;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tthis.isHomeSelected = false;\r\n\t\t\t\tthis.isWorkSelected = false;\r\n\t\t\t\tthis.isTaskSelected = false;\r\n\t\t\t\tthis.isComuSelected = false;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param psColor \r\n\t */\r\n\tpublic changeBackgroundColor(psColor: any)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param psName \r\n\t */\r\n\tpublic changeSelected(psName: any)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// En fonction on va ouvrir le bon formulaire\r\n\t\t// ---------------------------------------\r\n\t\tthis.isHomeSelected = false;\r\n\t\tthis.isWorkSelected = false;\r\n\t\tthis.isTaskSelected = false;\r\n\t\tthis.isComuSelected = false;\r\n\r\n\t\tswitch (psName)\r\n\t\t{\r\n\t\t\tcase 'home':\r\n\t\t\t\tthis.isHomeSelected = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'work':\r\n\t\t\t\tthis.isWorkSelected = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'task':\r\n\t\t\t\tthis.isTaskSelected = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'comu':\r\n\t\t\t\tthis.isComuSelected = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t
\r\n\t
\r\n\t\t
\r\n\r\n\r\n\t\t\t

Tableau de bord

\r\n\t\t\t
\r\n\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tAucun\r\n\t\t\t\t\t\t\t\t{{ etablissement.name }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ 'task.none' | translate }}\r\n\t\t\t\t\t\t\t\t{{session.name}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ 'task.none' | translate }}\r\n\t\t\t\t\t\t\t\t{{examen.name}}\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ 'task.none' | translate }}\r\n\t\t\t\t\t\t\t\t{{matiere.name}}\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ 'task.none' | translate }}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{sujet.name}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
0\" >\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {{ 'home.tasksToValidate' | translate }} ( {{ workspaceData.geTaskHomeAdminToValidLenght() }} )\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
0\" >\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{ 'home.tasksEndDate' | translate }} ( {{ workspaceData.getTaskHomeExpiredLength() }} )\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t
0\">\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ 'home.assignedTasks' | translate }} ( {{ this.workspaceData.getTaskHomeMineLength() }} )\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t

{{ 'home.emptyActivityMessage' | translate }}

\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t

{{ 'home.emtyToDoListMessage' | translate }}

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
0\">\r\n\r\n\r\n\r\n\r\n\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ 'home.epreuvesTitle' | translate }} ( {{ workspaceData.epreuveHomeAdmin.length }} )\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{epreuve.name}}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{{ 'home.subject' | translate }}{{epreuve.nombre.desujet}}\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
1\">\r\n\t\t\t\t\t\t\t\t\t\t\t{{ 'home.subjects' | translate }}{{epreuve.nombre.desujet}}\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t{{ epreuve.ariane }}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
0\">
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
0\">
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
0\">
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
{{ 'common.mail' | translate }}
\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t
{{ 'common.forum' | translate }}
\r\n\t\t
\r\n\r\n\t\t
\r\n\t
\r\n\r\n\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, OnDestroy, AfterViewInit }\tfrom '@angular/core';\r\n\r\nimport { ViewEncapsulation }\tfrom '@angular/core';\r\nimport { Router }\t\t\t\tfrom '@angular/router';\r\nimport { ChatData }\t\t\t\tfrom '../../providers/chat-data';\r\nimport { SavedData }\t\t\tfrom '../../providers/saved-data';\r\nimport { TaskData }\t\t\t\tfrom '../../providers/task-data';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData } from '../../providers/workspace-data';\r\nimport { AppComponent }\t\t\tfrom '../../app.component';\r\nimport { SocketService }\t\tfrom '../../services/socket.service';\r\nimport { StatisticsService }\tfrom '../../services/statistics.service';\r\nimport { Task }\t\t\t\t\tfrom '../../classes/task.class';\r\n\r\nimport { ISocketData, SocketWhat }\t\t\t\tfrom '../../models/message.model';\r\n\r\nimport { startOfDay, endOfDay, subDays, addDays, endOfMonth, isSameDay, isSameMonth, addHours } from 'date-fns';\r\n\r\nimport * as _ from 'underscore';\r\n//import Quill from 'quill';\r\n// add image resize module\r\n// add mention module\r\n\r\n\r\nconst colors: any =\r\n\t{\r\n\t\tred:\r\n\t\t{\r\n\t\t\tprimary:\t'#ad2121',\r\n\t\t\tsecondary:\t'#FAE3E3'\r\n\t\t},\r\n\t\tblue:\r\n\t\t{\r\n\t\t\tprimary:\t'#1e90ff',\r\n\t\t\tsecondary:\t'#D1E8FF'\r\n\t\t},\r\n\t\tyellow:\r\n\t\t{\r\n\t\t\tprimary:\t'#e3bc08',\r\n\t\t\tsecondary:\t'#FDF1BA'\r\n\t\t}\r\n\t};\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'page-home',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./home.component.scss'],\r\n\ttemplateUrl:\t'home.component.html'\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class HomeComponent implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n\r\n\tpublic localState:\t\t\t\tany;\r\n\tpublic title:\t\t\t\t\tany;\r\n\tpublic someUrl:\t\t\t\t\tstring\t= \"assets/img/marcel.png\";\r\n\tpublic name:\t\t\t\t\tstring\t= 'user';\r\n\tpublic ckeditorContent:\t\t\tstring = 'test';\r\n\tpublic canAccessChat:\t\t\tboolean = true;\r\n\tpublic haveTask:\t\t\t\tboolean = false;\r\n\tpublic haveTaskAdminExp:\t\tboolean = false;\r\n\tpublic haveTaskAdminValidate:\tboolean = false;\r\n\tpublic haveChatData:\t\t\tboolean = false;\r\n\tpublic haveEpreuve:\t\t\t\tboolean = false;\r\n\tpublic canAccessForum:\t\t\tboolean = false;\r\n\tpublic canAccessNotification:\tboolean = false;\r\n\tpublic viewDate\t\t\t\t\t\t\t= subDays(startOfDay(new Date()), 1);\r\n//\tpublic locale\t\t\t\t\t\t\t= 'fr';\r\n\tpublic tooltipAppendToBody\t\t\t\t= false;\r\n\tpublic socket:\t\t\t\t\tany;\r\n\tpublic data:\t\t\t\t\tany;\r\n\r\n\tpublic color\t\t\t= 'secondary';\r\n\tpublic isRoomSetting\t= false;\r\n\r\n\tpublic events = [\r\n\t\t{\r\n\t\t\tstart:\t\tsubDays(startOfDay(new Date()), 1),\r\n\t\t\tend:\t\taddDays(new Date(), 1),\r\n\t\t\ttitle:\t\t'A 3 day event',\r\n\t\t\tcolor:\t\tcolors.red,\r\n\t\t\tactions:\tthis.test()\r\n\t\t},\r\n\t\t{\r\n\t\t\tstart:\t\tstartOfDay(new Date()),\r\n\t\t\ttitle:\t\t'An event with no end date',\r\n\t\t\tcolor:\t\tcolors.yellow,\r\n\t\t\tactions:\tthis.test()\r\n\t\t},\r\n\t\t{\r\n\t\t\tstart:\t\tsubDays(endOfMonth(new Date()), 3),\r\n\t\t\tend:\t\taddDays(endOfMonth(new Date()), 3),\r\n\t\t\ttitle:\t\t'A long event that spans 2 months',\r\n\t\t\tcolor:\t\tcolors.blue\r\n\t\t},\r\n\t\t{\r\n\t\t\tstart:\t\taddHours(startOfDay(new Date()), 2),\r\n\t\t\tend:\t\tnew Date(),\r\n\t\t\ttitle:\t\t'A draggable and resizable event',\r\n\t\t\tcolor:\t\tcolors.yellow,\r\n\t\t\tactions:\tthis.test(),\r\n\t\t\tresizable:\r\n\t\t\t{\r\n\t\t\t\tbeforeStart:\ttrue,\r\n\t\t\t\tafterEnd:\t\ttrue\r\n\t\t\t},\r\n\t\t\tdraggable: true\r\n\t\t}\r\n\t];\r\n\r\n\tpublic moAdminTasks:\tany\t\t= [];\r\n\tpublic moTasks:\t\t\tany\t\t= [];\r\n\tpublic maRooms:\t\t\tany\t\t= [];\r\n\tpublic maHomeRooms:\t\tany\t\t= [];\r\n\tpublic showTask\t\t\t\t\t= true;\r\n\tpublic showAdminTask\t\t\t= true;\r\n\tpublic listner:\t\t\tany;\r\n\r\n\r\n /**\r\n * Creates an instance of HomePage.\r\n *\r\n * @param {NavController} navCtrl\r\n * @param {TranslateService} translate\r\n *\r\n * @memberOf HomePage\r\n */\r\n\tconstructor(\r\n\t\tpublic\tchatData:\t\t\tChatData,\r\n\t\tpublic\tappComponent:\t\tAppComponent,\r\n\t\tpublic\tuserData:\t\t\tUserData,\r\n\t\tpublic\tsavedData:\t\t\tSavedData,\r\n\t\tpublic workspaceData:\t\tWorkspaceData,\r\n\t\tpublic\tsocketService:\t\tSocketService,\r\n\t\tpublic \tstatisticsService:\tStatisticsService,\r\n\t\tpublic\trouter:\t\t\t\tRouter)\r\n\t{\r\n\t\t// Affectation du titre de la page\r\n\t\tappComponent.setPageTitle('Accueil');\r\n\r\n\t\tif (this.userData.canAccessNotification === true)\r\n\t\t{\r\n\t\t\tthis.canAccessNotification = true;\r\n\t\t}\r\n\r\n\t\tthis.data \t\t= {};\r\n\t\tthis.listner \t= appComponent.homeInfosEmitter.subscribe((value: any) => this.switchEmitterValue(value),\r\n\t\t\t\t\t\t\t\t\t\t\t(error: any) => console.log(error),\r\n\t\t\t\t\t\t\t\t\t\t\t() => console.log('done'));\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération de la liste des rooms dispo\r\n\t\t// ---------------------------------------\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic test()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param value\r\n\t */\r\n\tpublic switchEmitterValue(value: any)\r\n\t{\r\n\t\t\tswitch (value)\r\n\t\t{\r\n\t\t\tcase 'homeRoomsOk':\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'homeTasksOk':\r\n\t\t\t\tthis.getHomeTask();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'homeEpreuveOk':\r\n\t\t\t\tthis.haveEpreuveAdmin();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getHomeRooms()\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getHomeTask()\r\n\t{\r\n\t\tthis.haveTaskData();\r\n\t\tthis.haveTaskDataAdmin();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Clic permettant d'accéder directement à l'interface d'une épreuve\r\n\t * @param epreuve\r\n\t */\r\n\tgoToEpreuve(epreuve: any)\r\n\t{\r\n\t\t//On selectionne les noeuds parents par leurs identifiants\r\n\t\tif (epreuve.parents)\r\n\t\t{\r\n\t\t\tif (epreuve.id)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedMatiere\t= this.workspaceData.getEpreuve(epreuve.id);\r\n\t\t\t}\r\n\t\t\tthis.workspaceData.selectedItems = [];\r\n\r\n\t\t\tfor (let parent of epreuve.parents)\r\n\t\t\t{\r\n\t\t\t\tif (parent.startsWith('*'))\r\n\t\t\t\t{\r\n\t\t\t\t\tlet arrayValue\t= parent.split('::');\r\n\t\t\t\t\tlet key\t\t\t= arrayValue[0];\r\n\t\t\t\t\tlet valueTag\t= arrayValue[1];\r\n\r\n\t\t\t\t\tswitch (key)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcase '*etab':\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedEtablissement\t= this.workspaceData.getEtablissement(valueTag);\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedItems[0]\t\t\t= valueTag;\r\n\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase '*sess':\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedSession \t= this.workspaceData.getSession(valueTag);\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedItems[1] = valueTag;\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase '*exam':\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedExamen \t= this.workspaceData.getExamen(valueTag);\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedItems[2] = valueTag;\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.workspaceData.selectedSujet \t= null;\r\n\r\n\t\t\t\t\tthis.workspaceData.selectedItems[3] = this.workspaceData.selectedMatiere.id;\r\n\t\t\t\t\tthis.workspaceData.selectedSegment\t= 'all';\r\n\t\t\t\t\tthis.savedData.lastGroup \t\t\t= 'epreuve';\r\n\r\n\t\t\t\t\tthis.router.navigate(['/workspace']);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param task\r\n\t */\r\n\tpublic goToSubject(task: Task)\r\n\t{\r\n\t\tlet canAccessTask = this.canAccessTask(task);\r\n\r\n\t\tif (canAccessTask === true)\r\n\t\t{\r\n\t\t\t// ===================================\r\n\t\t\t// Affectation des objets\r\n\t\t\t// ===================================\r\n\t\t\tthis.workspaceData.selectedSujet\t\t\t= this.workspaceData.getSujet(task.idSujet);\r\n\t\t\tthis.workspaceData.selectedMatiere\t\t\t= this.workspaceData.getEpreuve(task.idEpreuve);\r\n\t\t\tthis.workspaceData.selectedExamen\t\t\t= this.workspaceData.getExamen(task.idExamen);\r\n\t\t\tthis.workspaceData.selectedSession\t\t\t= this.workspaceData.getSession(task.idSession);\r\n\t\t\tthis.workspaceData.selectedEtablissement\t= this.workspaceData.getEtablissement(task.idEtablissement);;\r\n\r\n\t\t\tthis.workspaceData.selectedItems = [];\r\n\t\t\tif (this.workspaceData.selectedEtablissement)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedItems[0] = this.workspaceData.selectedEtablissement.id;\r\n\t\t\t}\r\n\t\t\tif (this.workspaceData.selectedSession)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedItems[1] = this.workspaceData.selectedSession.id;\r\n\t\t\t}\r\n\t\t\tif (this.workspaceData.selectedExamen)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedItems[2] = this.workspaceData.selectedExamen.id;\r\n\t\t\t}\r\n\t\t\tif (this.workspaceData.selectedMatiere)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedItems[3] = this.workspaceData.selectedMatiere.id;\r\n\t\t\t}\r\n\r\n\t\t\tthis.workspaceData.selectedTask\t\t= task;\r\n\t\t\tthis.workspaceData.selectedSegment\t= 'all';\r\n\t\t\tthis.workspaceData.goToSubject\t\t= true;\r\n\t\t\tthis.savedData.lastGroup\t\t\t= 'task';\r\n\r\n\r\n\t\t\tif (this.userData.isAdmin() || this.userData.isSuperviseur() === true)\r\n\t\t\t{\r\n\t\t\t\tthis.savedData.lastGroup = 'epreuve';\r\n\t\t\t}\r\n\t\t\tthis.router.navigate(['/workspace']);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.goToSubject\t\t= false;\r\n\t\t\tthis.router.navigate(['/workspace']);\r\n\t\t}\r\n \t}\r\n\r\n\r\n\t /**\r\n\t *\r\n\t * @param task\r\n\t */\r\n\tpublic canAccessTask(task: Task)\r\n\t{\r\n\t\tlet result = true;\r\n\r\n\t\tif ((this.userData.isAdmin() === false && this.userData.isSuperviseur() === false) && task.state === 'done')\r\n\t\t{\r\n\t\t\tresult = false;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic haveTaskData()\r\n\t{\r\n\t\tlet tasks \t= this.workspaceData.taskHomeMine;\r\n\t\tlet nNumber = 0;\r\n\t\tlet bReturn = false;\r\n\r\n\t\tfor (let task in tasks)\r\n\t\t{\r\n\t\t\tnNumber++;\r\n\t\t}\r\n\r\n\t\tif (tasks && nNumber > 0)\r\n\t\t{\r\n\t\t\tthis.haveTask \t= true;\r\n\t\t\tbReturn \t\t= true;\r\n\t\t}\r\n\r\n\t\treturn bReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic haveTaskDataAdmin()\r\n\t{\r\n\t\tlet adminTasks\t\t\t= this.workspaceData.taskHomeAdmin;\r\n\t\tlet adminTasksExpired\t= this.workspaceData.taskHomeAdminExpired;\r\n\t\tlet nNumber\t\t\t\t= 0;\r\n\t\tlet nNumberExp\t\t\t= 0;\r\n\r\n\t\tfor (let task of adminTasks)\r\n\t\t{\r\n\t\t\tif (task.state === 'review')\r\n\t\t\t{\r\n\t\t\t\tnNumber++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (adminTasks && nNumber > 0)\r\n\t\t{\r\n\t\t\tthis.haveTaskAdminValidate = true;\r\n\t\t}\r\n\r\n\t\tfor (let task of adminTasksExpired)\r\n\t\t{\r\n\t\t\tnNumberExp++;\r\n\t\t}\r\n\r\n\t\tif (adminTasksExpired && nNumberExp > 0)\r\n\t\t{\r\n\t\t\tthis.haveTaskAdminExp = true;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic haveEpreuveAdmin()\r\n\t{\r\n\t\tlet epreuves\t= this.workspaceData.epreuveHomeAdmin;\r\n\t\tlet nNumber\t\t= 0;\r\n\r\n\t\tfor (let epreuve of epreuves)\r\n\t\t{\r\n\t\t\tnNumber++;\r\n\t\t}\r\n\r\n\t\tif (epreuves && nNumber > 0)\r\n\t\t{\r\n\t\t\tthis.haveEpreuve = true;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param element\r\n\t */\r\n\tpublic clickDateEvent(element: any)\r\n\t{\r\n\t\tif (element && element instanceof Task)\r\n\t\t{\r\n\t\t\tthis.goToSubject(element);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tpublic keyupHandlerFunction(event: any)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @memberOf HomePage\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.getHomeRooms();\r\n\t\tthis.getHomeTask();\r\n\r\n\t\tthis.workspaceData.resetSelectedHomeEtablissement();\r\n\t\tthis.workspaceData.resetSelectedHomeSession();\r\n\t\tthis.workspaceData.resetSelectedHomeExamen();\r\n\t\tthis.workspaceData.resetSelectedHomeMatiere();\r\n\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngAfterViewInit()\r\n\t{\r\n\t\tthis.statisticsService.getEpreuveStats(null, 160);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnDestroy()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedEtablissement(event: any)\r\n\t{\r\n\r\n\t\tthis.workspaceData.selectedHomeEtablissement = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\t\t\tthis.workspaceData.resetSelectedHomeSession();\r\n\t\t\tthis.workspaceData.resetSelectedHomeExamen();\r\n\t\t\tthis.workspaceData.resetSelectedHomeMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.resetSelectedHomeEtablissement();\r\n\t\t\tthis.workspaceData.resetSelectedHomeSession();\r\n\t\t\tthis.workspaceData.resetSelectedHomeExamen();\r\n\t\t\tthis.workspaceData.resetSelectedHomeMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t\t}\r\n\r\n\t\tthis.workspaceData.filterHomeTasks('etab', id);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedSession(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedHomeSession = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\r\n\t\t\tthis.workspaceData.resetSelectedHomeExamen();\r\n\t\t\tthis.workspaceData.resetSelectedHomeMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.resetSelectedHomeSession();\r\n\t\t\tthis.workspaceData.resetSelectedHomeExamen();\r\n\t\t\tthis.workspaceData.resetSelectedHomeMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t\t}\r\n\t\tthis.workspaceData.filterHomeTasks('sess', id);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedExamen(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedHomeExamen = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\t\t\tthis.workspaceData.resetSelectedHomeMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\r\n\t\t\tthis.workspaceData.resetSelectedHomeExamen();\r\n\t\t\tthis.workspaceData.resetSelectedHomeMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t\t}\r\n\r\n\t\tthis.workspaceData.filterHomeTasks('exam', id);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedMatiere(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedHomeMatiere = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\t\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.resetSelectedHomeMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedHomeSujet();\r\n\t\t}\r\n\r\n\t\tthis.workspaceData.filterHomeTasks('matiere', id);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedSujet(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedHomeSujet = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.selectedHomeSujet = null;\r\n\t\t}\r\n\r\n\t\tthis.workspaceData.filterHomeTasks('suj', id);\r\n\t}\r\n}\r\n","
\r\n\t
\t\t\"\"
\r\n\t\t
\r\n\t\t

{{ 'login.subtitle' | translate }}

\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t
\t\t
\r\n\t\t\t
\r\n\t\t\t
{{errorMessage}}
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\"\"/\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnDestroy, ViewEncapsulation, OnInit, AfterViewInit }\tfrom '@angular/core';\r\nimport { ActivatedRoute, Router }\t\t\t\t\t\t\t\t\t\t\tfrom '@angular/router';\r\n\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\nimport { SavedData }\t\tfrom '../../providers/saved-data';\r\nimport { WorkspaceData }\tfrom '../../providers/workspace-data';\r\nimport { AuthService }\t\tfrom '../../services/auth.service';\r\nimport { SocketService }\tfrom '../../services/socket.service';\r\nimport { UserService }\t\tfrom '../../services/user.service';\r\n\r\nimport { ForgetPasswordModalComponent }\t\t\tfrom '../../modal/forgetPassword/forgetPasswordModal.component';\r\nimport { InfosForgetPasswordModalComponent }\tfrom '../../modal/forgetPassword/infosForgetPasswordModal.component';\r\nimport { ResetPasswordModalComponent }\t\t\tfrom '../../modal/resetPassword/resetPasswordModal.component';\r\n\r\nimport { AppComponent }\t\tfrom '../../app.component';\r\nimport { SCClientSocket }\tfrom 'socketcluster-client';\r\nimport { MatDialog }\t\tfrom '@angular/material';\r\n\r\nimport * as htmlEncode from 'js-htmlencode';\r\n\r\ndeclare var Fingerprint2: any;\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'login-component',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./login.component.scss'],\r\n\ttemplateUrl:\t'login.component.html'\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class LoginComponent implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n\tpublic username:\t\tstring = '';\r\n\tpublic password:\t\tstring = '';\r\n\tpublic color:\t\t\tstring\t= 'primary';\r\n\tpublic checked:\t\t\tboolean = false;\r\n\tpublic disabled:\t\tboolean = false;\r\n\tpublic isError:\t\t\tboolean = false;\r\n\tpublic isLoading:\t\tboolean = false;\r\n\tpublic errorMessage:\tstring\t= 'Vos identifiants sont incorrects';\r\n\tpublic dialogRef:\t\tany\t\t= null;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(\r\n\t\tpublic authService:\t\tAuthService,\r\n\t\tpublic userData:\t\tUserData,\r\n\t\tpublic savedData:\t\tSavedData,\r\n\t\tpublic workspaceData:\tWorkspaceData,\r\n\t\tpublic socketService:\tSocketService,\r\n\t\tpublic userService:\t\tUserService,\r\n\t\tpublic dialog:\t\t\tMatDialog,\r\n\t\tpublic activatedRoute:\tActivatedRoute,\r\n\t\tpublic router:\t\t\tRouter,\r\n\t\tpublic appComponent:\tAppComponent)\r\n {\r\n\t\tappComponent.setPageTitle('Connexion');\r\n\r\n\t\tthis.socketService.on('error', this._handleError.bind(this));\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngAfterViewInit()\r\n\t{\r\n\t\t// On analyse l'url pour le cas d'une réinitialisation de mot de passe\r\n\t\tif (window && window.location && window.location.search)\r\n\t\t{\r\n\t\t\tconst elements = window.location.search.split('?');\r\n\r\n\t\t\tif (elements.length === 2)\r\n\t\t\t{\r\n\t\t\t\tconst strElement = elements[1].split('=');\r\n\t\t\t\tif (strElement.length === 2)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst key\t= strElement[0];\r\n\t\t\t\t\tconst value = strElement[1];\r\n\r\n\t\t\t\t\tif (key === 'resetPassCode' && value)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// On vérifie la validité du code de réinitialisation\r\n\t\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userService.checkCodePasswordReset(value).then(res =>\r\n\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\tif (res && res.result && res.result.codeValid === true)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t// si le code de réinitialisation est valide\r\n\t\t\t\t\t\t\t\t\t// mais qu'il est périmé on affiche une pop up\r\n\t\t\t\t\t\t\t\t\t// d'information\r\n\t\t\t\t\t\t\t\t\tif (res.result.dateValid === false && res.result.mailUser === undefined && res.result.compte === undefined)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.dialog.open(InfosForgetPasswordModalComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\theight:\t\t\t'30%',\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'60%',\r\n\t\t\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tusermail:\t'error',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\t\t'errorOutOfDateLink'\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t// Si le code n'est pas périmé alors on affiche la pop up de saisie\r\n\t\t\t\t\t\t\t\t\t\t// du nouveau mot de passe\r\n\t\t\t\t\t\t\t\t\t\tconst dialogRefPasswordReset = this.dialog.open(ResetPasswordModalComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\theight:\t\t\t'50%',\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'60%',\r\n\t\t\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\t\t'resetWithCode',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tresetCode:\tres.codeReset,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcompteUser: res.result.compte,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmailUser:\tres.result.mailUser\r\n\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisableClose: true\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t// A la fermeture de la box\r\n\t\t\t\t\t\t\t\t\t\tdialogRefPasswordReset.afterClosed().subscribe((resultReset: any) =>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tif (resultReset && resultReset === true)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.dialog.open(InfosForgetPasswordModalComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight:\t\t\t'30%',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'60%',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tusermail:\t'error',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\t\t'confirmPasswordUpdated'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (res && res.result && res.result.codeValid === false)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.dialog.open(InfosForgetPasswordModalComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\theight:\t\t\t'30%',\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'60%',\r\n\t\t\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tusermail:\t'error',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype:\t\t'errorInvalidLink'\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}).catch(err =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t}, 1000);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnDestroy()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic onFocus()\r\n\t{\r\n\t\tthis.isError = false;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tpublic onKeyUp(event: any)\r\n\t{\r\n\t\tthis.username = this.username.toLowerCase();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic login()\r\n\t{\r\n\t\tthis.userData.setStateApplication('application', 'pending');\r\n\t\tlet fResult: any;\r\n\r\n\t\tlet options =\r\n\t\t\t{\r\n\t\t\t\tuserDefinedFonts:\t\t\t\t\t[''],\r\n\t\t\t\texcludeUserAgent :\t\t\t\t\ttrue,\r\n\t\t\t\texcludeLanguage:\t\t\t\t\tfalse,\r\n\t\t\t\texcludeColorDepth:\t\t\t\t\tfalse,\r\n\t\t\t\texcludeAvailableScreenResolution:\tfalse,\r\n\t\t\t\texcludeTimezoneOffset:\t\t\t\tfalse,\r\n\t\t\t\texcludeIndexedDB:\t\t\t\t\tfalse,\r\n\t\t\t\texcludeDeviceMemory:\t\t\t\tfalse,\r\n\t\t\t\texcludeOpenDatabase:\t\t\t\tfalse,\r\n\t\t\t\texcludeCpuClass:\t\t\t\t\tfalse,\r\n\t\t\t\texcludePlatform:\t\t\t\t\tfalse,\r\n\t\t\t\texcludeHardwareConcurrency:\t\t\tfalse,\r\n\t\t\t\texcludeCanvas:\t\t\t\t\t\tfalse,\r\n\t\t\t\texcludeTouchSupport:\t\t\t\tfalse,\r\n\t\t\t\texcludeHasLiedLanguages:\t\t\tfalse,\r\n\t\t\t\texcludeHasLiedResolution:\t\t\tfalse,\r\n\t\t\t\texcludeHasLiedOs:\t\t\t\t\tfalse,\r\n\t\t\t\texcludeHasLiedBrowser:\t\t\t\tfalse,\r\n\t\t\t\texcludeAdBlock:\t\t\t\t\t\ttrue,\r\n\t\t\t\texcludeSessionStorage:\t\t\t\ttrue,\r\n\t\t\t\texcludeWebGL:\t\t\t\t\t\ttrue,\r\n\t\t\t\texcludeAddBehavior:\t\t\t\t\ttrue,\r\n\t\t\t\texcludeJsFonts:\t\t\t\t\t\ttrue,\r\n\t\t\t\texcludeFlashFonts:\t\t\t\t\ttrue,\r\n\t\t\t\texcludePlugins:\t\t\t\t\t\ttrue,\r\n\t\t\t\texcludeIEPlugins:\t\t\t\t\ttrue,\r\n\t\t\t\texcludeDoNotTrack:\t\t\t\t\ttrue,\r\n\t\t\t\texcludePixelRatio:\t\t\t\t\ttrue,\r\n\t\t\t\texcludeScreenResolution:\t\t\ttrue,\r\n\t\t\t\texcludeWebGLVendorAndRenderer:\t\ttrue,\r\n\t\t\t};\r\n\r\n\t\t// test fingerprint pr le moment\r\n\t\tnew Fingerprint2(options).get((result: any, components: any) =>\r\n\t\t{\r\n\t\t\t// this will use all available fingerprinting sources\r\n\t\t\tfResult = result;\r\n\r\n\t\t\t// components is an array of all fingerprinting components used\r\n\t\t\tthis.isLoading = true;\r\n\r\n\t\t\tthis.username = htmlEncode.htmlEncode(this.username);\r\n\t\t\tthis.password = htmlEncode.htmlEncode(this.password);\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (!socket || !socket.state || socket.state !== SCClientSocket.OPEN)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.authService.doLogin(this.username, this.password, fResult)\r\n\t\t\t\t\t.subscribe(res =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tlet body = JSON.parse(res.text());\r\n\r\n\t\t\t\t\t\tlet mailUnique = body.data.user.email;\r\n\t\t\t\t\t\tif (body.err === false && body.data && body.data.token)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// this.nav.setRoot(TabsPage);\r\n\t\t\t\t\t\t\tthis.userData.setFingerPrint(fResult);\r\n\r\n\t\t\t\t\t\t\tthis.isLoading\t\t= false;\r\n\t\t\t\t\t\t\tthis.isError\t\t= false;\r\n\r\n\t\t\t\t\t\t\tthis.userData.login(this.username, body.data.token, mailUnique);\r\n\t\t\t\t\t\t\t//this.router.navigate(['/home']);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, (err) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tif (socket.authState === SCClientSocket.AUTHENTICATED && this.userData.hasLoggedIn() === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.userData.setTokenKey(socket.signedAuthToken);\r\n\r\n\t\t\t\t\t\tthis.userData.mustReset\t\t\t\t= false;\r\n\t\t\t\t\t\tthis.userData.otpAuth\t\t\t\t= false;\r\n\t\t\t\t\t\tthis.userData.mustValidateBrowser\t= false;\r\n\r\n\t\t\t\t\t\tthis.isLoading\t= false;\r\n\t\t\t\t\t\tthis.isError\t= false;\r\n\r\n\t\t\t\t\t\tthis.userData.setStateApplication('application', 'online');\r\n\t\t\t\t\t\tthis.userService.checkFingerPrintUser();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tlet credentials =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tusername:\t\tthis.username,\r\n\t\t\t\t\t\t\t\tpassword:\t\tthis.password,\r\n\t\t\t\t\t\t\t\tfingerprint:\tfResult\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tsocket.emit('login', credentials, (err: any, datas: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.userData.setAccountInfo(datas);\r\n\t\t\t\t\t\t\tthis.isLoading = false;\r\n\r\n\t\t\t\t\t\t\tif (datas.logged && datas.logged === true)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.isError = false;\r\n\r\n\t\t\t\t\t\t\t\tif (datas && datas.infosUser)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.userData.setCurrentUser(datas.infosUser);\r\n\r\n\t\t\t\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t\t\t\t * Par défault on initialise les noeuds ouverts précédements\r\n\t\t\t\t\t\t\t\t\t * avec ceux enregistrés dans le localstorage\r\n\t\t\t\t\t\t\t\t\t */\r\n\r\n\t\t\t\t\t\t\t\t\tthis.workspaceData.selectedItems = this.savedData.openedNodes;\r\n\r\n\t\t\t\t\t\t\t\t\tif (datas.infosUser.prefs)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet preferences = datas.infosUser.prefs;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (preferences.paramLogiciels)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tfor (let key in preferences.paramLogiciels)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (preferences.paramLogiciels[key])\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tswitch (key)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'worspaceTaskChecked':\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet workspaceChecked = preferences.paramLogiciels[key] === true || preferences.paramLogiciels[key] === 'true';\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.savedData.isWorkspaceTaskChecked = workspaceChecked;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (preferences.lastGroup)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tthis.savedData.lastGroup = preferences.lastGroup;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (preferences.selectedNodes && this.savedData.openedNodes === null)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlet selectedNodes;\r\n\t\t\t\t\t\t\t\t\t\t\tif (typeof preferences.selectedNodes === 'string')\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tselectedNodes = JSON.parse(preferences.selectedNodes);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tselectedNodes = typeof preferences.selectedNodes;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t\t\t\t\t\t * S'il n'y a pas de noeud enregistré dans le localstorage, on les initialise\r\n\t\t\t\t\t\t\t\t\t\t\t * avec ceux enregistrés en base de données\r\n\t\t\t\t\t\t\t\t\t\t\t */\r\n\t\t\t\t\t\t\t\t\t\t\tif (!this.workspaceData.selectedItems || this.workspaceData.selectedItems.length === 0)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (selectedNodes && selectedNodes.length > 0)\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workspaceData.selectedItems = [];\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let index = 0; index < selectedNodes.length; index++)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (selectedNodes[index])\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tswitch(index)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.savedData.lastEtablissementId = selectedNodes[index];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workspaceData.selectedItems.push(selectedNodes[index]);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.savedData.lastSessionId = selectedNodes[index];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workspaceData.selectedItems.push(selectedNodes[index]);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.savedData.lastExamenId = selectedNodes[index];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workspaceData.selectedItems.push(selectedNodes[index]);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.savedData.lastDisciplineId = selectedNodes[index];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workspaceData.selectedItems.push(selectedNodes[index]);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.isError = true;\r\n\r\n\t\t\t\t\t\t\t\tif (err.includes('#LG001') === true) // s'il s'agit d'une erreur d'identification\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t// On affiche un message adapté\r\n\t\t\t\t\t\t\t\t\terr = 'Votre identifiant ou votre mot de passe est incorrect';\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlet messageError\t= err || 'Erreur de connexion';\r\n\t\t\t\t\t\t\t\tthis.errorMessage\t= messageError;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic launchResetPassword()\r\n\t{\r\n\t\tconst dialogRef = this.dialog.open(ForgetPasswordModalComponent,\r\n\t\t\t{\r\n\t\t\t\theight:\t\t\t'40%',\r\n\t\t\t\twidth:\t\t\t'40%',\r\n\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\tdata:\r\n\t\t\t\t{}\r\n\t\t\t});\r\n\r\n\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t{\r\n\t\t\tif (result !== undefined)\r\n\t\t\t{\r\n\t\t\t\tthis.dialog.open(InfosForgetPasswordModalComponent,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theight:\t\t\t'30%',\r\n\t\t\t\t\t\twidth:\t\t\t'60%',\r\n\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tusermail:\t result,\r\n\t\t\t\t\t\t\ttype:\t\t'confirmForget'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t// Handle keypress event, for sending chat message\r\n\tpublic eventHandler(event: KeyboardEvent): void\r\n\t{\r\n\t\tif (event.key === \"Enter\")\r\n\t\t{\r\n\t\t\tthis.login();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Vérification de la présence d'un login et d'un password pour activer le bouton\r\n\t */\r\n\tpublic canDoLogin()\r\n\t{\r\n\r\n\t\tlet result = false;\r\n\t\tif (this.password && this.username)\r\n\t\t{\r\n\t\t\tconst filteredLogin\t\t= this.username.replace(/ /gi, '');\r\n\t\t\tconst filteredPassoword\t= this.password.replace(/ /gi, '');\r\n\r\n\t\t\tif (filteredLogin !== '' && filteredPassoword !== '')\r\n\t\t\t{\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param data\r\n\t */\r\n\tprivate _handleError(data: any)\r\n\t{\r\n\t\t/**\r\n\t\t * Si on attend une connection on désactive le spinner et on affiche un message d'érreur\r\n\t\t */\r\n\t\tif (this.isLoading)\r\n\t\t{\r\n\t\t\tthis.isLoading\t\t= false;\r\n\r\n\t\t\tthis.userData.setStateApplication('application', 'offline');\r\n\r\n\t\t\tthis.isError\t\t= true;\r\n\t\t\tthis.errorMessage\t= 'Serveur indisponible. Veuillez rééssayer ultérieurement.';\r\n\t\t}\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{{task.nameEpreuve}} - {{task.nameSujet}}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
{{task.nameEtablissement}} - {{task.nameSession}}
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t
{{task.typeLib}}
\r\n\t\t\t
{{task.stateLib}}
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, Input, OnChanges, DoCheck, EventEmitter }\tfrom '@angular/core';\r\nimport { UserData }\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom '../../providers/user-data';\r\nimport { WorkspaceData }\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom '../../providers/workspace-data';\r\nimport { TaskData }\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom '../../providers/task-data';\r\n\r\n\r\n@Component({\r\n\tselector:\t'app-state-stats',\r\n\toutputs:\t['_onClick: onClick'],\r\n\r\n\ttemplateUrl:\t'./state-stats.component.html',\r\n\tstyleUrls:\t\t['./state-stats.component.scss']\r\n})\r\n\r\n\r\nexport class StateStatsComponent implements OnChanges, DoCheck, OnInit\r\n{\r\n\tpublic _onClick: EventEmitter = new EventEmitter();\r\n\r\n\t@Input() task: any;\r\n\r\n\tpublic content:\t\tany;\r\n\tpublic dateClass:\tany;\r\n\tpublic fullDate:\tany;\r\n\tpublic taskId:\t\tany;\r\n\tpublic oSujet:\t\tany;\r\n\t\r\n\tpublic endDate: Date;\r\n\r\n\r\n\tpublic moUserDataSubscription: any;\r\n\r\n\tconstructor(public userData: UserData, public workspaceData: WorkspaceData, public taskData: TaskData)\r\n\t{\r\n\t\tthis.content = '';\r\n\r\n\r\n\t}\r\n\r\n\r\n\tpublic ngOnChanges()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.taskId \t= this.task.id;\r\n\t\tthis.endDate \t= this.task.endDate;\r\n\t\t//this.task \t= this.taskData.getTaskById(this.taskId);\r\n\t\tconst er \t= this.workspaceData.globalEmitter.subscribe((value: string) =>\r\n\t\t{\r\n\t\t\t//Evènement récupéré lorsqu'un nouveau classeur à été ajouté\r\n\t\t\t//On ajoute donc le dernier elément de la structure dans user data\r\n\t\t\t//dans les classeurs du composant\r\n\t\t\tif (value === 'majStatsEpr')\r\n\t\t\t{\r\n\t\t\t\tlet\tstatsNode2 = this.workspaceData.statsNode2;\r\n\t\t\t\tif(statsNode2)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let statsNode of statsNode2)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.taskId === statsNode.idTask)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.endDate = new Date(statsNode.echeance);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.taskData.taskDataEmitter.emit('task::update');\r\n\r\n\t}\r\n\t\r\n\r\n\tpublic ngDoCheck()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\tpublic onClick(test: any)\r\n\t{\r\n\t\tthis._onClick.emit(this.task);\r\n\t}\r\n}\r\n","
\r\n
\r\n\r\n
\r\n\t\t\t
\r\n\t\t\t\t{{titleModal}}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
close
\r\n\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n\t\t\t
\r\n\t\t\t\t{{ 'editorPanel.informations' | translate }}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{{ 'editorPanel.droits' | translate }}\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ subject.libelle }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ type.name }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
{{ 'editorPanel.descriptionRequired' | translate }}
\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
{{ 'editorPanel.descriptionRequired' | translate }}
\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {{ option.libelle }} \r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{ 'editorPanel.sendMail' | translate }}\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ 'editorPanel.noAccessFile' | translate }}\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t{{ 'editorPanel.readOnlyFile' | translate }}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t{{ 'editorPanel.canDeleteFile' | translate }}\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {{ 'editorPanel.accessAllFiles' | translate }}\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t{{ 'editorPanel.accessFileList' | translate }}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {{ 'editorPanel.nameFile' | translate }} \r\n\t\t\t\t\t\t\t\t\t {{element.name}} \r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t{{ 'editorPanel.userCanCreateFile' | translate }}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t
\r\n
\r\n","\r\nimport { Component, EventEmitter, ViewEncapsulation, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef, MatDialog }\t\t\t\t\t\t\t from '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\t\t from '@angular/material';\r\nimport { DataSource, SelectionModel }\t from '@angular/cdk/collections';\r\nimport {Observable} from 'rxjs/Rx';\r\nimport {startWith, map} from 'rxjs/operators';\r\nimport { TranslateService } \t\t\t\t\t\t from '@ngx-translate/core';\r\n\r\nimport { Etablissement }\t\tfrom '../../../../classes/etablissement.class';\r\nimport { Session }\t\t\t\tfrom '../../../../classes/session.class';\r\nimport { Examen }\t\t\t\tfrom '../../../../classes/examen.class';\r\nimport { Matiere }\t\t\t\tfrom '../../../../classes/matiere.class';\r\nimport { Task }\t\t\t\t\tfrom '../../../../classes/task.class';\r\nimport { Sujet }\t\t\t\tfrom '../../../../classes/sujet.class';\r\nimport { File as FileObject }\tfrom '../../../../classes/file.class';\r\n\r\nimport { TaskService }\t\tfrom '../../../../services/task.service';\r\nimport { FileService }\t\tfrom '../../../../services/file.service';\r\nimport { EncryptService } from '../../../../services/encrypt.service';\r\nimport { UserData }\t\t\tfrom '../../../../providers/user-data';\r\nimport { WorkspaceData }\tfrom '../../../../providers/workspace-data';\r\n\r\nimport { WarningUnloggedUserModalComponent }\t\t\t\tfrom '../../modal/warningUnloggedUserModal.component';\r\nimport { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n/*\r\nexport interface FileItemList {\r\n name: string;\r\n}\r\n*/\r\n\r\nexport class FileItemDataSource extends DataSource\r\n{\r\n public objSubject: any;\r\n\r\n\r\n\tconstructor(objSubject: any)\r\n\t{\r\n\t\tsuper();\r\n this.objSubject = objSubject;\r\n\t}\r\n\r\n\r\n\t/** Connect function called by the table to retrieve one stream containing the data to render. */\r\n\tconnect(): Observable\r\n\t{\r\n\t\treturn Observable.of(this.objSubject.pj);\r\n\t}\r\n\r\n\tdisconnect() { }\r\n}\r\n\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'editor-panel-task',\r\n\ttemplateUrl:\t'./editor-panel-task.component.html',\r\n\tinputs:\t\t\t['task'],\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\toutputs:\t\t['_onSubmit: onSubmit', '_onCancel: onCancel'],\r\n\tstyleUrls:\t\t['./editor-panel-task.component.scss']\r\n})\r\n\r\n\r\nexport class EditorPanelTaskComponent implements OnInit, OnDestroy\r\n{\r\n public startDate = new Date();\r\n\r\n\tpublic oldTask:\t\t\t\tTask;\r\n public initialTask:\t\t\tTask;\r\n public currentTask:\t\t\tTask;\r\n public structureModel:\t\tany[];\r\n public isTaskEdition:\t\tboolean = false;\r\n public titleModal: string;\r\n public itemSelected:\t\tstring;\r\n public subjectsAvailable:\tany[];\r\n public usersAvailable:\t\tany[];\r\n public moFormGroup:\t\t\tFormGroup;\r\n public scenarioList:\t\tany;\r\n\r\n public currentName:\t\t\tstring;\r\n public currentType:\t\t\tnumber;\r\n public currentIdSujet:\t\tstring;\r\n public currentDescription:\tstring;\r\n public currentAssigneduser: any;\r\n\r\n public sendEmail:\t\t\tboolean = false;\r\n\r\n public noAccessFile:\t\t\tboolean = false;\r\n public readOnlyFile:\t\t\tboolean = false;\r\n public canCreateFile:\t\t\tboolean = true;\r\n public majSelected:\t\t\t\tany\t\t= 'false';\r\n public canDeleteFile:\t\t\tboolean = false;\r\n public typeFileAccess: string = 'all';\r\n\r\n public selectedClasseur:\tEtablissement;\r\n public selectedSession:\t\tSession;\r\n public selectedExamen:\t\tExamen;\r\n public selectedMatiere:\t\tMatiere;\r\n public selectedSubject: Sujet;\r\n public dateEcheance:\t\tDate;\r\n\r\n public moFormCtrType:\t\t\tFormControl;\r\n public moFormCtrSubject:\t\tFormControl;\r\n public moFormCtrDescription:\tFormControl;\r\n public moFormCtrEcheance:\t\tFormControl;\r\n public moFormCtrNoAccessFile:\tFormControl;\r\n public moFormCtrCanCreateFile:\tFormControl;\r\n public moFormCtrAssignedUser:\tFormControl;\r\n public moFormCtrSendEmail:\t\tFormControl;\r\n\r\n public filesSubject:\t\t\t\t\tFileItemDataSource;\r\n public moUserDataEmmiterSubscription:\tany;\r\n public selection:\t\t\t\t\t\tSelectionModel\t= new SelectionModel(true, []);\r\n public displayedColumns\t\t\t\t\t\t\t\t\t\t\t\t= ['select', 'name'];\r\n\r\n public unloggedUserSelected: boolean = false;\r\n\r\n public _onSubmit: EventEmitter\t\t= new EventEmitter();\r\n\tpublic _onCancel: EventEmitter\t= new EventEmitter();\r\n\r\n public treeDatas: any = undefined;\r\n public txtValidateButon: any;\r\n\r\n filteredOptions: Observable;\r\n\r\n constructor(public dialogRef:\t\tMatDialogRef,\r\n public taskService:\t\tTaskService,\r\n public fileService:\t\tFileService,\r\n public encryptService:\tEncryptService,\r\n public fb:\t\t\t\tFormBuilder,\r\n public userData:\t\tUserData,\r\n public workspaceData:\tWorkspaceData,\r\n public dialog:\t\t\tMatDialog,\r\n public translate: TranslateService,\r\n @Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\r\n\t\tthis.translate.get('editorPanel.titleCreation').subscribe((title: string) =>\r\n\t\t{\r\n\t\t\tthis.titleModal = title;\r\n\t\t});\r\n\r\n\t\tthis.itemSelected = 'informations';\r\n\r\n\t\tthis.translate.get('editorPanel.new').subscribe((value: string) =>\r\n\t\t{\r\n\r\n\t\t\tthis.subjectsAvailable = [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue:\t\t'new',\r\n\t\t\t\t\tlibelle:\tvalue\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\t});\r\n\r\n\t\tthis.translate.get('editorPanel.noUser').subscribe((value: string) =>\r\n\t\t{\r\n\t\t\tthis.usersAvailable = [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue:\t\t'none',\r\n\t\t\t\t\tloggedOnce: true,\r\n\t\t\t\t\tisPrinter:\tfalse,\r\n\t\t\t\t\tlibelle:\tvalue\r\n\t\t\t\t}];\r\n\t\t});\r\n\r\n let allUsers = this.userData.getUsers();\r\n\r\n\t\tif (allUsers)\r\n\t\t{\r\n\t\t\tfor (let key in allUsers)\r\n\t\t\t{\r\n\t\t\t\tif (allUsers[key])\r\n\t\t\t\t{\r\n\t\t\t\t\tlet userInfo;\r\n\t\t\t\t\tlet outputContent = key;\r\n\r\n\t\t\t\t\tif (key)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tuserInfo = this.userData.getUser(key);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (userInfo && userInfo.infos && (userInfo.infos.nom || userInfo.infos.prenom))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toutputContent = '';\r\n\r\n\t\t\t\t\t\tif (userInfo.infos.prenom)\toutputContent += userInfo.infos.prenom + ' ';\r\n\t\t\t\t\t\tif (userInfo.infos.nom)\t\toutputContent += userInfo.infos.nom;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet loggedOnce: boolean = true;\r\n\t\t\t\t\tif (userInfo && userInfo.state && userInfo.state.active)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet dateActive = new Date(userInfo.state.active);\r\n\t\t\t\t\t\tif (dateActive && dateActive.getTime() === 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tloggedOnce = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet isPrinter: boolean = false;\r\n\t\t\t\t\tif (userInfo && userInfo.publics && userInfo.publics.isPrinter)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tisPrinter = userInfo.publics.isPrinter === 'true';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.usersAvailable.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue:\t\tkey,\r\n\t\t\t\t\t\t\tloggedOnce: loggedOnce,\r\n\t\t\t\t\t\t\tisPrinter:\tisPrinter,\r\n\t\t\t\t\t\t\tlibelle:\toutputContent\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (this.data)\r\n {\r\n /**\r\n * Récupération des éléments de l'arborescence selectionnés\r\n */\r\n if (this.data.selectedItems)\r\n {\r\n if (this.data.selectedItems[0])\r\n\t\t\t\t\tthis.selectedClasseur = this.workspaceData.selectedEtablissement;\r\n\r\n if (this.data.selectedItems[1])\r\n\t\t\t\t\tthis.selectedSession = this.workspaceData.selectedSession;\r\n\r\n if (this.data.selectedItems[2])\r\n\t\t\t\t\tthis.selectedExamen = this.workspaceData.selectedExamen;\r\n\r\n if (this.data.selectedItems[3])\r\n\t\t\t\t\tthis.selectedMatiere = this.workspaceData.selectedMatiere;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (this.data.oldTask)\r\n {\r\n\t\t\t\tthis.oldTask = this.data.oldTask;\r\n\t\t\t}\r\n\t\t\tif (this.data.majSelected)\r\n {\r\n\t\t\t\tthis.majSelected = this.data.majSelected;\r\n\t\t\t}\r\n\r\n /**\r\n * lorsqu'une tache est transmise au composant d'édition\r\n * on remplie le formulaire avec les informations existantes\r\n * pour gérer l'édition\r\n *\r\n * On considère lorsqu'une tache est transmise que nous sommes par défaut en mode édition (sauf si le paramètre isEdition est affecté de faux)\r\n *\r\n * Setter\r\n */\r\n if (this.data.task)\r\n {\r\n\t\t\t\tthis.currentTask = this.data.task;\r\n\r\n // ---------------------------------------\r\n\t\t\t\t// récupération du process courant\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tlet idEpreuve\t= this.currentTask.idEpreuve;\r\n let oEpreuve\t= this.workspaceData.getEpreuve(idEpreuve);\r\n\r\n if (oEpreuve)\r\n {\r\n this.scenarioList = oEpreuve.scenario;\r\n }\r\n\r\n this.currentName\t\t\t= this.currentTask.name;\r\n this.currentType\t\t\t= Number(this.currentTask.type);\r\n this.currentIdSujet\t\t\t= this.currentTask.idSujet;\r\n this.currentDescription\t\t= this.currentTask.description;\r\n this.currentAssigneduser\t= this.currentTask.assigneduser;\r\n this.selectedSubject\t\t= this.workspaceData.getSujet(this.currentIdSujet);\r\n\t\t\t\tconst currentTypeScenario\t= this.getType();\r\n\r\n\t\t\t\t// On détermine si l'imprimeur aura accés ou pas au document de fin de tache\r\n\t\t\t\tthis.currentTask.hasReadRightForPrinter = currentTypeScenario ? currentTypeScenario.isReadablePrinter === true : false;\r\n\r\n this.translate.get('editorPanel.newTaskText').subscribe((value: string) => {\r\n\t\t\t\t\tconst currentTypeName = currentTypeScenario ? currentTypeScenario.name : '';\r\n });\r\n\r\n if (this.selectedSubject)\r\n {\r\n this.fileService.getFiles(this.selectedSubject.id);\r\n }\r\n\r\n if (!this.currentAssigneduser)\r\n {\r\n this.currentAssigneduser\t= this.usersAvailable[0];\r\n this.unloggedUserSelected\t= false;\r\n }\r\n else\r\n {\r\n this.currentAssigneduser = _.find(this.usersAvailable, (user: any) => { return user.value === this.currentAssigneduser; });\r\n\r\n if (this.currentAssigneduser)\r\n {\r\n if (this.currentAssigneduser.loggedOnce === false)\r\n {\r\n this.unloggedUserSelected = true;\r\n }else\r\n {\r\n this.unloggedUserSelected = false;\r\n }\r\n }\r\n }\r\n\r\n this.dateEcheance = this.currentTask.endDate;\r\n this._initTaskParents();\r\n this.isTaskEdition = this.data.isEdition === false ? false : true;\r\n\r\n if (this.data.task.idSujet)\r\n {\r\n let treeStructure = this.workspaceData.getBranchFromId(this.data.task.idSujet);\r\n\r\n this.treeDatas\t\t\t\t\t\t\t= {};\r\n this.treeDatas.selectedEtablissement\t= treeStructure.etablissement;\r\n this.treeDatas.selectedSession\t\t\t= treeStructure.session;\r\n this.treeDatas.selectedExamen\t\t\t= treeStructure.examen;\r\n this.treeDatas.selectedMatiere\t\t\t= treeStructure.matiere;\r\n\r\n if (this.treeDatas.selectedMatiere)\r\n {\r\n for (let sujet of this.treeDatas.selectedMatiere.sujets)\r\n {\r\n\t\t\t\t\t\t\tthis.subjectsAvailable.push(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue:\t\tsujet.id,\r\n\t\t\t\t\t\t\t\t\tlibelle:\tsujet.name\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n }\r\n }\r\n\r\n // ---------------------------------------\r\n // S'il ne s'agit pas d'une nouvelle tache que l'on créé\r\n // on initialise l'ensemble des champs\r\n // ---------------------------------------\r\n\t\t\t\tlet jsonValue\t\t= this.currentTask.toJson();\r\n\t\t\t\tthis.initialTask\t= Task.fromJsonObject(jsonValue);\r\n\r\n //initialisation des champs relatifs aux droits\r\n this.noAccessFile\t= this.currentTask.noAccessFile;\r\n this.canCreateFile\t= this.currentTask.canCreateFile;\r\n\r\n if (this.currentTask.noAccessFile === false)\r\n {\r\n this.readOnlyFile\t= this.currentTask.readOnlyFile;\r\n this.canDeleteFile\t= this.currentTask.canDeleteFile;\r\n this.typeFileAccess = this.currentTask.typeFileAccess;\r\n }\r\n else\r\n {\r\n this.readOnlyFile\t= false;\r\n this.canDeleteFile\t= false;\r\n this.typeFileAccess = 'all';\r\n this.selection\t\t= new SelectionModel(true, []);\r\n }\r\n\r\n }\r\n else\r\n {\r\n\r\n // ---------------------------------------\r\n // Si auncune tache n'est renseigné on considère qu'il s'agit d'un\r\n // ajout de tache\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tconst currentTypeScenario\t= this.getType();\r\n this.currentTask\t\t\t= new Task();\r\n this.currentTask.flags\t\t= ['inprogress'];\r\n\r\n\t\t\t\tif (this.workspaceData.selectedSujet)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.currentIdSujet = this.workspaceData.selectedSujet.id;\r\n\t\t\t\t}\r\n\r\n this.selectedSubject\t= this.workspaceData.getSujet(this.currentIdSujet);\r\n\t\t\t\tthis.scenarioList\t\t= this.workspaceData.selectedMatiere.scenario;\r\n\r\n if (this.workspaceData.selectedMatiere)\r\n {\r\n for (let sujet of this.workspaceData.selectedMatiere.sujets)\r\n {\r\n\t\t\t\t\t\tthis.subjectsAvailable.push(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue:\t\tsujet.id,\r\n\t\t\t\t\t\t\t\tlibelle:\tsujet.name\r\n\t\t\t\t\t\t\t});\r\n }\r\n }\r\n\r\n\t\t\t\tthis.translate.get('editorPanel.formatedText1').subscribe((value1: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.translate.get('editorPanel.formatedText2').subscribe((value2: string) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.currentName = '';\r\n\t\t\t\t\t\tthis.currentName += value1;\r\n\t\t\t\t\t\tthis.currentName += currentTypeScenario ? currentTypeScenario.name : '';\r\n\r\n\t\t\t\t\t\tif (this.workspaceData.selectedSujet)\r\n\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\tthis.currentName += value2;\r\n\t\t\t\t\t\t\tthis.currentName += this.workspaceData.selectedSujet.name;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n this.currentAssigneduser = this.usersAvailable[0];\r\n this._initTaskParents();\r\n this.isTaskEdition = false;\r\n\r\n this.selection = new SelectionModel(true, []);\r\n }\r\n\r\n\t\t\tconst hasAdminRight = this.userData.isAdmin() === true || this.userData.isSuperviseur() === true;\r\n\r\n this.moFormCtrType\t\t\t= this.fb.control({value: this.currentType,\t\t\tdisabled: hasAdminRight === false},\t\t\tValidators.required);\r\n this.moFormCtrSubject\t\t= this.fb.control({value: this.currentIdSujet,\t\tdisabled: true},\t\t\t\t\t\t\tValidators.required);\r\n this.moFormCtrDescription\t= this.fb.control({value: this.currentName,\t\t\tdisabled: hasAdminRight === false},\t\t\tValidators.required);\r\n this.moFormCtrEcheance\t\t= this.fb.control({value: this.dateEcheance,\t\tdisabled: hasAdminRight === false},\t\t\tValidators.required);\r\n this.moFormCtrAssignedUser\t= this.fb.control({value: this.currentAssigneduser, disabled: hasAdminRight === false},\t\t\t[Validators.required, this.isAssignedUserValid.bind(this)]);\r\n this.moFormCtrNoAccessFile\t= this.fb.control({value: this.noAccessFile,\t\tdisabled: hasAdminRight === false});\r\n this.moFormCtrCanCreateFile\t= this.fb.control({value: this.canCreateFile,\t\tdisabled: hasAdminRight === false});\r\n this.moFormCtrSendEmail\t\t= this.fb.control({value: this.sendEmail,\t\t\tdisabled: hasAdminRight === false});\r\n\r\n this.moFormGroup = this.fb.group(\r\n\t\t\t\t{\r\n\t\t\t\t\ttype:\t\t\tthis.moFormCtrType,\r\n\t\t\t\t\tsubject:\t\tthis.moFormCtrSubject,\r\n\t\t\t\t\tdescription:\tthis.moFormCtrDescription,\r\n\t\t\t\t\tdateEcheance:\tthis.moFormCtrEcheance,\r\n\t\t\t\t\tassignedUser:\tthis.moFormCtrAssignedUser,\r\n\t\t\t\t\tnoAccessFile:\tthis.moFormCtrNoAccessFile,\r\n canCreateFile:\tthis.moFormCtrCanCreateFile,\r\n sendEmail: this.moFormCtrSendEmail\r\n });\r\n\r\n\t\t\tif (this.isTaskEdition === true)\r\n\t\t\t{\r\n\t\t\t\tthis.translate.get('editorPanel.title').subscribe((value1: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.translate.get('common.validate').subscribe((value2: string) =>\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tthis.titleModal\t\t\t= value1;\r\n\t\t\t\t\t\tthis.txtValidateButon\t= value2;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.translate.get('editorPanel.titleCreation').subscribe((value1: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.translate.get('common.add').subscribe((value2: string) =>\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tthis.titleModal\t\t\t= value1;\r\n\t\t\t\t\t\tthis.txtValidateButon\t= value2;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n public ngOnInit()\r\n\t{\r\n this.moUserDataEmmiterSubscription = this.userData.globalEmitter.subscribe((value: any) =>\r\n\t\t{\r\n\t\t\tif (value === 'files::get')\r\n\t\t\t{\r\n this.initExistingFiles();\r\n }\r\n\r\n });\r\n\t\tthis.initExistingFiles();\r\n\r\n\t\tthis.filteredOptions = this.moFormCtrAssignedUser.valueChanges.pipe(\r\n\t\t\tstartWith(null),\r\n\t\t\tmap(value => typeof value === 'string' ? value : value ? value.libelle : ''),\r\n\t\t\tmap(name => name ? this.filterUser(name) : this.usersAvailable.slice())\r\n\t\t);\r\n\t}\r\n\r\n\r\n public ngOnDestroy()\r\n\t{\r\n this.moUserDataEmmiterSubscription.unsubscribe();\r\n }\r\n\r\n\r\n\tpublic filterUser(val: any): string[]\r\n\t{\r\n\r\n\t\tlet libelle = val.libelle ? val.libelle : val;\r\n\r\n\t\treturn this.usersAvailable.filter(user => user.libelle.toLowerCase().indexOf(libelle.toLowerCase()) === 0);\r\n\r\n\t}\r\n\r\n\r\n\tpublic displayUser(user?: any): string | undefined\r\n\t{\r\n\t\treturn user ? user.libelle : undefined;\r\n\t}\r\n\r\n\r\n public initExistingFiles()\r\n {\r\n this.filesSubject = new FileItemDataSource(this.selectedSubject);\r\n\r\n //Si des fichiers sont sélectionnés dans la tache courante, on les selectionne dans la liste\r\n if (this.selectedSubject && this.selectedSubject.pj && this.currentTask.fileToAccess)\r\n {\r\n let filesSelected = _.filter(this.selectedSubject.pj, (pj: any) => {\r\n return _.find(this.currentTask.fileToAccess, (fileId: any) => { return fileId == pj.id; }) !== undefined;\r\n });\r\n\r\n this.selection = new SelectionModel(true, filesSelected);\r\n }\r\n }\r\n\r\n\r\n /**\r\n *\r\n */\r\n\tpublic changeSelectedUser()\r\n\t{\r\n\t\tif (this.currentAssigneduser)\r\n\t\t{\r\n\t\t\tif (this.currentAssigneduser.loggedOnce === false)\r\n\t\t\t{\r\n\t\t\t\tthis.unloggedUserSelected = true;\r\n\r\n\t\t\t\tthis.dialog.open(WarningUnloggedUserModalComponent,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\theight:\t\t\t'auto',\r\n\t\t\t\t\t\twidth:\t\t\t'auto',\r\n\t\t\t\t\t\tdata:\t\t\t{},\r\n\t\t\t\t\t\tdisableClose:\ttrue\r\n\t\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.unloggedUserSelected = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic isAssignedUserValid(control: FormControl)\r\n\t{\r\n\t\tlet result: any = { invalid: true };\r\n\t\tif (control && control.value && control.value.value && control.value.libelle)\r\n\t\t{\r\n\t\t\tresult = null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n public buildInfosTooltipUser(userId: any)\r\n {\r\n let currentObjectUser = this.userData.getUser(userId);\r\n let tooltipCurrentUser: any;\r\n\r\n if (currentObjectUser && currentObjectUser.infos)\r\n {\r\n tooltipCurrentUser = currentObjectUser.infos.nom + ' ' + currentObjectUser.infos.prenom;\r\n tooltipCurrentUser += '\\n' + currentObjectUser.infos.mail;\r\n\r\n let professions: any;\r\n if (typeof currentObjectUser.publics.professions === 'string')\r\n {\r\n professions = JSON.parse(currentObjectUser.publics.professions);\r\n }\r\n else\r\n {\r\n professions = currentObjectUser.publics.professions;\r\n }\r\n\r\n let matieres: any;\r\n if (typeof currentObjectUser.publics.matieres === 'string')\r\n {\r\n matieres = JSON.parse(currentObjectUser.publics.matieres);\r\n }\r\n else\r\n {\r\n matieres = currentObjectUser.publics.matieres;\r\n }\r\n\r\n if(professions && professions.length > 0)\r\n {\r\n this.translate.get('common.jobs').subscribe((value: string) => {\r\n\r\n tooltipCurrentUser += '\\n\\n' + value + ':';\r\n for(let profession of professions)\r\n {\r\n tooltipCurrentUser += '\\n - ' + profession;\r\n }\r\n });\r\n }\r\n\r\n if(matieres && matieres.length > 0)\r\n {\r\n this.translate.get('common.matieres').subscribe((value: string) => {\r\n\r\n tooltipCurrentUser += '\\n\\n' + value + ':';\r\n for(let matiere of matieres)\r\n {\r\n tooltipCurrentUser += '\\n - ' + matiere;\r\n }\r\n });\r\n }\r\n }\r\n\r\n return tooltipCurrentUser;\r\n }\r\n\r\n /**\r\n * Dans la partie droits, retourne vrai si tout les fichiers sont selectionnées dans\r\n * la table de selection des sujets\r\n */\r\n\tisAllSelected()\r\n\t{\r\n\t\tconst numSelected\t= this.selection.selected.length;\r\n\t\tconst numRows\t\t= this.filesSubject.objSubject.pj.length;\r\n\r\n\r\n\t\treturn numSelected === numRows;\r\n\t}\r\n\r\n\r\n /**\r\n * Dans l'interface des droits si on souhaite choisir les fichiers accessibles\r\n * Selectionne tous les fichiers dans le tableau s'ils ne sont pas déja tous selectionné.\r\n * Dans le cas contraire ils sont tous déselectionnés\r\n */\r\n\tmasterToggle()\r\n\t{\r\n\t\tthis.isAllSelected() ? this.selection.clear() : this.filesSubject.objSubject.pj.forEach((pj: any) => this.selection.select(pj));\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public close()\r\n {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n\r\n public allowFilesTaskForAssignedUser()\r\n\t{\r\n if (this.currentTask.assigneduser && this.currentTask.assigneduser !== '')\r\n {\r\n // On récupère les clé aes des fichiers dont on donne les droits et on les ré-encode avec\r\n // la clé publique de l'utilisateur selectionné\r\n let listFile: any[];\r\n\r\n // Liste des fichiers dont on souhaite supprimer les droits d'accès à l'utilisateur concerné\r\n // On affecte cette liste de l'ensemble des fichiers au départ\r\n let listFileToLock = _.map(this.filesSubject.objSubject.pj, (pj: any) => { return pj.id });\r\n\r\n if (this.currentTask.noAccessFile === true)\r\n {\r\n // Si on désactive l'accès aux fichier on supprime les droits aux fichiers dont l'utilisateur à accès jusqu'à présent\r\n for (let fileTolock of listFileToLock)\r\n {\r\n this.encryptService.deleteAesKey(this.currentTask.assigneduser, fileTolock);\r\n }\r\n }\r\n else\r\n {\r\n // Sinon on détermine les fichiers accèssibles et les fichiers qui ne sont plus accèssibles et on met à jour les droits\r\n if (this.filesSubject && this.filesSubject.objSubject && this.currentTask.typeFileAccess === 'all')\r\n {\r\n listFile = _.map(this.filesSubject.objSubject.pj, (pj: any) => { return pj.id });\r\n }\r\n else\r\n {\r\n if (this.currentTask.typeFileAccess === 'list')\r\n {\r\n listFile = _.map(this.selection.selected, (pj: any) => { return pj.id; });\r\n }\r\n }\r\n\r\n\r\n if (listFile)\r\n {\r\n listFileToLock = _.difference(listFileToLock, listFile);\r\n\r\n for (let fileTolock of listFileToLock)\r\n {\r\n this.encryptService.deleteAesKey(this.currentTask.assigneduser, fileTolock);\r\n }\r\n\r\n let currentSubject = this.workspaceData.getSujet(this.currentTask.idSujet);\r\n\r\n this.encryptService.encryptFilesForUSer(listFile, this.currentTask.assigneduser, currentSubject);\r\n }\r\n }\r\n }\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public validate()\r\n {\r\n\t\tconst currentType:\t\tany = this.getType();\r\n\t\tconst currentNameType:\tany = currentType ? currentType.name : '';\r\n\r\n this.currentTask.name\t\t\t= this.currentName;\r\n this.currentTask.type\t\t\t= this.currentType.toString();\r\n this.currentTask.libelleType\t= currentNameType;\r\n this.currentTask.idSujet\t\t= this.currentIdSujet;\r\n this.currentTask.description\t= this.currentDescription;\r\n\r\n if (this.currentAssigneduser && this.currentAssigneduser.value)\r\n {\r\n this.currentTask.assigneduser = this.currentAssigneduser.value === 'none' ? '' : this.currentAssigneduser.value;\r\n }\r\n else\r\n {\r\n this.currentTask.assigneduser = null;\r\n }\r\n\r\n this.currentTask.noAccessFile\t\t= this.noAccessFile;\r\n this.currentTask.canCreateFile\t\t= this.canCreateFile;\r\n\r\n if (this.currentTask.noAccessFile === false)\r\n {\r\n this.currentTask.readOnlyFile\t= this.readOnlyFile;\r\n this.currentTask.canDeleteFile\t= this.canDeleteFile;\r\n this.currentTask.typeFileAccess = this.typeFileAccess;\r\n this.currentTask.fileToAccess\t= _.map(this.selection.selected, (pj: any) => { return pj.id; });\r\n\r\n }\r\n else\r\n {\r\n this.currentTask.readOnlyFile\t= false;\r\n this.currentTask.canDeleteFile\t= false;\r\n this.currentTask.typeFileAccess = 'none';\r\n this.currentTask.fileToAccess\t= [];\r\n }\r\n\r\n if (this.dateEcheance)\r\n {\r\n this.currentTask.endDate = new Date(this.dateEcheance);\r\n\t\t}\r\n\r\n\t\tconst datasEmail: any =\r\n {\r\n\t\t\tnomSujet: this.selectedSubject ? this.selectedSubject.name : '',\r\n\t\t\tnomEtape: this.currentTask.typeLib,\r\n\t\t\tnomExamen: this.workspaceData.selectedExamen.name,\r\n\t\t\tnomEpreuve: this.workspaceData.selectedMatiere.name\r\n\t\t};\r\n\r\n\t\t//Si c'est une édition on met la tache à jour\r\n\t\tif (this.isTaskEdition === true)\r\n\t\t{\r\n\t\t\tlet datasToUpdate: any = this._getDatasToUpdate(this.initialTask, this.currentTask);\r\n\r\n\t\t\tif (datasToUpdate['assigneduser'] && datasToUpdate['assigneduser'] !== '' && this.sendEmail === true)\r\n\t\t\t{\r\n\t\t\t\tthis.initialTask.notifyByMail = true;\r\n\t\t\t\tdatasToUpdate.typeMail = 'newTask';\r\n\t\t\t\tdatasToUpdate.datasEmail = datasEmail;\r\n\t\t\t}\r\n\r\n\t\t\tthis.taskService.updateTask(this.initialTask, datasToUpdate);\r\n\t\t\tthis.allowFilesTaskForAssignedUser();\r\n\t\t}\r\n else\r\n {\r\n if (this.currentTask.assigneduser === 'none')\r\n {\r\n this.currentTask.assigneduser\t= '';\r\n this.currentTask.state\t\t\t= 'new';\r\n }\r\n else\r\n {\r\n this.currentTask.state = 'todo';\r\n }\r\n\r\n\t\t\tlet datasMail: any = {};\r\n if (this.sendEmail === true)\r\n {\r\n\t\t\t\tthis.currentTask.notifyByMail = true;\r\n\r\n\t\t\t\tconst currentExamen\t\t= this.workspaceData.getExamen(this.currentTask.idExamen);\r\n\t\t\t\tconst currentEpreuve\t= this.workspaceData.getEpreuve(this.currentTask.idEpreuve);\r\n\t\t\t\tconst currentSujet\t\t= this.workspaceData.getSujet(this.currentTask.idSujet);\r\n\r\n\t\t\t\tdatasMail =\r\n\t\t\t\t{\r\n\t\t\t\t\tnomEtape:\tthis.getType().name,\r\n\t\t\t\t\tnomExamen:\tcurrentExamen\t? currentExamen.name:\t'',\r\n\t\t\t\t\tnomEpreuve: currentEpreuve\t? currentEpreuve.name:\t'',\r\n\t\t\t\t\tnomSujet:\tcurrentSujet\t? currentSujet.name:\t''\r\n\t\t\t\t};\r\n }\r\n\r\n // Sinon on l'ajoute en BDD\r\n\t\t\tthis.taskService.addTask(this.currentTask, this.sendEmail, datasMail, this.majSelected);\r\n this.allowFilesTaskForAssignedUser();\r\n }\r\n\r\n this.dialogRef.close(true);\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public switch_tab(tabName: any)\r\n\t{\r\n this.itemSelected = tabName;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n private _initTaskParents()\r\n {\r\n if (this.selectedClasseur)\r\n\t\t{\r\n this.currentTask.idEtablissement = this.selectedClasseur.id;\r\n\t\t}\r\n\r\n if (this.selectedSession)\r\n\t\t{\r\n this.currentTask.idSession = this.selectedSession.id;\r\n\t\t}\r\n\r\n if (this.selectedExamen)\r\n\t\t{\r\n this.currentTask.idExamen = this.selectedExamen.id;\r\n\t\t}\r\n\r\n if (this.selectedMatiere)\r\n\t\t{\r\n this.currentTask.idEpreuve = this.selectedMatiere.id;\r\n\t\t}\r\n }\r\n\r\n\r\n\tgetType()\r\n\t{\r\n let sReturn = null;\r\n if (this.scenarioList)\r\n {\r\n\t\t\tfor (let typeName of this.scenarioList.steps)\r\n {\r\n if (typeName.id === this.currentType)\r\n {\r\n sReturn = typeName;\r\n }\r\n }\r\n }\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n\r\n\tmajTitle()\r\n\t{\r\n\t\tlet sujetId = this.currentIdSujet;\r\n\t\tlet sujetName = '';\r\n\r\n\t\tthis.translate.get('editorPanel.new').subscribe((value1: string) =>\r\n\t\t{\r\n\t\t\tthis.translate.get('editorPanel.formatedText1').subscribe((value2: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.translate.get('editorPanel.formatedText2').subscribe((value3: string) =>\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tif (sujetId === 'new')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsujetName = value1;\r\n\t\t\t\t\t\tthis.selectedSubject = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.selectedSubject = this.workspaceData.getSujet(sujetId);\r\n\t\t\t\t\t\tif (this.selectedSubject)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsujetName = this.selectedSubject.name;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst currentType = this.getType();\r\n\r\n\t\t\t\t\tthis.currentName = value2;\r\n\t\t\t\t\tthis.currentName += currentType ? currentType.name : '';\r\n\t\t\t\t\tthis.currentName += value3;\r\n\t\t\t\t\tthis.currentName += sujetName;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n canValidateTask()\r\n {\r\n let result = true;\r\n\r\n\t\tif ((this.userData.isAdmin() === false && this.userData.isSuperviseur() === false) || !this.currentName || this.currentName === undefined || this.currentName === '' || this.currentType === undefined)\r\n {\r\n result = false;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n\tonChangeAssignedUser(event: any)\r\n\t{\r\n\t\tthis.currentAssigneduser = event;\r\n\r\n\t\t// Si l'utilisateur selectionné est un imprimeur, on modifie les droits pour qu'il ne puisse pas\r\n\t\t// créer de fichier et pour qu'il ne puisse lire que les fichiers flaggés à la tache précédente\r\n\t\t// (à condition que cette dernière soit accéssible aux imprimeur dans le scénario)\r\n\t\tif (this.currentAssigneduser.isPrinter === true)\r\n\t\t{\r\n\t\t\tthis.moFormCtrNoAccessFile.setValue(true);\r\n\t\t\tthis.moFormCtrCanCreateFile.setValue(false);\r\n\r\n\t\t\t// on vérifie que la tache précédente est accéssible pour l'imprimeur\r\n\t\t\tif (this.oldTask && this.oldTask.hasReadRightForPrinter === true)\r\n\t\t\t{\r\n\t\t\t\t// On récupère les fichiers flaggés pour cette dernière tache\r\n\t\t\t\tconst pjsFiltered = _.filter(this.filesSubject.objSubject.pj, (pj: any) =>\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tlet result = false;\r\n\r\n\t\t\t\t\tif (pj.deleted === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (const tag of pj.tags)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst partTags = tag.split('::');\r\n\t\t\t\t\t\t\tif (partTags[0] === '*task' && partTags[1] === this.oldTask.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tresult = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (pjsFiltered && pjsFiltered.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.moFormCtrNoAccessFile.setValue(false);\r\n\t\t\t\t\tthis.moFormCtrCanCreateFile.setValue(true);\r\n\r\n\t\t\t\t\tthis.readOnlyFile\t\t= true;\r\n\t\t\t\t\tthis.canDeleteFile\t\t= false;\r\n\t\t\t\t\tthis.typeFileAccess\t\t= 'list';\r\n\t\t\t\t\tthis.selection\t\t\t= new SelectionModel(true, pjsFiltered);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// sinon par défaut l'utilsiateur peux créer des fichiers et lire tout les fichiers du sujet\r\n\t\t\tthis.moFormCtrNoAccessFile.setValue(false);\r\n\t\t\tthis.moFormCtrCanCreateFile.setValue(true);\r\n\r\n\t\t\tthis.readOnlyFile\t\t= false;\r\n\t\t\tthis.canDeleteFile\t\t= false;\r\n\t\t\tthis.typeFileAccess\t\t= 'all';\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n private _getDatasToUpdate(oldTask: Task, newTask: Task)\r\n {\r\n let datas: any = {};\r\n\r\n // ---------------------------------------\r\n // ToComment\r\n // ---------------------------------------\r\n if (oldTask.description !== newTask.description)\r\n {\r\n datas['description'] = newTask.description;\r\n }\r\n\r\n if (oldTask.name !== newTask.name)\r\n {\r\n datas['name'] = newTask.name;\r\n }\r\n\r\n if (oldTask.type !== newTask.type)\r\n {\r\n datas['type'] = newTask.type;\r\n }\r\n\r\n // ---------------------------------------\r\n // ToComment\r\n // ---------------------------------------\r\n if (oldTask.state !== newTask.state)\r\n {\r\n datas['state'] = newTask.state;\r\n }\r\n\r\n // ---------------------------------------\r\n // ToComment\r\n // ---------------------------------------\r\n\r\n if (oldTask.assigneduser !== newTask.assigneduser)\r\n {\r\n datas['assigneduser'] = newTask.assigneduser;\r\n //si l'utilisateur assigné est supprimé, on met automatiquement\r\n // la tache en non assigné\r\n if (datas['assigneduser'] === '' || datas['assigneduser'] === 'none')\r\n {\r\n datas['assigneduser'] = '';\r\n datas['state'] = 'new';\r\n }\r\n else\r\n {\r\n //Si le nouvel utilisateur assigné est non vide et que le l'état initial\r\n //de la tache est non assigné alors on la met automatiquement à l'état assigné\r\n if (oldTask.state === 'new')\r\n {\r\n datas['state'] = 'todo';\r\n }\r\n }\r\n }\r\n\r\n\t\tlet oldEndDate = oldTask.endDate ? oldTask.endDate.getTime() : null;\r\n\t\tlet newEndDate = newTask.endDate ? newTask.endDate.getTime() : null;\r\n\r\n\t\tif (oldEndDate !== newEndDate)\r\n\t\t{\r\n\t\t\tdatas['enddate'] = newTask.endDate;\r\n\t\t}\r\n\r\n\t\tif (oldTask.noAccessFile !== newTask.noAccessFile)\r\n\t\t{\r\n\t\t\tdatas['noaccessfile'] = newTask.noAccessFile ? '1' : '0';\r\n\t\t}\r\n\r\n\t\tif (oldTask.canCreateFile !== newTask.canCreateFile)\r\n\t\t{\r\n\t\t\tdatas['cancreatefile'] = newTask.canCreateFile ? '1' : '0';\r\n\t\t}\r\n\r\n\t\tif (oldTask.readOnlyFile !== newTask.readOnlyFile)\r\n\t\t{\r\n\t\t\tdatas['readonlyfile'] = newTask.readOnlyFile ? '1' : '0';\r\n\t\t}\r\n\r\n\t\tif (oldTask.canDeleteFile !== newTask.canDeleteFile)\r\n\t\t{\r\n\t\t\tdatas['candeletefile'] = newTask.canDeleteFile ? '1' : '0';\r\n\t\t}\r\n\r\n\t\tif (oldTask.typeFileAccess !== newTask.typeFileAccess)\r\n\t\t{\r\n\t\t\tdatas['typefileaccess'] = newTask.typeFileAccess;\r\n\t\t}\r\n\r\n\t\tlet intersectFiles = _.intersection(oldTask.fileToAccess, newTask.fileToAccess);\r\n\r\n\t\tif (oldTask.fileToAccess.length !== newTask.fileToAccess.length || intersectFiles.length !== oldTask.fileToAccess.length)\r\n\t\t{\r\n\t\t\tdatas['filetoaccess'] = newTask.fileToAccess;\r\n\t\t}\r\n\r\n return datas;\r\n }\r\n}\r\n","
\r\n
\r\n\r\n
\r\n\t\t\t
\r\n\t\t\t\t{{ 'editorPanel.title' | translate }}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n\t\t\t
{{ 'editorPanel.newTask' | translate }}
\r\n\t\t\t
{{ 'editorPanel.informations' | translate }}
\r\n\t\t\t
{{ 'editorPanel.droits' | translate }}
\r\n\t\t
\r\n\r\n
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ type.name }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ subject.libelle }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
{{ 'editorPanel.nameRequired' | translate }}
\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ user.libelle }}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t
\r\n
\r\n\r\n
\r\n {{ 'editorPanel.noAccessFile' | translate }}\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ 'editorPanel.readOnlyFile' | translate }}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{{ 'editorPanel.canDeleteFile' | translate }}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ 'editorPanel.accessAllFiles' | translate }}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t{{ 'editorPanel.accessFileList' | translate }}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {{ 'editorPanel.nameFile' | translate }} \r\n\t\t\t\t\t\t\t\t {{element.name}} \r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{{ 'editorPanel.userCanCreateFile' | translate }}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t
\r\n
\r\n","import { Component, EventEmitter, ViewEncapsulation, Inject, OnInit, OnDestroy } from '@angular/core';\r\n\r\nimport { MatDialogRef, MatDialog }\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { DataSource, SelectionModel }\t\t\t\t\t\tfrom '@angular/cdk/collections';\r\nimport {Observable}\t\t\t\t\t\t\t\t\t\t\tfrom 'rxjs/Rx';\r\nimport { TranslateService }\t\t\t\t\t\t\t\t\tfrom '@ngx-translate/core';\r\nimport { FormBuilder, FormGroup, FormControl, Validators }\tfrom '@angular/forms';\r\n\r\nimport { Etablissement }\t\tfrom '../../../../classes/etablissement.class';\r\nimport { Session }\t\t\t\tfrom '../../../../classes/session.class';\r\nimport { Examen }\t\t\t\tfrom '../../../../classes/examen.class';\r\nimport { Matiere }\t\t\t\tfrom '../../../../classes/matiere.class';\r\nimport { Task }\t\t\t\t\tfrom '../../../../classes/task.class';\r\nimport { Sujet }\t\t\t\tfrom '../../../../classes/sujet.class';\r\nimport { File as FileObject }\tfrom '../../../../classes/file.class';\r\n\r\nimport { TaskService }\t\tfrom '../../../../services/task.service';\r\nimport { FileService }\t\tfrom '../../../../services/file.service';\r\nimport { EncryptService } from '../../../../services/encrypt.service';\r\nimport { UserData }\t\t\tfrom '../../../../providers/user-data';\r\nimport { WorkspaceData }\tfrom '../../../../providers/workspace-data';\r\n\r\nimport { WarningUnloggedUserModalComponent } from '../../modal/warningUnloggedUserModal.component';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n/*\r\nexport interface FileItemList {\r\n name: string;\r\n}\r\n*/\r\n\r\n\r\nexport class FileItemDataSource extends DataSource\r\n{\r\n public objSubject: any;\r\n\r\n\tconstructor(objSubject: any)\r\n\t{\r\n\t\tsuper();\r\n this.objSubject = objSubject;\r\n\t}\r\n\r\n\r\n\t/** Connect function called by the table to retrieve one stream containing the data to render. */\r\n\tconnect(): Observable\r\n\t{\r\n\t\treturn Observable.of(this.objSubject.pj);\r\n\t}\r\n\r\n\tdisconnect() { }\r\n}\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'editor-panel',\r\n\ttemplateUrl:\t'./editor-panel.component.html',\r\n\tinputs:\t\t\t['task'],\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\toutputs:\t\t['_onSubmit: onSubmit', '_onCancel: onCancel'],\r\n\tstyleUrls:\t\t['./editor-panel.component.scss']\r\n})\r\n\r\n\r\nexport class EditorPanelComponent implements OnInit, OnDestroy\r\n{\r\n public startDate = new Date();\r\n\r\n public initialTask:\t\t\tTask;\r\n public currentTask:\t\t\tTask;\r\n public structureModel:\t\tany[];\r\n public isTaskEdition:\t\tboolean = false;\r\n public itemSelected:\t\tstring;\r\n public subjectsAvailable:\tany[];\r\n public usersAvailable:\t\tany[];\r\n public moFormGroup:\t\t\tFormGroup;\r\n public scenarioList:\t\tany;\r\n\r\n public currentName:\t\t\tstring;\r\n public currentType:\t\t\tnumber;\r\n public currentIdSujet:\t\tstring;\r\n public currentDescription:\tstring;\r\n public currentAssigneduser: string;\r\n\r\n public noAccessFile:\t\t\tboolean = false;\r\n public readOnlyFile:\t\t\tboolean = false;\r\n public canCreateFile:\t\t\tboolean = false;\r\n public canDeleteFile:\t\t\tboolean = false;\r\n public typeFileAccess: string = 'all';\r\n\r\n public selectedClasseur:\tEtablissement;\r\n public selectedSession:\t\tSession;\r\n public selectedExamen:\t\tExamen;\r\n public selectedMatiere:\t\tMatiere;\r\n public selectedSubject: Sujet;\r\n public dateEcheance:\t\tDate;\r\n\r\n public moFormCtrlName:\t\t\t\t\tFormControl;\r\n public moFormCtrType:\t\t\t\t\tFormControl;\r\n public moFormCtrSubject:\t\t\t\tFormControl;\r\n public moFormCtrDescription:\t\t\tFormControl;\r\n public moFormCtrEcheance:\t\t\t\tFormControl;\r\n public moFormCtrNoAccessFile:\t\t\tFormControl;\r\n public moFormCtrCanCreateFile:\t\t\tFormControl;\r\n public moFormCtrAssignedUser:\t\t\tFormControl;\r\n\r\n\r\n public filesSubject:\t\tFileItemDataSource;\r\n public selection:\t\t\tSelectionModel = new SelectionModel(true, []);\r\n\t\r\n public displayedColumns = ['select', 'name'];\r\n public moUserDataEmmiterSubscription: any;\r\n\r\n public unloggedUserSelected: boolean = false;\r\n\r\n public _onSubmit: EventEmitter\t\t= new EventEmitter();\r\n\tpublic _onCancel: EventEmitter\t= new EventEmitter();\r\n\r\n public treeDatas: any = undefined;\r\n\r\n\r\n constructor(public dialogRef:\t\tMatDialogRef,\r\n public taskService:\t\tTaskService,\r\n public fileService:\t\tFileService,\r\n public encryptService:\tEncryptService,\r\n public fb:\t\t\t\tFormBuilder,\r\n public userData:\t\tUserData,\r\n public workspaceData:\tWorkspaceData,\r\n public dialog:\t\t\tMatDialog,\r\n public translate:\t\tTranslateService,\r\n @Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n\t\tthis.itemSelected = 'informations';\r\n\t\tthis.translate.get('editorPanel.new').subscribe((value: string) =>\r\n\t\t{\r\n\t\t\tthis.subjectsAvailable = [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue:\t\t'new',\r\n\t\t\t\t\tlibelle:\tvalue\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\t});\r\n\r\n\r\n\t\tthis.translate.get('editorPanel.noUser').subscribe((value: string) =>\r\n\t\t{\r\n\t\t\tthis.usersAvailable = [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue:\t\t'none',\r\n\t\t\t\t\tloggedOnce: true,\r\n\t\t\t\t\tlibelle:\tvalue\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t\t});\r\n\r\n\t\tlet allUsers = this.userData.getUsers();\r\n\r\n\r\n\t\tif (allUsers)\r\n\t\t{\r\n\t\t\tfor (let key in allUsers)\r\n\t\t\t{\r\n\t\t\t\tif (allUsers[key])\r\n\t\t\t\t{\r\n\t\t\t\t\tlet userInfo;\r\n\t\t\t\t\tlet outputContent = key;\r\n\r\n\t\t\t\t\tif (key)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tuserInfo = this.userData.getUser(key);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (userInfo && userInfo.infos && (userInfo.infos.nom || userInfo.infos.prenom))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toutputContent = '';\r\n\r\n\t\t\t\t\t\tif (userInfo.infos.prenom)\toutputContent += userInfo.infos.prenom + ' ';\r\n\t\t\t\t\t\tif (userInfo.infos.nom)\t\toutputContent += userInfo.infos.nom;\r\n }\r\n\r\n let loggedOnce: boolean = true;\r\n if (userInfo && userInfo.state && userInfo.state.active)\r\n {\r\n let dateActive = new Date(userInfo.state.active);\r\n if (dateActive && dateActive.getTime() === 0)\r\n {\r\n loggedOnce = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.usersAvailable.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue:\t\t\tkey,\r\n\t\t\t\t\t\t\tloggedOnce:\t\tloggedOnce,\r\n\t\t\t\t\t\t\tlibelle:\t\toutputContent\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.data)\r\n {\r\n /**\r\n * Récupération des éléments de l'arborescence selectionnés\r\n */\r\n if (this.data.selectedItems)\r\n {\r\n if (this.data.selectedItems[0])\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.selectedClasseur = this.workspaceData.selectedEtablissement;\r\n\t\t\t\t}\r\n\r\n if (this.data.selectedItems[1])\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.selectedSession = this.workspaceData.selectedSession;\r\n\t\t\t\t}\r\n\r\n if (this.data.selectedItems[2])\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.selectedExamen = this.workspaceData.selectedExamen;\r\n\t\t\t\t}\r\n\r\n if (this.data.selectedItems[3])\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.selectedMatiere = this.workspaceData.selectedMatiere;\r\n\t\t\t\t}\r\n }\r\n\r\n /**\r\n * lorsqu'une tache est transmise au composant d'édition\r\n * on remplie le formulaire avec les informations existantes\r\n * pour gérer l'édition\r\n * Setter\r\n */\r\n\r\n\r\n\r\n if (this.data.task)\r\n {\r\n this.currentTask = this.data.task;\r\n\r\n // ---------------------------------------\r\n\t\t\t\t// récupération du process courant\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tlet idEpreuve\t= this.currentTask.idEpreuve;\r\n let oEpreuve\t= this.workspaceData.getEpreuve(idEpreuve);\r\n// this.scenarioList = oEpreuve.scenario;\r\n\r\n this.currentName\t\t\t= this.currentTask.name;\r\n this.currentType\t\t\t= Number(this.currentTask.type);\r\n this.currentIdSujet\t\t\t= this.currentTask.idSujet;\r\n this.currentDescription\t\t= this.currentTask.description;\r\n this.currentAssigneduser\t= this.currentTask.assigneduser;\r\n this.selectedSubject\t\t= this.workspaceData.getSujet(this.currentIdSujet);\r\n\r\n\r\n if (this.selectedSubject)\r\n {\r\n this.fileService.getFiles(this.selectedSubject.id);\r\n }\r\n\r\n if (!this.currentAssigneduser)\r\n {\r\n this.currentAssigneduser\t= 'none';\r\n this.unloggedUserSelected\t= false;\r\n }\r\n else\r\n {\r\n let selectedUser = _.find(this.usersAvailable, (user: any) => { return user.value === this.currentAssigneduser; });\r\n\r\n if (selectedUser)\r\n {\r\n if (selectedUser.loggedOnce === false)\r\n {\r\n this.unloggedUserSelected = true;\r\n }\r\n\t\t\t\t\t\telse\r\n {\r\n this.unloggedUserSelected = false;\r\n }\r\n }\r\n }\r\n\r\n this.dateEcheance = this.currentTask.endDate;\r\n this._initTaskParents();\r\n this.isTaskEdition = true;\r\n\r\n if (this.data.task.idSujet)\r\n {\r\n let treeStructure = this.workspaceData.getBranchFromId(this.data.task.idSujet);\r\n\r\n this.treeDatas\t\t\t\t\t\t\t= {};\r\n this.treeDatas.selectedEtablissement\t= treeStructure.etablissement;\r\n this.treeDatas.selectedSession\t\t\t= treeStructure.session;\r\n this.treeDatas.selectedExamen\t\t\t= treeStructure.examen;\r\n this.treeDatas.selectedMatiere\t\t\t= treeStructure.matiere;\r\n\r\n if (this.treeDatas.selectedMatiere)\r\n {\r\n for (let sujet of this.treeDatas.selectedMatiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.subjectsAvailable.push(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tvalue:\t\tsujet.id,\r\n\t\t\t\t\t\t\t\t\tlibelle:\tsujet.name\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n // ---------------------------------------\r\n // S'il ne s'agit pas d'une nouvelle tache que l'on créé\r\n // on initialise l'ensemble des champs\r\n // ---------------------------------------\r\n\t\t\t\tlet jsonValue\t\t= this.currentTask.toJson();\r\n this.initialTask\t= Task.fromJsonObject(jsonValue);\r\n\r\n //initialisation des champs relatifs aux droits\r\n this.noAccessFile\t= this.currentTask.noAccessFile;\r\n this.canCreateFile\t= this.currentTask.canCreateFile;\r\n\r\n if (this.currentTask.noAccessFile === false)\r\n {\r\n this.readOnlyFile\t\t= this.currentTask.readOnlyFile;\r\n this.canDeleteFile\t\t= this.currentTask.canDeleteFile;\r\n this.typeFileAccess\t\t= this.currentTask.typeFileAccess;\r\n }\r\n else\r\n {\r\n this.readOnlyFile\t\t= false;\r\n this.canDeleteFile\t\t= false;\r\n this.typeFileAccess\t\t= 'all';\r\n this.selection\t\t\t= new SelectionModel(true, []);\r\n }\r\n\r\n }\r\n else\r\n {\r\n\r\n // ---------------------------------------\r\n // Si auncune tache n'est renseigné on considère qu'il s'agit d'un\r\n // ajout de tache\r\n // ---------------------------------------\r\n this.currentTask\t\t\t= new Task();\r\n this.currentTask.flags\t\t= ['inprogress'];\r\n\r\n this.currentIdSujet\t\t= this.workspaceData.selectedSujet.id;\r\n this.selectedSubject\t= this.workspaceData.getSujet(this.currentIdSujet);\r\n\t\t\t\tthis.scenarioList\t\t= this.workspaceData.selectedMatiere.scenario;\r\n\r\n\r\n if (this.workspaceData.selectedMatiere)\r\n {\r\n for (let sujet of this.workspaceData.selectedMatiere.sujets)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.subjectsAvailable.push(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue:\t\tsujet.id,\r\n\t\t\t\t\t\t\t\tlibelle:\tsujet.name\r\n\t\t\t\t\t\t\t});\r\n }\r\n }\r\n\r\n\t\t\t\tthis.translate.get('editorPanel.formatedText1').subscribe((value1: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.translate.get('editorPanel.formatedText2').subscribe((value2: string) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.currentName = value1 + this.getTypeName() + value2 + this.workspaceData.selectedSujet.name;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\r\n this.currentAssigneduser = 'none';\r\n this._initTaskParents();\r\n this.isTaskEdition = false;\r\n\r\n this.selection = new SelectionModel(true, []);\r\n }\r\n\r\n\r\n this.moFormCtrlName\t\t\t\t\t= this.fb.control(this.currentName,\t\t\tValidators.required);\r\n this.moFormCtrType\t\t\t\t\t= this.fb.control(this.currentType,\t\t\tValidators.required);\r\n this.moFormCtrSubject\t\t\t\t= this.fb.control(this.currentIdSujet,\t\tValidators.required);\r\n this.moFormCtrDescription\t\t\t= this.fb.control(this.currentDescription,\tValidators.required);\r\n this.moFormCtrEcheance\t\t\t\t= this.fb.control(this.dateEcheance,\t\tValidators.required);\r\n this.moFormCtrAssignedUser\t\t\t= this.fb.control(this.currentAssigneduser,\tValidators.required);\r\n this.moFormCtrNoAccessFile\t\t\t= this.fb.control(this.noAccessFile,\t Validators.required);\r\n this.moFormCtrCanCreateFile\t\t\t= this.fb.control(this.canCreateFile, Validators.required);\r\n\r\n this.moFormGroup = this.fb.group(\r\n\t\t\t\t{\r\n\t\t\t\t\tname:\t\t\tthis.moFormCtrlName,\r\n\t\t\t\t\ttype:\t\t\tthis.moFormCtrType,\r\n\t\t\t\t\tsubject:\t\tthis.moFormCtrSubject,\r\n\t\t\t\t\tdescription:\tthis.moFormCtrDescription,\r\n\t\t\t\t\tdateEcheance:\tthis.moFormCtrEcheance,\r\n\t\t\t\t\tassignedUser:\tthis.moFormCtrAssignedUser,\r\n\t\t\t\t\tnoAccessFile:\tthis.moFormCtrNoAccessFile,\r\n canCreateFile:\tthis.moFormCtrCanCreateFile\r\n });\r\n }\r\n }\r\n\t\r\n\r\n public ngOnInit()\r\n\t{\r\n this.moUserDataEmmiterSubscription = this.userData.globalEmitter.subscribe((value: string) =>\r\n\t\t{\r\n\t\t\tif (value === 'files::get')\r\n\t\t\t{\r\n this.initExistingFiles();\r\n }\r\n\r\n });\r\n this.initExistingFiles();\r\n }\r\n\r\n\r\n public ngOnDestroy()\r\n\t{\r\n this.moUserDataEmmiterSubscription.unsubscribe();\r\n\t}\r\n\r\n\r\n public initExistingFiles()\r\n {\r\n\r\n }\r\n\r\n\r\n /**\r\n *\r\n */\r\n public changeSelectedUser()\r\n {\r\n let selectedUser = _.find(this.usersAvailable, (user: any) => { return user.value === this.currentAssigneduser; });\r\n\r\n if (selectedUser)\r\n {\r\n if (selectedUser.loggedOnce === false)\r\n {\r\n this.unloggedUserSelected = true;\r\n this.dialog.open(WarningUnloggedUserModalComponent,\r\n\t\t\t\t{\r\n height:\t\t\t'auto',\r\n width:\t\t\t'auto',\r\n data:\t\t\t{},\r\n disableClose:\ttrue\r\n });\r\n\r\n }\r\n\t\t\telse\r\n {\r\n this.unloggedUserSelected = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Dans la partie droits, retourne vrai si tout les fichiers sont selectionnées dans\r\n * la table de selection des sujets\r\n */\r\n\tisAllSelected() \r\n\t{\r\n\t\tconst numSelected\t= this.selection.selected.length;\r\n\t\tconst numRows\t\t= this.filesSubject.objSubject.pj.length;\r\n\t\t\r\n\t\treturn numSelected === numRows;\r\n\t}\r\n\t\r\n\r\n /**\r\n * Dans l'interface des droits si on souhaite choisir les fichiers accessibles\r\n * Selectionne tous les fichiers dans le tableau s'ils ne sont pas déja tous selectionné.\r\n * Dans le cas contraire ils sont tous déselectionnés\r\n */\r\n\tmasterToggle()\r\n\t{\r\n\t\tthis.isAllSelected() ? this.selection.clear() : this.filesSubject.objSubject.pj.forEach((pj: any) => this.selection.select(pj));\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public close()\r\n {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic validate()\r\n\t{\r\n\r\n\t\tthis.currentTask.name\t\t\t= this.currentName;\r\n\t\tthis.currentTask.type\t\t\t= this.currentType.toString();\r\n\t\tthis.currentTask.libelleType\t= this.getTypeName();\r\n\r\n\t\tthis.currentTask.idSujet\t\t= this.currentIdSujet;\r\n\t\tthis.currentTask.description\t= this.currentDescription;\r\n\t\tthis.currentTask.assigneduser\t= this.currentAssigneduser;\r\n\r\n\t\tthis.currentTask.noAccessFile\t= this.noAccessFile;\r\n\t\tthis.currentTask.canCreateFile\t= this.canCreateFile;\r\n\r\n\t\tif (this.currentTask.noAccessFile === false)\r\n\t\t{\r\n\t\t\tthis.currentTask.readOnlyFile\t= this.readOnlyFile;\r\n\t\t\tthis.currentTask.canDeleteFile\t= this.canDeleteFile;\r\n\t\t\tthis.currentTask.typeFileAccess = this.typeFileAccess;\r\n\t\t\tthis.currentTask.fileToAccess\t= _.map(this.selection.selected, (pj: any) => { return pj.id; });\r\n\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.currentTask.readOnlyFile\t= false;\r\n\t\t\tthis.currentTask.canDeleteFile\t= false;\r\n\t\t\tthis.currentTask.typeFileAccess\t= 'none';\r\n\t\t\tthis.currentTask.fileToAccess\t= [];\r\n\t\t}\r\n\r\n\r\n\t\tif (this.dateEcheance)\r\n\t\t{\r\n\t\t\tthis.currentTask.endDate = new Date(this.dateEcheance);\r\n\t\t}\r\n\r\n if (this.currentTask.assigneduser === 'none')\r\n {\r\n this.currentTask.assigneduser\t= '';\r\n this.currentTask.state\t\t\t= 'new';\r\n }\r\n else\r\n {\r\n this.currentTask.state = 'todo';\r\n }\r\n\r\n\t\t//Si c'est une édition on met la tache à jour\r\n\t\tif (this.isTaskEdition === true)\r\n\t\t{\r\n\t\t\tlet datasToUpdate = this._getDatasToUpdate(this.initialTask, this.currentTask);\r\n\t\t\tthis.taskService.updateTask(this.initialTask, datasToUpdate);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t//Sinon on l'ajoute en BDD\r\n\t\t\tthis.taskService.addTask(this.currentTask);\r\n\r\n\t\t\t//On récupère les clé aes des fichiers dont on donne les droits et on les ré-encode avec\r\n\t\t\t//la clé publique de l'utilisateur selectionné\r\n\t\t\tlet listFile: any[];\r\n\t\t\tif (this.currentTask.typeFileAccess === 'all')\r\n\t\t\t{\r\n\t\t\t\tlistFile = _.map(this.filesSubject.objSubject.pj, (pj: any) => { return pj.id });\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (this.currentTask.typeFileAccess === 'list')\r\n\t\t\t\t{\r\n\t\t\t\t\tlistFile = _.map(this.selection.selected, (pj: any) => { return pj.id; });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (listFile && this.currentTask.assigneduser && this.currentTask.assigneduser !== '')\r\n\t\t\t{\r\n\t\t\t\tlet currentSubject = this.workspaceData.getSujet(this.currentTask.idSujet);\r\n\r\n\t\t\t\tthis.encryptService.encryptFilesForUSer(listFile, this.currentTask.assigneduser, currentSubject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n public switch_tab(tabName: any)\r\n\t{\r\n this.itemSelected = tabName;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n private _initTaskParents()\r\n {\r\n if (this.selectedClasseur)\r\n\t\t{\r\n this.currentTask.idEtablissement = this.selectedClasseur.id;\r\n\t\t}\r\n\r\n if (this.selectedSession)\r\n\t\t{\r\n this.currentTask.idSession = this.selectedSession.id;\r\n\t\t}\r\n\r\n if (this.selectedExamen)\r\n\t\t{\r\n this.currentTask.idExamen = this.selectedExamen.id;\r\n\t\t}\r\n\r\n if (this.selectedMatiere)\r\n\t\t{\r\n this.currentTask.idEpreuve = this.selectedMatiere.id;\r\n\t\t}\r\n }\r\n\r\n\r\n\tgetTypeName()\r\n\t{\r\n\t\tlet sReturn = '';\r\n\t\tif (this.scenarioList)\r\n\t\t{\r\n\t\t\tfor (let typeName of this.scenarioList.steps)\r\n\t\t\t{\r\n\t\t\t\tif (typeName.id === this.currentType)\r\n\t\t\t\t{\r\n\t\t\t\t\tsReturn = typeName.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n\r\n\tmajTitle()\r\n\t{\r\n\t\tlet sujetId\t\t= this.currentIdSujet;\r\n\t\tlet sujetName\t= '';\r\n\r\n\t\tif (sujetId === 'new')\r\n\t\t{\r\n\t\t\tsujetName = 'Nouveau';\r\n\t\t\tthis.selectedSubject = undefined;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.selectedSubject\t= this.workspaceData.getSujet(sujetId);\r\n\t\t\tsujetName\t\t\t\t= this.selectedSubject.name;\r\n\t\t}\r\n\r\n\t\tthis.translate.get('editorPanel.formatedText1').subscribe((value1: string) =>\r\n\t\t{\r\n\t\t\tthis.translate.get('editorPanel.formatedText2').subscribe((value2: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.currentName = value1 + this.getTypeName() + value2 + sujetName;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tcanValidateTask()\r\n\t{\r\n let result = true;\r\n\r\n if (!this.currentName || this.currentName === undefined || this.currentName === '')\r\n {\r\n result = false;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n private _getDatasToUpdate(oldTask: Task, newTask: Task)\r\n {\r\n let datas: any = {};\r\n\r\n // ---------------------------------------\r\n // ToComment\r\n // ---------------------------------------\r\n if (oldTask.description !== newTask.description)\r\n {\r\n datas['description'] = newTask.description;\r\n }\r\n\r\n if (oldTask.name !== newTask.name)\r\n {\r\n datas['name'] = newTask.name;\r\n }\r\n\r\n if (oldTask.type !== newTask.type)\r\n {\r\n datas['type'] = newTask.type;\r\n }\r\n\r\n // ---------------------------------------\r\n // ToComment\r\n // ---------------------------------------\r\n if (oldTask.state !== newTask.state)\r\n {\r\n datas['state'] = newTask.state;\r\n }\r\n\r\n // ---------------------------------------\r\n // ToComment\r\n // ---------------------------------------\r\n if (oldTask.assigneduser !== newTask.assigneduser)\r\n {\r\n datas['assigneduser'] = newTask.assigneduser;\r\n //si l'utilisateur assigné est supprimé, on met automatiquement\r\n // la tache en non assigné\r\n if (datas['assigneduser'] === '')\r\n {\r\n datas['state'] = 'new';\r\n }\r\n else\r\n {\r\n //Si le nouvel utilisateur assigné est non vide et que le l'état initial\r\n //de la tache est non assigné alors on la met automatiquement à l'état assigné\r\n if (oldTask.state === 'new')\r\n {\r\n datas['state'] = 'todo';\r\n }\r\n }\r\n }\r\n\r\n if (oldTask.endDate.getTime() !== newTask.endDate.getTime())\r\n {\r\n datas['enddate'] = newTask.endDate;\r\n }\r\n\r\n if (oldTask.noAccessFile !== newTask.noAccessFile)\r\n {\r\n datas['noaccessfile'] = newTask.noAccessFile ? '1' : '0';\r\n }\r\n\r\n if (oldTask.canCreateFile !== newTask.canCreateFile)\r\n {\r\n datas['cancreatefile'] = newTask.canCreateFile ? '1' : '0';\r\n }\r\n\r\n if (oldTask.readOnlyFile !== newTask.readOnlyFile)\r\n {\r\n datas['readonlyfile'] = newTask.readOnlyFile ? '1' : '0';\r\n }\r\n\r\n if (oldTask.canDeleteFile !== newTask.canDeleteFile)\r\n {\r\n datas['candeletefile'] = newTask.canDeleteFile ? '1' : '0';\r\n }\r\n\r\n if (oldTask.typeFileAccess !== newTask.typeFileAccess)\r\n {\r\n datas['typefileaccess'] = newTask.typeFileAccess;\r\n }\r\n\r\n let intersectFiles = _.intersection(oldTask.fileToAccess, newTask.fileToAccess);\r\n\t\t\r\n if (oldTask.fileToAccess.length !== newTask.fileToAccess.length || intersectFiles.length !== oldTask.fileToAccess.length)\r\n {\r\n datas['filetoaccess'] = newTask.fileToAccess;\r\n }\r\n\r\n return datas;\r\n }\r\n}\r\n","\r\n","// Angular\r\nimport { Component, OnInit, EventEmitter, Input, ViewEncapsulation } from '@angular/core';\r\n// Neoptec\r\nimport { Task }\t\t\t\tfrom '../../model/task';\r\nimport { TicketComponent }\tfrom '../ticket/ticket.component';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'lane',\r\n\tinputs:\t\t\t['tasks', 'type', 'laneTitle', 'libelle'],\r\n\toutputs:\t\t['_onTicketEdit: onTicketEdit', '_onAddSubTicket: onAddSubTicket', '_onTicketRemove: onTicketRemove', '_onTicketSelect: onTicketSelect', '_onTicketFocus: onTicketFocus'],\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\thost:\t\t\t{ 'class': 'lane'\t},\r\n\ttemplateUrl:\t'./lane.component.html',\r\n\tstyleUrls:\t\t['./lane.component.css']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class LaneComponent implements OnInit\r\n{\r\n\t@Input('tasks')\t\t\ttasks:\t\tTask[] = [];\r\n\t@Input() typeTicket: string;\r\n\t@Input('laneTitle')\t\tlaneTitle:\tany;\r\n\r\n\r\n\tpublic _onTicketEdit:\tEventEmitter = new EventEmitter();\r\n\tpublic _onTicketRemove:\tEventEmitter = new EventEmitter();\r\n\tpublic _onTicketSelect:\tEventEmitter = new EventEmitter();\r\n\tpublic _onTicketFocus:\tEventEmitter = new EventEmitter();\r\n\tpublic _onAddSubTicket:\tEventEmitter = new EventEmitter();\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Transmet l'event d'edition\r\n\t */\r\n\tpublic editTicket(task: Task)\r\n\t{\r\n\t\tthis._onTicketEdit.emit(task);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param task\r\n\t */\r\n\tpublic addSubTicket(task: Task)\r\n\t{\r\n\t\tthis._onAddSubTicket.emit(task);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Transmet l'event de suppression\r\n\t */\r\n\tpublic removeTicket(task: Task)\r\n\t{\r\n\t\tthis._onTicketRemove.emit(task);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Transmet l'event de selection pour affichage détaillé\r\n\t */\r\n\tpublic selectTicket(task: Task)\r\n\t{\r\n\t\tthis._onTicketSelect.emit(task);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Focus => pour savoir qui a été Drag and dropé\r\n\t */\r\n\tpublic focusTicket(task: Task)\r\n\t{\r\n\t\tthis._onTicketFocus.emit(task);\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{task.nameEpreuve}} - {{task.nameSujet}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
{{task.typeLib}}
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tmode_edit\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{{task.name}}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, OnInit, EventEmitter, ViewEncapsulation, Input } from '@angular/core';\r\nimport { WorkspaceData }\t\tfrom '../../../../providers/workspace-data';\r\nimport { Task as TaskClass}\tfrom '../../../../classes/task.class';\r\nimport { SavedData }\t\t\tfrom '../../../../providers/saved-data';\r\nimport { TaskData }\t\t\t\tfrom '../../../../providers/task-data';\r\nimport { UserData }\t\t\t\tfrom '../../../../providers/user-data';\r\nimport { Task }\t\t\t\t\tfrom '../../model/task';\r\nimport * as _\t\t\t\t\tfrom 'underscore';\r\nimport { Router }\t\t\t\tfrom '@angular/router';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'ticket',\r\n\ttemplateUrl:\t'./ticket.component.html',\r\n\tinputs:\t\t\t['task'],\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\toutputs:\t\t['_editTicket: onEdit', '_addTicket: onAdd', '_removeTicket: onRemove', '_displayDetails: onSelect', '_focusTicket: onFocus'],\r\n\tstyleUrls:\t\t['./ticket.component.css']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class TicketComponent implements OnInit\r\n{\r\n\ttask: Task;\r\n\t@Input()\t\ttypeTicket: string;\r\n\r\n\tpublic _editTicket:\t\t\tEventEmitter = new EventEmitter();\r\n\tpublic _removeTicket:\t\tEventEmitter = new EventEmitter();\r\n\tpublic _displayDetails:\t\tEventEmitter = new EventEmitter();\r\n\tpublic _focusTicket:\t\tEventEmitter = new EventEmitter();\r\n\tpublic _addTicket:\t\t\tEventEmitter = new EventEmitter();\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(\r\n\t\tpublic workspaceData:\tWorkspaceData,\r\n\t\tpublic userData:\t\tUserData,\r\n\t\tpublic savedData:\t\tSavedData,\r\n\t\tpublic router:\t\t\tRouter)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t *\r\n\t *\r\n\t *\r\n\t */\r\n\tpublic ngOnInit()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic editTicket()\r\n\t{\r\n\t\tthis._editTicket.emit(this.task);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic addTicket()\r\n\t{\r\n\r\n\t\tthis._addTicket.emit(this.task);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic focusTicket()\r\n\t{\r\n\t\tthis._focusTicket.emit(this.task);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic removeTicket()\r\n\t{\r\n\t\tif (confirm(\"Confirmez vous la suppression de \" + this.task.name + ' ?' ))\r\n\t\t{\r\n\t\t\tthis._removeTicket.emit(this.task);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic selectTicket(evt: any)\r\n\t{\r\n\t\tif (evt)\r\n\t\t{\r\n\t\t\tevt.preventDefault();\r\n\t\t}\r\n\t\tthis._displayDetails.emit(this.task);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param task\r\n\t */\r\n\tpublic addSubTask(task: any)\r\n\t{\r\n\t}\r\n\r\n\r\n\tpublic gotoSubject(idSujet: any)\r\n\t{\r\n\t\tthis.workspaceData.constructAutoTreeBySubjectId(idSujet);\r\n\t}\r\n\r\n\r\n\r\n\tpublic goToSubject(task: TaskClass)\r\n\t{\r\n\t\t// ===================================\r\n\t\t// Affectation des objets\r\n\t\t// ===================================\r\n\r\n\t\tthis.workspaceData.selectedSujet\t\t\t= this.workspaceData.getSujet(task.idSujet);\r\n\t\tthis.workspaceData.selectedMatiere\t\t\t= this.workspaceData.getEpreuve(task.idEpreuve);\r\n\t\tthis.workspaceData.selectedExamen\t\t\t= this.workspaceData.getExamen(task.idExamen);\r\n\t\tthis.workspaceData.selectedSession\t\t\t= this.workspaceData.getSession(task.idSession);\r\n\t\tthis.workspaceData.selectedEtablissement\t= this.workspaceData.getEtablissement(task.idEtablissement);;\r\n\r\n\t\tthis.workspaceData.selectedItems\t= [];\r\n\t\tthis.workspaceData.selectedItems[0] = this.workspaceData.selectedEtablissement.id;\r\n\t\tthis.workspaceData.selectedItems[1] = this.workspaceData.selectedSession.id;\r\n\t\tthis.workspaceData.selectedItems[2] = this.workspaceData.selectedExamen.id;\r\n\t\tthis.workspaceData.selectedItems[3] = this.workspaceData.selectedMatiere.id;\r\n\r\n\t\tthis.workspaceData.selectedTask\t\t= task;\r\n\t\tthis.workspaceData.selectedSegment\t= 'subject';\r\n\t\tthis.workspaceData.goToSubject\t\t= true;\r\n\t\tthis.savedData.lastGroup\t\t\t= 'task';\r\n\r\n\r\n\t\tif (this.userData.isAdmin() || this.userData.isSuperviseur() === true)\r\n\t\t{\r\n\t\t\tthis.savedData.lastGroup = 'epreuve';\r\n\t\t}\r\n\r\n\t\tthis.router.navigate(['/workspace']);\r\n \t}\r\n\r\n}\r\n","
\r\n
\r\n
\r\n\t\t\t
\r\n\t\t\t\t{{ 'selectAssigned.message' | translate }}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
close
\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n\r\n \r\n \r\n\t\t\t\t\t{{ user.libelle }}\r\n \r\n \r\n\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{{ 'selectAssigned.sendMail' | translate }}\r\n\t\t\t
\r\n
\r\n\r\n
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\t\t\t\tfrom '@angular/core';\r\nimport { FormControl, FormBuilder, FormGroup, Validators }\tfrom '@angular/forms';\r\nimport { MatDialogRef }\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\nimport { UserData }\t\t\tfrom '../../../providers/user-data';\r\n\r\n\r\n@Component({\r\n selector:\t\t'select-assigned',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'select-assigned.component.html',\r\n styleUrls:\t\t['./select-assigned.component.scss']\r\n})\r\n\r\n\r\n/**\r\n * Modal permettant l'ajout d'un nouveau commentaire pour un élement donné\r\n */\r\nexport class SelectAssignedComponent\r\n{\r\n //Identifiant de l'élément concerné par le nouveau commentaire\r\n public _idElement: string;\r\n //objet Comment correspondant au commentaire en édition\r\n public _currentComment: Comment;\r\n\r\n public moFormUser:\t\t\tFormGroup;\r\n public moFormCtrlUser:\t\tFormControl;\r\n public moFormCtrlSendEmail:\tFormControl;\r\n public selectedUser:\t\tany;\r\n public sendEmail:\t\t\tboolean = false;\r\n public usersAvailable:\t\tany[] = [];\r\n\r\n\r\n constructor(public dialogRef: MatDialogRef,\r\n public fb: FormBuilder,\r\n public userData: UserData,\r\n @Inject(MAT_DIALOG_DATA) public data: any)\r\n\t{\r\n this.userData.getUsers();\r\n\r\n const allUsers: any = this.userData.getUsers();\r\n\r\n if (allUsers)\r\n {\r\n for (const key in allUsers)\r\n {\r\n if (allUsers[key])\r\n {\r\n let libelle = key;\r\n if (allUsers[key].infos && allUsers[key].infos.nom && allUsers[key].infos.prenom)\r\n {\r\n libelle = allUsers[key].infos.prenom + ' ' + allUsers[key].infos.nom;\r\n }\r\n\r\n\t\t\t\t\tthis.usersAvailable.push(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue:\t\tkey,\r\n\t\t\t\t\t\t\tlibelle:\tlibelle\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n }\r\n }\r\n\r\n\r\n this.moFormCtrlUser\t\t\t= this.fb.control(this.selectedUser, Validators.required);\r\n this.moFormCtrlSendEmail\t= this.fb.control(this.sendEmail);\r\n\r\n this.moFormUser = this.fb.group(\r\n {\r\n user:\t\tthis.moFormCtrlUser,\r\n sendEmail:\tthis.moFormCtrlSendEmail\r\n });\r\n\r\n\r\n if (data)\r\n {\r\n if (data.sendMailDefaultValue)\r\n {\r\n this.sendEmail = data.sendMailDefaultValue;\r\n }\r\n }\r\n\t}\r\n\r\n\r\n\tpublic cancel()\r\n {\r\n this.dialogRef.close(null);\r\n }\r\n\r\n\r\n public canValidate()\r\n {\r\n let result = false;\r\n\r\n if (this.selectedUser !== undefined && this.selectedUser !== '')\r\n {\r\n result = true;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n public vadidateUser()\r\n {\r\n const result: any = {};\r\n result.user = this.selectedUser;\r\n\r\n if (this.sendEmail === true)\r\n {\r\n result.typeEmail = 'newTask';\r\n }\r\n\r\n this.dialogRef.close(result);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n {{ 'sendMail.title' | translate }}\r\n
\r\n\t\t\t
\r\n\t\t\t\t
close
\r\n\t\t\t
\r\n
\r\n\r\n
\r\n
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\r\n {{ 'sendMail.sendMail' | translate }}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\t\t\t\tfrom '@angular/core';\r\nimport { FormControl, FormBuilder, FormGroup, Validators }\tfrom '@angular/forms';\r\nimport { MatDialogRef }\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\n\r\n@Component({\r\n selector:\t\t'send-mail-modal',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'sendMailModal.component.html',\r\n styleUrls:\t\t['./sendMailModal.component.scss']\r\n})\r\n\r\nexport class SendMailModalComponent\r\n{\r\n public moFormMail:\t\t\tFormGroup;\r\n public moFormCtrlSendEmail: FormControl;\r\n\r\n public sendEmail: boolean = false;\r\n\r\n constructor(public dialogRef:\tMatDialogRef,\r\n public fb:\t\t\tFormBuilder,\r\n @Inject(MAT_DIALOG_DATA) public data: any)\r\n {\r\n\t\t\r\n this.moFormCtrlSendEmail\t= this.fb.control(this.sendEmail);\r\n this.moFormMail\t\t\t\t= this.fb.group(\r\n {\r\n sendEmail: this.moFormCtrlSendEmail\r\n });\r\n }\r\n\t\r\n\r\n public cancel()\r\n {\r\n this.dialogRef.close(null);\r\n }\r\n\t\r\n\r\n public vadidateMail()\r\n {\r\n const result: any = \r\n\t\t{\r\n sendMail: this.sendEmail\r\n };\r\n\t\t\r\n this.dialogRef.close(result);\r\n }\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\t{{ 'warningUser.title' | translate }}\r\n\t\t
\r\n\t\t
\r\n\t\t\t
close
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t
\r\n
","import { Component, ViewEncapsulation }\tfrom '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\tfrom '@angular/material';\r\n\r\n@Component({\r\n\tselector:\t\t'warning-unlogged-user-modal',\r\n\ttemplateUrl:\t'warningUnloggedUserModal.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./warningUnloggedUserModal.component.scss']\r\n})\r\n\r\nexport class WarningUnloggedUserModalComponent\r\n{\r\n\t\r\n constructor(public dialogRef: MatDialogRef)\r\n {\r\n\t}\r\n\r\n public validate()\r\n {\r\n this.dialogRef.close();\r\n }\r\n public cancel()\r\n {\r\n this.dialogRef.close();\r\n }\r\n}","export class Task\r\n{\r\n\r\n\tpublic static fromJsonObject(jsonObj: any): Task\r\n {\r\n\t\treturn new Task(0);\r\n\t}\r\n\t\r\n\t\r\n\tconstructor(\r\n\t\tpublic id:\t\t\t\tnumber,\r\n\t\tpublic name:\t\t\tstring = '',\r\n\t\tpublic description:\t\tstring = '',\r\n\t\tpublic status:\t\t\tstring = 'todo',\r\n\t\tpublic priority:\t\tnumber = 2,\r\n\t\tpublic dateCreation:\tstring = '',\r\n\t\tpublic dateUpdate:\t\tstring = '',\r\n\t\tpublic points:\t\t\tnumber = 0\r\n\t) { }\r\n\r\n\r\n\tpublic newTask: boolean;\r\n\r\n\r\n\tpublic toJson()\r\n {\r\n\t}\r\n}\r\n","// Angualr\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n// Neoptec\r\nimport { Task }\t\tfrom '../../../classes/task.class';\r\n\r\n\r\n@Pipe({\r\n\tname: 'tasksFilter',\r\n\t// Pure make the pipe becomes stateful pipe\r\n\t// By default it's value is true which is stateless, data will be fetch only 1 time\r\n\tpure: false\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class TaskFilterPipe implements PipeTransform\r\n{\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic transform(value: Task[], key: string, val: string): Task[]\r\n\t{\r\n\r\n\t\tif (typeof key === 'undefined' || typeof val === 'undefined')\r\n\t\t{\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tif (value)\r\n\t\t{\r\n\t\t\treturn value.filter((task: any) => task[key] == val);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","// Angular\r\nimport { Injectable }\t\t\t\tfrom '@angular/core';\r\nimport { Http, Headers, Response }\tfrom '@angular/http';\r\nimport {Observable}\t\t\t\t\tfrom 'rxjs/Rx';\r\n// Noeptec\r\nimport { Task }\t\t\t\t\t\tfrom '../model/task';\r\nimport { ISocketData, SocketWhat }\tfrom '../../../models/message.model';\r\nimport { SocketService }\t\t\tfrom '../../../services/socket.service';\r\nimport { UserData }\t\t\t\t\tfrom '../../../providers/user-data';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class TaskService\r\n{\r\n\tpublic tasks:\t\tTask[] = [];\r\n\tpublic urlTask:\t\tstring = 'http://192.168.0.24:3004/tasks';\r\n\tpublic socket:\t\tany;\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(\r\n\t\tpublic socketService: SocketService,\r\n\t\tpublic userData: UserData,\r\n\t\tpublic http: Http\r\n\t)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * retourne la liste des taches\r\n\t */\r\n\tpublic getTasks()\r\n\t{\r\n\t\treturn new Promise(resolve =>\r\n\t\t{\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.http.get(this.urlTask).map(res => res.json()).subscribe(data =>\r\n\t\t\t{\r\n\t\t\t\tlet task: Task;\r\n\t\t\t\tfor (task of data)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.tasks.push(new Task(task.id, task.name, task.description, task.status, task.priority, task.dateCreation, task.dateUpdate, task.points));\r\n\t\t\t\t}\r\n\t\t\t\tresolve(this.tasks);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic removeTask(taskId: number)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// On remove la task du tableau\r\n\t\t// ---------------------------------------\r\n\t\tlet array: Task[]\t= this.tasks.filter(item => { return item.id !== taskId });\r\n\t\tthis.tasks\t\t\t= array;\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\t// Création de l'url de suppression\r\n\t\tlet url = this.urlTask + '/' + taskId;\r\n\t\t\r\n\t\treturn this.http.delete(url);\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic updateTask(task: Task)\r\n\t{\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\tlet credentials =\r\n\t\t\t{\r\n\t\t\t\t\"id\":\t\t\t\ttask.id,\r\n\t\t\t\t\"name\":\t\t\t\ttask.name,\r\n\t\t\t\t\"description\":\t\ttask.description,\r\n\t\t\t\t\"status\":\t\t\ttask.status,\r\n\t\t\t\t\"dateCreation\":\t\ttask.dateCreation,\r\n\t\t\t\t\"dateUpdate\":\t\ttask.dateUpdate,\r\n\t\t\t\t\"priority\":\t\t\ttask.priority,\r\n\t\t\t\t\"points\":\t\t\ttask.points\r\n\t\t\t};\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Si la tache est nouvelle on l'enregistre, sinon on met à jour\r\n\t\t// ---------------------------------------\r\n\r\n\t\t// ADD\r\n\t\tif (task.newTask)\r\n\t\t{\r\n\t\t\ttask.newTask = false;\r\n\t\t\tthis.tasks.push(task)\r\n\t\t\tlet sUserId = this.userData.getUserId();\r\n\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t\t'name':\tsUserId,\r\n\t\t\t\t\t\t\t'what':\teSocketWhat,\r\n\t\t\t\t\t\t\t'cmd':\t'tasks',\r\n\t\t\t\t\t\t\t'args': { tasks: credentials }\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('create', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n//\t\t\treturn this.http.post(this.urlTask, JSON.stringify(credentials), { headers: headers }).map((res: Response) => res.json());\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t// MAJ\r\n\t\t\t// Mise à jours de la liste des taches\r\n\t\t\tfor (let nIndice = 0; nIndice < this.tasks.length; nIndice++)\r\n\t\t\t{\r\n\t\t\t\tif (this.tasks[nIndice].id === task.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.tasks[nIndice] = task;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this.http.put(this.urlTask + '/' + task.id, JSON.stringify(credentials), { headers: headers }).map((res: Response) => res.json());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic dispatchPromise(callback: any)\r\n\t{\r\n\t\tlet promise = new Promise(function (resolve)\r\n\t\t{\r\n\t\t\tresolve(callback());\r\n\t\t});\r\n\r\n\t\treturn promise;\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\r\n\t\r\n\t\t \r\n\t\t\t
\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tTous\r\n\t\t\t\t\t\t\t\t{{ etablissement.name }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tToutes\r\n\t\t\t\t\t\t\t\t{{session.name}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tTous\r\n\t\t\t\t\t\t\t\t{{examen.name}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tToutes\r\n\t\t\t\t\t\t\t\t{{matiere.name}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tTous\r\n\t\t\t\t\t\t\t\t{{sujet.name}}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
{{ 'task.unassigned' | translate }}
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
{{state.libelle}}
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
{{state.name}}
\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
{{user}}
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\r\n\t\t\t\r\n\r\n\t\t
\r\n\t
\r\n\r\n
\r\n","import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Task } \t\t\t\t\tfrom '../../classes/task.class';\r\n\r\nimport { EtablissementService } \tfrom '../../services/etablissement.service';\r\nimport { SocketService }\t\t\tfrom '../../services/socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../../models/message.model';\r\nimport { TaskService }\t\t\t\tfrom '../../services/task.service';\r\nimport { MessagesService }\t\t\tfrom '../../services/messages.service';\r\nimport { AppComponent }\t\t\t\tfrom '../../app.component';\r\nimport { UserData }\t\t\t\t\tfrom '../../providers/user-data';\r\nimport { AdminData }\t\t\t\tfrom '../../providers/admin-data';\r\nimport { WorkspaceData }\t\t\tfrom '../../providers/workspace-data';\r\nimport { TaskData } \t\t\t\tfrom '../../providers/task-data';\r\nimport { MatDialog }\t\t\t\tfrom '@angular/material';\r\n\r\nimport { EditorPanelTaskComponent }\t\tfrom './components/editor-panel-task/editor-panel-task.component';\r\nimport { EditorPanelComponent }\t\t\tfrom './components/editor-panel/editor-panel.component';\r\nimport { SelectAssignedComponent }\t\tfrom './modal/select-assigned.component';\r\nimport { SendMailModalComponent }\t\tfrom './modal/sendMailModal.component';\r\nimport { ValidateTaskModalComponent }\tfrom '../../pages/workspace/subject/subject-list/modal/validateTaskModal/validateTaskModal.component';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { DragulaService }\tfrom 'ng2-dragula/ng2-dragula';\r\nimport * as _\t\t\t\tfrom 'underscore';\r\nimport {Observable}\t\t\tfrom 'rxjs/Rx';\r\n\r\n\r\n@Component({\r\n\tselector:\t\t'app-task',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\ttemplateUrl:\t'./task.component.html',\r\n\tstyleUrls:\t\t['./task.component.scss']\r\n})\r\n\r\n\r\nexport class TaskComponent implements OnInit, OnDestroy\r\n{\r\n\tpublic tasksByUser:\t\t\tany\t\t\t= {};\r\n\tpublic tasksByGroup:\t\tany\t\t\t= {};\r\n\tpublic lastTasksByGroup:\tany\t\t\t= {};\r\n\tpublic usersTask:\t\t\tstring[]\t= [];\r\n\tpublic structureSubjects:\tany[]\t\t= [];\r\n\tpublic usersAvailable:\t\tany[]\t\t= [];\r\n\tpublic scenariosAvailable:\tany[]\t\t= [];\r\n\tpublic ticketByWorkflow:\tany[]\t\t= [];\r\n\tpublic showFab:\t\t\t\tboolean\t\t= false;\r\n\tpublic tasksLoaded:\t\t\tboolean\t\t= false;\r\n\tpublic updating:\t\t\tboolean\t\t= false;\r\n\tpublic kanbanTypeSelected:\tstring\t\t= 'state';\r\n\tpublic isLoading:\t\t\tboolean\t\t= false;\r\n\r\n\tpublic selectedTask:\t\t\tTask;\r\n\tpublic editingTask:\t\t\t\tTask;\r\n\tpublic isEditorPanelActive:\t\tboolean;\r\n\tpublic focusedTask:\t\t\t\tTask;\r\n\tpublic dropSubscription:\t\tany;\r\n public titleScenarioSelected:\tany;\r\n public scenarioSelected:\t\tany;\r\n\tpublic moTaskDataSubscription:\tany;\r\n\tselectedEtablissementId:\t\tany;\r\n\r\n\t/**\r\n\t * Types de diagrammes kanban qui seront selectionnables\r\n\t * dans le select en haut à gauche de l'interface des tâches\r\n\t */\r\n\tpublic kanbanTypes: any = [];\r\n\r\n\r\n//\t/**\r\n//\t * Ensemble des états disponibles.\r\n//\t * Correspond aux colonnes du diagramme kanban lorsque le kanban de type\r\n//\t * Etat est selectionné\r\n//\t */\r\n\tpublic statesAvailable: any = [];\r\n\r\n\r\n\t/**\r\n\t * Ensemble des status disponibles.\r\n\t * Correspond aux colonnes du diagramme kanban lorsque le kanban de type\r\n\t * Status est selectionné\r\n\t */\r\n\tpublic typeAvailable = [\r\n\t\t{\r\n\t\t\t/* Correspond à des tâches de rédaction de sujets assignées à un ou plusieurs utilisateurs */\r\n\t\t\tvalue:\t\t'redaction',\r\n\t\t\tlibelle:\t'Rédaction'\r\n\t\t},\r\n\t\t{\r\n\t\t\t/** Correspond à des tâches de tests de sujets en conditions réélles par un ou plusieurs utilisateurs\r\n\t\t\t * assignés\r\n\t\t\t */\r\n\t\t\tvalue:\t\t'test',\r\n\t\t\tlibelle:\t'Test'\r\n\t\t},\r\n\t\t{\r\n\t\t\t/** Correspond à des tâches de validation de sujets assignées à un ou plusieurs membres de jury */\r\n\t\t\tvalue:\t\t'miseEnPage',\r\n\t\t\tlibelle:\t'Mise en page'\r\n\t\t},\r\n\t\t{\r\n\t\t\t/** Correspond à des tâches de validation de sujets assignées à un ou plusieurs membres de jury */\r\n\t\t\tvalue:\t\t'verification',\r\n\t\t\tlibelle:\t'Vérification finale'\r\n\t\t}\r\n\t];\r\n\r\n\r\n\tpublic options: any =\r\n\t{\r\n\t\taccepts: (el: any, target: any, source: any, sibling: any) =>\r\n\t\t{\r\n\t\t\tlet result = true;\r\n\t\t\t// Un simple utilisateur ne peux pas déplacer une tache vers l'état 'non assignées' ou 'Terminées'\r\n\t\t\t// ou qui est déja en état 'non assignées' ou 'Terminées'\r\n\t\t\tif (this.userData.isAdmin() === false && this.userData.isSuperviseur() === false)\r\n\t\t\t{\r\n\t\t\t\tif (target && target.id && source && source.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (target.id === 'new' || target.id === 'done' || target.id === 'todo' || source.id === 'new' || source.id === 'done')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresult = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tconstructor(\r\n\t\tpublic _router:\t\t\t\t\tRouter,\r\n\t\tpublic _taskService:\t\t\tTaskService,\r\n\t\tpublic etablissementService:\tEtablissementService,\r\n\t\tpublic socketService:\t\t\tSocketService,\r\n\t\tpublic messagesService:\t\t\tMessagesService,\r\n\t\tpublic appComponent:\t\t\tAppComponent,\r\n\t\tpublic dragulaService:\t\t\tDragulaService,\r\n\t\tpublic userData:\t\t\t\tUserData,\r\n\t\tpublic taskData:\t\t\t\tTaskData,\r\n\t\tpublic adminData:\t\t\t\tAdminData,\r\n\t\tpublic workspaceData:\t\t\tWorkspaceData,\r\n\t\tpublic dialog:\t\t\t\t\tMatDialog,\r\n\t\tpublic translate: \t\t\t\tTranslateService)\r\n\t{\r\n\t\tthis.translate.get('task.pageTitle').subscribe((value: string) => {\r\n\t\t\tappComponent.setPageTitle(value);\r\n\t\t});\r\n\r\n\t\tthis._initKanbanTypes();\r\n\t\tthis._initStatesAvailable();\r\n\r\n\t\tthis._applyTasksByUser();\r\n\t\tthis._applyTasksByGroup();\r\n\r\n\t\t//usersAvailable\r\n\t\t/**\r\n\t\t * On effectue un appel socket vers le serveur pour récupérer les utilisateurs disponibles\r\n\t\t */\r\n\t\tthis.usersAvailable = this.userData.getUsers();\r\n\t}\r\n\r\n\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis._initTasks();\r\n\t\tthis._initParameters();\r\n\t\tthis.dropSubscription = this.dragulaService.drop.subscribe((el: any) =>\r\n\t\t{\r\n\r\n\t\t\t//Si lors du drop la colonne d'arrivée est la même que la colonne de départ on ne fait rien\r\n\t\t\t//sinon on applique les changements\r\n\t\t\t\r\n\t\t\tif (el[2].id !== el[3].id)\r\n\t\t\t{\r\n\t\t\t\tif(el[3].id === \"done\")\r\n\t\t\t\t{\r\n\t\t\t\t\t/*************************************** \r\n\t\t\t\t\t * Avertissement demandant confirmation de la supression des taches suivante\r\n\t\t\t\t\t***************************************/\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t/*************************************** \r\n\t\t\t\t\t * Si oui on supprime les taches suivante\r\n\t\t\t\t\t***************************************/\r\n\r\n\r\n\t\t\t\t\t/*************************************** \r\n\t\t\t\t\t * Si non on remet la tache dans sa colonne\r\n\t\t\t\t\t***************************************/\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tlet mustChooseAssigned\t\t\t= false;\r\n\t\t\t\t\tlet mustDisplayValidationForm\t= false;\r\n\t\t\t\t\tlet mustShowSendMailModal\t\t= false;\r\n\r\n\t\t\t\t\t// Todo => Rajouter l'update \r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// Récupération de la lane pour mettre à jour la task en cours\r\n\t\t\t\t\t// el[0] le type de lane\r\n\t\t\t\t\t// el[2] la nouvelle lane\r\n\t\t\t\t\t// el[3] l'ancienne lane \r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tif (this.focusedTask && !this.updating)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.focusedTask.newTask = false;\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// On créer un objet resSubmit contenant dans un premier temps la tâche qui a été déplacée\r\n\t\t\t\t\t\t// par drag and drop\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tlet resSubmit: any =\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttask:\tthis.focusedTask,\r\n\t\t\t\t\t\t\t\tdatas:\tundefined\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// \tSi on est dans un kanban de type Etat\r\n\t\t\t\t\t\t// on met à jour le le champ state de la tache courante qui à été\r\n\t\t\t\t\t\t// déplacée dans le tableau\r\n\t\t\t\t\t\t// On met à jour l'objet resSubmit avec le nouvel état de la tâche déplacée\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tif (el[0] === 'state')\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (el[3].id === 'new')\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tmustChooseAssigned = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (el[3].id !== 'done' && (el[2].id === 'done' || el[2].id === 'review'))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tmustDisplayValidationForm = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (el[2].id === 'new')\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tmustShowSendMailModal = true;\r\n\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\tresSubmit.datas =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tstate:\t\tel[2].id,\r\n\t\t\t\t\t\t\t\t\toldState:\tel[3].id\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tthis.focusedTask.state = el[2].id;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t// Si on est dans un kanban de type Status\r\n\t\t\t\t\t\t\t// on met à jour le le champ status de la tache courante qui à été\r\n\t\t\t\t\t\t\t// déplacée dans le tableau\r\n\t\t\t\t\t\t\t// On met à jour l'objet resSubmit avec le nouveau status de la tâche déplacée\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\tif (el[0] === 'status')\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tresSubmit.datas =\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttype: el[2].id\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\tthis.focusedTask.type = el[2].id;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t// Si on est dans un kanban de type Utilisateur\r\n\t\t\t\t\t\t\t\t// on met à jour le le champ assigneduser de la\r\n\t\t\t\t\t\t\t\t// tache courante qui à été\r\n\t\t\t\t\t\t\t\t// déplacée dans le tableau\r\n\t\t\t\t\t\t\t\t// On met à jour l'objet resSubmit avec le nouvel\r\n\t\t\t\t\t\t\t\t// utilisateur assigné de la tâche déplacée\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\tif (el[0] === 'user')\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tresSubmit.datas =\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tassigneduser: el[2].id\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tthis.focusedTask.assigneduser = el[2].id;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// On appelle la function permettant la mise à jour en bdd de la tâche déplacée.\r\n\t\t\t\t\t\t// Si initialiement la tache était dans l'état 'non assigné' on affiche une modale pour\r\n\t\t\t\t\t\t// sélectionner l'utilisateur assigné\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tif (mustChooseAssigned === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.translate.get('task.textTaskAssigned').subscribe((value1: string) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.translate.get('task.echeance').subscribe((value2: string) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tconst dialogRef = this.dialog.open(SelectAssignedComponent,\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\t\t\theight:\t\t\t'40%',\r\n\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'50%',\r\n\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tsendMailDefaultValue: true\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tdialogRef.afterClosed().subscribe((result: any) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (result && result.user)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tresSubmit.datas.assigneduser = result.user;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (result.typeEmail)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentExamen\t\t= this.workspaceData.getExamen(this.focusedTask.idExamen);\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentEpreuve\t= this.workspaceData.getEpreuve(this.focusedTask.idEpreuve);\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentSujet\t\t= this.workspaceData.getSujet(this.focusedTask.idSujet);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tresSubmit.datas.datasEmail =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnomEtape:\tresSubmit.task.typeLib,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnomExamen:\tcurrentExamen\t\t\t? currentExamen.name\t: '',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnomEpreuve: currentEpreuve\t\t\t? currentEpreuve.name\t: '',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnomSujet:\tcurrentSujet\t\t\t? currentSujet.name\t\t: ''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t\t\t\tresSubmit.datas.typeMail = result.typeEmail;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tthis.submitTaskChange(resSubmit);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t//Si aucun utilisateur n'est selectionné\r\n\t\t\t\t\t\t\t\t\t\t\t//on replace la tache a son emplacement initial\r\n\t\t\t\t\t\t\t\t\t\t\tthis.focusedTask.state = el[3].id;\r\n\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (mustDisplayValidationForm === true)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet heightModal;\r\n\t\t\t\t\t\t\t\tif (el[2].id === 'review')\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\theightModal = '65vh';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\theightModal = '75vh';\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t//On modifie l'état de la tache pour la modale de validation\r\n\t\t\t\t\t\t\t\tlet oldState;\r\n\t\t\t\t\t\t\t\tif (el[2].id === 'done')\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\toldState = 'review';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\toldState = 'inprogress';\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlet dialogRefValidateTask = this.dialog.open(ValidateTaskModalComponent,\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\theight:\t\t\theightModal,\r\n\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'650px',\r\n\r\n\t\t\t\t\t\t\t\t\t\tdisableClose: true,\r\n\t\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t'task':\t\tresSubmit.task,\r\n\t\t\t\t\t\t\t\t\t\t\t'state':\toldState\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\tdialogRefValidateTask.afterClosed().subscribe((newTask: any) =>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t\t\t\t\t * Si une nouvelle tache doit être créée après la validation\r\n\t\t\t\t\t\t\t\t\t\t * on ouvre la modale de création de tache\r\n\t\t\t\t\t\t\t\t\t\t */\r\n\t\t\t\t\t\t\t\t\t\tlet selectedItems: any[] =\r\n\t\t\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t\t\tresSubmit.task.idEtablissement,\r\n\t\t\t\t\t\t\t\t\t\t\t\tresSubmit.task.idSession,\r\n\t\t\t\t\t\t\t\t\t\t\t\tresSubmit.task.idExamen,\r\n\t\t\t\t\t\t\t\t\t\t\t\tresSubmit.task.idEpreuve\r\n\t\t\t\t\t\t\t\t\t\t\t];\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (newTask !== undefined)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlet dialogRefCreateTask = this.dialog.open(EditorPanelTaskComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\theight:\t\t\t'80%',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'80%',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'selectedItems':\tselectedItems,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'oldTask':\t\t\tresSubmit.task,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'task':\t\t\t\tnewTask,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'isEdition':\t\tfalse\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tdialogRefCreateTask.afterClosed().subscribe((result: any) =>\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t//Si on annule on remet la tache à l'état précédent\r\n\t\t\t\t\t\t\t\t\t\t\tthis.focusedTask.state = el[3].id;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (mustShowSendMailModal === true)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.translate.get('task.textTaskUnassigned1').subscribe((value1: string) => {\r\n\t\t\t\t\t\t\t\t\t\tthis.translate.get('task.textTaskUnassigned2').subscribe((value2: string) => {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tconst dialogRefSendMail = this.dialog.open(SendMailModalComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\theight:\t\t\t'30%',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth:\t\t\t'30%',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdata:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{}\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tdialogRefSendMail.afterClosed().subscribe((result: any) =>\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (result)\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (result.sendMail === true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst currentSujet = this.workspaceData.getSujet(this.focusedTask.idSujet);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresSubmit.datas.typeMail\t= 'unassignedTask';\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresSubmit.datas.datasEmail\t=\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnomSujet: currentSujet ? currentSujet.name : '',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnomEtape: resSubmit.task.typeLib\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.submitTaskChange(resSubmit);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t//Si aucun utilisateur n'est selectionné\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t//on replace la tache a son emplacement initial\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.focusedTask.state = el[3].id;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.submitTaskChange(resSubmit);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tthis.moTaskDataSubscription = this.taskData.taskDataEmitter.subscribe((values: any) =>\r\n\t\t{\r\n\t\t\tif (values === 'task::update')\r\n\t\t\t{\r\n\t\t\t\tthis._initParameters();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedEtablissement(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedEtablissement = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\r\n\t\t\tthis.workspaceData.resetSelectedSession();\r\n\t\t\tthis.workspaceData.resetSelectedExamen();\r\n\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedSujet();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.resetSelectedEtablissement();\r\n\t\t\tthis.workspaceData.resetSelectedSession();\r\n\t\t\tthis.workspaceData.resetSelectedExamen();\r\n\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedSujet();\r\n\t\t}\r\n\r\n\t\tthis.taskData.filterTasks('etab', id);\r\n\t}\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedSession(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedSession = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\r\n\t\t\tthis.workspaceData.resetSelectedExamen();\r\n\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedSujet();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.resetSelectedSession();\r\n\t\t\tthis.workspaceData.resetSelectedExamen();\r\n\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedSujet();\r\n\t\t}\r\n\r\n\t\tthis.taskData.filterTasks('sess', id);\r\n\r\n\t}\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedExamen(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedExamen = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedSujet();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\r\n\t\t\tthis.workspaceData.resetSelectedExamen();\r\n\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedSujet();\r\n\t\t}\r\n\r\n\t\tthis.taskData.filterTasks('exam', id);\r\n\r\n\t}\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedMatiere(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedMatiere = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\t\t\tthis.workspaceData.resetSelectedSujet();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.resetSelectedMatiere();\r\n\t\t\tthis.workspaceData.resetSelectedSujet();\r\n\t\t}\r\n\r\n\t\tthis.taskData.filterTasks('matiere', id);\r\n\r\n\t}\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic changeSelectedSujet(event: any)\r\n\t{\r\n\t\tthis.workspaceData.selectedSujet = event;\r\n\r\n\t\tlet id = null;\r\n\t\tif (event && event.id)\r\n\t\t{\r\n\t\t\tid = event.id;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.workspaceData.selectedSujet = null;\r\n\t\t}\r\n\r\n\t\tthis.taskData.filterTasks('suj', id);\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnDestroy()\r\n\t{\r\n\t\t//On désactive la souscription aux evènement de drop lorsque l'on quitte la page\r\n\t\t//Permet de ne pas multiplier les mêmes appels\r\n\t\tif (this.dropSubscription)\r\n\t\t{\r\n\t\t\tthis.dropSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\tif (this.moTaskDataSubscription)\r\n\t\t{\r\n\t\t\tthis.moTaskDataSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic processRoute()\r\n\t{\r\n\t\tlet routeParams = this.getRouteParams();\r\n\t}\r\n\r\n\tpublic getRouteParams(): any\r\n\t{\r\n\t\treturn null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic editTicket(task: Task)\r\n\t{\r\n\t\tthis.messagesService.getMessages(task.id, 'tasks');\r\n\t\tthis.taskData.listenTask(task);\r\n\t\tlet dialogRef = this.dialog.open(EditorPanelTaskComponent,\r\n\t\t\t{\r\n\t\t\t\theight:\t\t\t'80%',\r\n\t\t\t\twidth:\t\t\t'80%',\r\n\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\t'task':\t\t\ttask\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param task\r\n\t */\r\n\tpublic addSubTicket(task: Task)\r\n\t{\r\n\t\tthis.addTicket(task);\r\n//\t\tthis.toggle();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic selectTicket(task: Task)\r\n\t{\r\n\t\tthis.selectedTask = task;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic focusTicket(task: Task)\r\n\t{\r\n\t\tthis.focusedTask = task;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic removeTicket(task: Task)\r\n\t{\r\n\t\tthis._taskService.deleteTask(task).subscribe((res: any) =>\r\n\t\t{\r\n\t\t\tlet arrayTasks: Task[] = this.workspaceData.globalTask.filter((item: any) => { return item.id !== task.id; });\r\n\r\n\t\t\tif (task.taskLocked)\r\n\t\t\t{\r\n\t\t\t\tfor (let t of task.taskLocked)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis._updateTaskDependencies(t.id, task.id, 'lockRules', 'delete');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tif (task.lockRules)\r\n\t\t\t{\r\n\t\t\t\tfor (let rule of task.lockRules)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let rule of task.lockRules)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._updateTaskDependencies(rule.id, task.id, 'taskLocked', 'delete');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.workspaceData.globalTask = arrayTasks;\r\n\t\t\t\tthis._applyTasksByUser();\r\n\t\t\t\tthis._applyTasksByGroup();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic addTicket(parentTicket: Task = null)\r\n\t{\r\n\t\tif (this.editingTask)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newTask: Task = new Task();\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tnewTask.newTask = true;\r\n\t\tif (parentTicket)\r\n\t\t{\r\n\t\t\tnewTask.parents = [parentTicket.id];\r\n\t\t}\r\n\t\tthis.editingTask\t\t\t= newTask;\r\n\r\n\t\tthis.isEditorPanelActive\t= true;\r\n\t\tlet dialogRef\t\t\t\t= this.dialog.open(EditorPanelComponent,\r\n\t\t\t{\r\n\t\t\t\theight:\t\t\t'80%',\r\n\t\t\t\tpanelClass:\t\t'responsive_modal',\r\n\t\t\t\twidth:\t\t\t'65%',\r\n\t\t\t\tdisableClose:\ttrue,\r\n\t\t\t\tdata:\r\n\t\t\t\t{\r\n\t\t\t\t\t'task': newTask\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis.toggle();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t* Post de la mise à jours d'une task\r\n\t*/\r\n\tpublic submitTaskChange(datasTask: any)\r\n\t{\r\n\t\tthis.updating = true;\r\n\t\tlet arrayTasks: Task[];\r\n\t\tif (datasTask.task)\r\n\t\t{\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tlet task = datasTask.task;\r\n\r\n\t\t\tlet newTasks: Task[] = [];\r\n\t\t\tnewTasks = newTasks.concat(this.workspaceData.globalTask);\r\n\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tif (task.newTask === false)\r\n\t\t\t{\r\n\t\t\t\tlet newDatas = datasTask.datas;\r\n\t\t\t\t//Si la tache passe en état non assgigné, on supprime l'utilisateur assigné\r\n\t\t\t\t//Si il existe\r\n\t\t\t\tif (newDatas.state && newDatas.state === 'new')\r\n\t\t\t\t{\r\n\t\t\t\t\tif (task.assigneduser)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnewDatas.assigneduser = '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//Si un message doit être envoyé par mail on active la notification par mail sur la tache courante\r\n\t\t\t\tif (newDatas.typeMail && newDatas.typeMail !== '')\r\n\t\t\t\t{\r\n\t\t\t\t\ttask.notifyByMail = true;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\ttask.notifyByMail = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._taskService.updateTask(task, newDatas);\r\n\t\t\t\tthis.updating = false;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\ttask.flags = ['inprogress'];\r\n\t\t\t\tthis._taskService.addTask(task);\r\n\t\t\t\tthis.updating = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic toggle()\r\n\t{\r\n\t\tthis.showFab = !this.showFab;\r\n\t}\r\n\r\n\r\n\tpublic _initKanbanTypes()\r\n\t{\r\n\t\tthis.translate.get('task.state').subscribe((value1: string) =>\r\n\t\t{\r\n\t\t\tthis.translate.get('task.workflow').subscribe((value2: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.translate.get('task.user').subscribe((value3: string) =>\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tthis.kanbanTypes = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t/*Diagramme permettant de trier les tâches par état*/\r\n\t\t\t\t\t\t\tvalue:\t\t'state',\r\n\t\t\t\t\t\t\tviewValue:\tvalue1\r\n\t\t\t\t\t\t},\r\n//\t\t\t\t\t\t{\r\n//\t\t\t\t\t\t\t/*Diagramme permettant de trier les tâches par statut*/\r\n//\t\t\t\t\t\t\tvalue:\t\t'status',\r\n//\t\t\t\t\t\t\tviewValue:\tvalue2\r\n//\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t/*Diagramme permettant de trier les tâches par utilisateur*/\r\n\t\t\t\t\t\t\tvalue:\t\t'user',\r\n\t\t\t\t\t\t\tviewValue:\tvalue3\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic _initStatesAvailable()\r\n\t{\r\n\t\tthis.translate.get('task.assigned').subscribe((value1: string) =>\r\n\t\t{\r\n\t\t\tthis.translate.get('task.inprogress').subscribe((value2: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.translate.get('task.toValidate').subscribe((value3: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.translate.get('task.validated').subscribe((value4: string) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.statesAvailable =\r\n\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t/* La tache est assignée à un utilisateur mais n'est pas encore débutée */\r\n\t\t\t\t\t\t\t\t\tvalue:\t\t'todo',\r\n\t\t\t\t\t\t\t\t\tlibelle:\tvalue1\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t/* La tache est assignée et elle est en cours */\r\n\t\t\t\t\t\t\t\t\tvalue:\t\t'inprogress',\r\n\t\t\t\t\t\t\t\t\tlibelle:\tvalue2\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t/* La tache est terminée mais elle doit être validée par un responsable */\r\n\t\t\t\t\t\t\t\t\tvalue:\t\t'review',\r\n\t\t\t\t\t\t\t\t\tlibelle:\tvalue3\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t/* La tache est terminée et elle a été validée par un responsable */\r\n\t\t\t\t\t\t\t\t\tvalue:\t\t'done',\r\n\t\t\t\t\t\t\t\t\tlibelle:\tvalue4\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t];\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tpublic _initTasks()\r\n\t{\r\n\t\tlet sUserId = this.userData.getUserId();\r\n\t\tlet eSocketWhat: SocketWhat.request;\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\r\n\t\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t'cmd': 'tasks.stats',\r\n\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t'cmd': 'tasks.assigned',\r\n\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\r\n\tpublic _applyTasksByUser()\r\n\t{\r\n\t\tthis.tasksByUser\t= _.groupBy(this.workspaceData.globalTask, function(task: any){ return task.assigneduser; });\r\n\t\tthis.usersTask\t\t= _.filter(Object.keys(this.tasksByUser), function(user: any){ return user !== ''; });\r\n\r\n\t}\r\n\r\n\tpublic _applyTasksByGroup()\r\n\t{\r\n\t\tthis.lastTasksByGroup\t= [];\r\n\t\tthis.tasksByGroup\t\t= _.groupBy(this.workspaceData.globalTask, function (task: any)\r\n\t\t{\r\n\t\t\treturn task.idSession + ':' + task.idExamen + ':' + task.idEpreuve + ':' + task.idSujet;\r\n\t\t});\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet tasksDone;\r\n\t\tlet lastTask;\r\n\t\tlet lastIndexState = 0;\r\n\r\n\t\tfor (let key in this.tasksByGroup)\r\n\t\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\t\tif (this.tasksByGroup[key] && this.tasksByGroup[key].length > 0)\r\n\t\t\t{\r\n\t\t\t\ttasksDone = _.sortBy(_.where(this.tasksByGroup[key], {state: 'done'})\r\n\t\t\t\t\t\t\t, function(task: any){ return task.dateModification.getTime(); });\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tif (tasksDone && tasksDone.length)\r\n\t\t\t\t{\r\n\t\t\t\t\tlastTask = tasksDone[tasksDone.length - 1];\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tlastTask = this.tasksByGroup[key][0];\r\n\t\t\t\t\tlastIndexState = _.findLastIndex(this.typeAvailable, {value: lastTask.state});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tfor (let task of this.tasksByGroup[key])\r\n\t\t\t\t{\r\n\t\t\t\t\tif (task.state !== 'done'\r\n\t\t\t\t\t\t&& _.findLastIndex(this.typeAvailable, {value: task.state}) > lastIndexState)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlastTask = task;\r\n\t\t\t\t\t\tlastIndexState = _.findLastIndex(this.typeAvailable, {value: task.state});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.lastTasksByGroup.push(lastTask);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic _initStructuresModel(datas: any)\r\n\t{\r\n\t\tlet structureModel = [];\r\n\r\n\t\tif (datas && datas.cmd === 'node.info')\r\n\t\t{\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// On récupère la structure renvoyée par socket et on affecte les structures qui pourront\r\n\t\t\t// être sélectionnées dans le formulaire de tâches\r\n\t\t\t// ---------------------------------------\r\n\t\t\tif (datas.args && datas.args.data && datas.args.data.nodes && datas.args.data.nodes.structure)\r\n\t\t\t{\r\n\t\t\t\tfor (let etablissement of datas.args.data.nodes.structure)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let session of etablissement.sessions)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstructureModel.push(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlibelle:\tetablissement.name + ' - ' + session.name,\r\n\t\t\t\t\t\t\t\t value:\t\tsession.uuid\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tstructureModel.push(\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tlibelle:\tetablissement.name + ' - ' + session.name + ' - ' + examen.name,\r\n\t\t\t\t\t\t\t\t\tvalue:\t\tsession.uuid + ',' + examen.uuid\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\tfor (let epreuve of examen.epreuves)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tstructureModel.push(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlibelle:\tetablissement.name + ' - ' + session.name + ' - ' + examen.name + ' - ' + epreuve.name,\r\n\t\t\t\t\t\t\t\t\t\tvalue:\t\tsession.uuid + ',' + examen.uuid + ',' + epreuve.uuid\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.structureSubjects = structureModel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic _updateTaskDependencies(idTask: string, idField: string, nameField: string, mode: string)\r\n\t{\r\n\t\tlet index;\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tswitch (mode)\r\n\t\t{\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tcase 'add':\r\n\t\t\t\tindex = _.findIndex(this.workspaceData.globalTask, (val: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\treturn val.id === idTask;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet indexTask = _.findIndex(this.workspaceData.globalTask, (val: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\treturn val.id === idField;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (index !== -1 && indexTask !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet value: any = this.workspaceData.globalTask[index][nameField];\r\n\r\n\t\t\t\t\tlet index2 = _.findIndex(value, (val: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn val.id === idField;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (index2 !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.globalTask[index][nameField][index2] = this.workspaceData.globalTask[indexTask];\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.globalTask[index][nameField].push(this.workspaceData.globalTask[indexTask]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// ToComment\r\n\t\t\t// ---------------------------------------\r\n\t\t\tcase 'delete':\r\n\t\t\t\tindex = _.findIndex(this.workspaceData.globalTask, (val: any) =>\r\n\t\t\t\t{ \r\n\t\t\t\t\treturn val.id === idTask;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (index !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet index2 = _.findIndex(this.workspaceData.globalTask[index][nameField], (val: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn val.id === idField;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (index2 !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.globalTask[index][nameField].splice(index2, 1);\r\n\r\n\t\t\t\t\t\t//We update lock state of task\r\n\t\t\t\t\t\tthis.workspaceData.globalTask[index].locked = this.workspaceData.globalTask[index].lockRules.length > 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Cette fonction est appelée lorsque des informations relativres aux\r\n\t * utilisateurs sont transmises par socket\r\n\t * @param datas\r\n\t */\r\n\tpublic _onUsersReturned(datas: any)\r\n\t{\r\n\t\tif (datas.cmd && datas.cmd === 'users')\r\n\t\t{\r\n\t\t\tif (datas && datas.args && datas.args.data && datas.args.data.users)\r\n\t\t\t{\r\n\t\t\t\tthis.usersAvailable = datas.args.data.users;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Cette fonction est appellée lorsque des informations relatives aux tâches\r\n\t * sont transmises par socket\r\n\t * @param datas\r\n\t */\r\n\tpublic _onTasksReturned(datas: any)\r\n\t{\r\n\t\tif (datas.cmd && (datas.cmd === 'tasks.bynode' || datas.cmd === 'tasks.assigned'))\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.data && datas.args.data.tasks)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.globalTask = _.map(datas.args.data.tasks, (taskJson: any) =>\r\n {\r\n return Task.fromJsonObject(taskJson);\r\n });\r\n\r\n\t\t\t\tthis._applyTasksByUser();\r\n\t\t\t\tthis._applyTasksByGroup();\r\n\r\n\t\t\t\tthis.isLoading\t\t= false;\r\n\t\t\t\tthis.tasksLoaded\t= true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic changeScenarioSelected(event: any)\r\n\t{\r\n\t\tthis.titleScenarioSelected = event;\r\n\t\tthis.adminData.scenarioSelected = _.find(this.adminData.scenariosAvailable, (scenario: any) => { return scenario.title === this.titleScenarioSelected; });\r\n\r\n\t\tthis.taskData.getEpreuveByWorkflow(this.adminData.scenarioSelected.title);\r\n\t}\r\n\r\n\r\n\r\n private _initParameters()\r\n {\r\n\t\t//Initialisation des paramètres généraux\r\n\t\t//Initialisation des scénarios\r\n\t\tif (this.adminData.scenariosAvailable && this.adminData.scenariosAvailable.length > 0)\r\n\t\t{\r\n\t\t\tthis.adminData.scenarioSelected = this.adminData.scenariosAvailable[0];\r\n\t\t\tthis.titleScenarioSelected = this.adminData.scenarioSelected.title;\r\n\r\n\t\t\tthis.taskData.getEpreuveByWorkflow(this.adminData.scenarioSelected.title);\r\n\t\t}\r\n\r\n\r\n\t\tlet filterName\t= '';\r\n\t\tlet filterId\t= '';\r\n\t\tif (this.workspaceData.selectedSujet)\r\n\t\t{\r\n\t\t\tfilterName\t= 'suj';\r\n\t\t\tfilterId\t= this.workspaceData.selectedSujet.id;\r\n\t\t}\r\n\t\telse if (this.workspaceData.selectedMatiere)\r\n\t\t{\r\n\t\t\tfilterName\t= 'matiere';\r\n\t\t\tfilterId\t= this.workspaceData.selectedMatiere.id;\r\n\t\t}\r\n\t\telse if (this.workspaceData.selectedExamen)\r\n\t\t{\r\n\t\t\tfilterName\t= 'exam';\r\n\t\t\tfilterId\t= this.workspaceData.selectedExamen.id;\r\n\t\t}\r\n\t\telse if (this.workspaceData.selectedSession)\r\n\t\t{\r\n\t\t\tfilterName\t= 'sess';\r\n\t\t\tfilterId\t= this.workspaceData.selectedSession.id;\r\n\t\t}\r\n\t\telse if (this.workspaceData.selectedEtablissement)\r\n\t\t{\r\n\t\t\tfilterName\t= 'etab';\r\n\t\t\tfilterId\t= this.workspaceData.selectedEtablissement.id;\r\n\t\t}\r\n\t\tthis.taskData.filterTasks(filterName, filterId);\r\n\t}\r\n\r\n\r\n\tpublic onDrag(args: any)\r\n\t{\r\n\t\tlet [e, el] = args;\r\n\t}\r\n\r\n\tpublic onDrop(args: any)\r\n\t{\r\n\t\tlet [e, el] = args;\r\n\t}\r\n\r\n\tpublic onOver(args: any)\r\n\t{\r\n\t\tlet [e, el, container] = args;\r\n\t}\r\n\r\n\tpublic onOut(args: any)\r\n\t{\r\n\t\tlet [e, el, container] = args;\r\n\t}\r\n}\r\n","\r\n\t
\r\n\t\t
\r\n\t\t\tAjout d'utilisateur\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
Résultat
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t \r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tpersonnes présentes\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n
\r\n\t
\r\n\t\t\r\n\t
\r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef }\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\n@Component({\r\n\tselector:\t\t'app-user-add-form',\r\n\ttemplateUrl:\t'./user-add-form.component.html',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n\tstyleUrls:\t\t['./user-add-form.component.scss']\r\n})\r\n\r\nexport class UserAddFormComponent implements OnInit\r\n{\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef\r\n\t) \r\n\t{ }\r\n\r\n\tpublic ngOnInit()\r\n\t{\r\n\t}\r\n\r\n}\r\n","
\r\n\t{{outputContent}}\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t{{oUser.infos.nom}} {{oUser.infos.prenom}}\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{userMail}}\r\n\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{oUser.mail}}\r\n\t\t
\r\n\t
\r\n\t
\r\n\r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\nimport { ChatData }\t\t\t\tfrom '../../providers/chat-data';\r\nimport { User }\t\t\t\tfrom '../../classes/user.class';\r\nimport { UserInfoComponent } from '../user-info/user-info.component';\r\nimport { ViewEncapsulation }\t\t\tfrom '@angular/core';\r\nimport { Router }\t\t\t\tfrom '@angular/router';\r\n\r\n\r\n@Component({\r\n\tselector: 'app-user-name',\r\n\tencapsulation: ViewEncapsulation.None,\r\n\ttemplateUrl: './user-name.component.html',\r\n\tstyleUrls: ['./user-name.component.scss']\r\n})\r\n\r\nexport class UserNameComponent implements OnInit\r\n{\r\n\r\n\t@Input() userMail: string;\r\n\t@Input() showBubble: boolean = true;\r\n\tpublic outputContent: string;\r\n\tpublic oUser: any;\r\n\tpublic showMail = false;\r\n\r\n\tconstructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic userData: UserData,\r\n\t\tpublic chatData: ChatData\r\n\t\t\t) { }\r\n\r\n\r\n\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tthis.outputContent = this.userMail;\r\n\r\n\t\tif (this.userMail)\r\n\t\t{\r\n\t\t\tthis.oUser = this.userData.getUser(this.userMail);\r\n\t\t}\r\n\r\n\r\n\t\tif (this.oUser && this.oUser.infos && (this.oUser.infos.nom || this.oUser.infos.prenom))\r\n\t\t{\r\n\t\t\tthis.outputContent = '';\r\n\r\n\t\t\tif (this.oUser.infos.prenom) this.outputContent += this.oUser.infos.prenom + ' ';\r\n\t\t\tif (this.oUser.infos.nom) this.outputContent += this.oUser.infos.nom;\r\n\t\t}\r\n\t\telse if(this.oUser && this.oUser.infos )\r\n\t\t{\r\n\t\t\tthis.showMail = true;\r\n\t\t}\r\n\r\n\r\n\t\telse if (this.userMail === this.userData.getUserId())\r\n\t\t{\r\n\t\t\tthis.outputContent = this.userData.getUsername();\r\n\t\t}\r\n\r\n\t}\r\n\t\r\n\tpublic onClick(event: any)\r\n\t{\r\n\t\tthis.chatData.setSelectedRoomByMail(this.userMail);\r\n\t\tthis.router.navigate(['/community']);\r\n\r\n\t}\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ name }}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{{ status }}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t{{ name }}\r\n\t\t
\r\n\t\t
\r\n\t\t\t{{status}}\r\n\t\t
\r\n\t
\r\n\t
\r\n
\r\n","import { Component, Input, OnInit, OnChanges }\t\tfrom '@angular/core';\r\nimport { ViewEncapsulation }\tfrom '@angular/core';\r\nimport { UserData }\t\t\t\t\tfrom '../../providers/user-data';\r\n\r\n\r\n@Component({\r\n\tselector: 'app-user',\r\n\tencapsulation: ViewEncapsulation.None,\r\n\ttemplateUrl: './user.component.html',\r\n\tstyleUrls: ['./user.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class UserComponent implements OnInit, OnChanges\r\n{\r\n\t@Input() public _id: number;\r\n @Input() public _name: string = 'Non assigné';\r\n @Input() public _lastName: string;\r\n @Input() public _etablissement:\t string;\r\n @Input() public _session: string;\r\n @Input() public _examen: string;\r\n @Input() public _status: string;\r\n @Input() public _icone: string;\r\n @Input() public _state: string;\r\n @Input() public _color: string = '';\r\n @Input() public displayType: string;\r\n\r\n\tpublic firstLetterIcone:\tstring;\r\n private linkToRoute:\t\tstring = '/community';\r\n\r\n constructor(public userData:UserData)\r\n\t{\r\n\r\n }\r\n\r\n\r\n\tpublic ngOnChanges()\r\n\t{\r\n\t\tif (this.name)\r\n\t\t{\r\n\t\t\tthis.firstLetterIcone = this.name.charAt(0);\r\n\t\t\tif (this.lastName)\r\n\t\t\t{\r\n\t\t\t\tthis.firstLetterIcone += this.lastName.charAt(0);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.firstLetterIcone += this.name.charAt(1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\tpublic ngOnInit()\r\n\t{\r\n\t\tif (this.name)\r\n\t\t{\r\n\t\t\tthis.firstLetterIcone = this.name.charAt(0);\r\n\t\t\tif (this.lastName)\r\n\t\t\t{\r\n\t\t\t\tthis.firstLetterIcone += this.lastName.charAt(0);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.firstLetterIcone += this.name.charAt(1);\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.firstLetterIcone = this.status.charAt(0);\r\n\t\t\tthis.firstLetterIcone += this.status.charAt(1);\r\n\t\t}\r\n\t\t\r\n\r\n\t\tif (this.color === '' || this.color === undefined)\r\n\t\t{\r\n\t\t\tthis.color = '#ffffff';\r\n\t\t}\r\n }\r\n\r\n\r\n\tpublic setIcon()\r\n\t{\r\n\t\tif (this.name)\r\n\t\t{\r\n\t\t\tthis.firstLetterIcone = this.name.charAt(0);\r\n\t\t\tthis.firstLetterIcone += this.name.charAt(1);\r\n\t\t}\r\n\t}\r\n\r\n\r\n get id(): number { return this._id; }\r\n get name(): string { return this._name; }\r\n get lastName(): string { return this._lastName; }\r\n get etablissement(): string { return this._etablissement; }\r\n get session(): string { return this._session; }\r\n get examen(): string { return this._examen; }\r\n get status(): string { return this._status; }\r\n get icone(): string { return this._icone; }\r\n get color(): string { return this._color; }\r\n get state(): string { return this._state; }\r\n\r\n set id(id) { this._id = id; }\r\n set name(name) { this._name = name; }\r\n set lastName(lastName) { this._lastName = lastName; }\r\n set etablissement(etablissement) { this._etablissement = etablissement; }\r\n set session(session) { this._session = session; }\r\n set examen(examen) { this._examen = examen; }\r\n set icone(icone) \t{ this._icone = icone; }\r\n set status(status) { this._status = status; }\r\n set color(color)\t\t\t\t\t{ this._color\t\t\t= color; }\r\n set state(state) \t{ this._state = state; }\r\n\r\n\r\n\t@Input()\r\n\tset link(link: string) \r\n\t{\r\n\r\n\t\tif (link === undefined || link === 'none')\r\n\t\t{\r\n\t\t\tthis.linkToRoute = undefined;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.linkToRoute = link;\r\n\t\t}\r\n\t}\r\n}\r\n","
\r\n
\r\n
\r\n\t\t\t
\r\n\t\t\t\t{{textHeader}}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
close
\r\n\t\t\t
\r\n\t\t
\r\n\r\n
\r\n\r\n\t\t\t
\r\n\r\n\t\t\t\t
{{ 'validateTask.optionTitle' | translate }}
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{{ 'validateTask.optionAction1' | translate }} ({{nameNextStep}})\r\n\t\t\t\t\t{{ 'validateTask.optionAction2' | translate }}\r\n\t\t\t\t\t{{ 'validateTask.optionAction3' | translate }} ({{namePreviousStep}})\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ 'validateTask.optionAction4' | translate }}\r\n\t\t\t\t\t\t{{ 'validateTask.optionAction5' | translate }}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{{ 'validateTask.sendMail' | translate }}\r\n\t\t\t
\r\n
\r\n\r\n
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n
\r\n
\r\n","import { Component, ViewEncapsulation, Inject }\t\t\t\tfrom '@angular/core';\r\nimport { FormControl, FormBuilder, FormGroup, Validators }\tfrom '@angular/forms';\r\nimport { MatDialogRef }\t\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { MAT_DIALOG_DATA }\t\t\t\t\t\t\t\t\tfrom '@angular/material';\r\nimport { TranslateService } \t\t\t\t\t\t from '@ngx-translate/core';\r\n\r\nimport { Comment }\t\t\tfrom '../../../../../../classes/comment.class';\r\nimport { Task }\t\t\t\tfrom '../../../../../../classes/task.class';\r\nimport { Matiere }\t\t\t\tfrom '../../../../../../classes/matiere.class';\r\nimport { UserData }\t\t\tfrom '../../../../../../providers/user-data';\r\nimport { WorkspaceData }\tfrom '../../../../../../providers/workspace-data';\r\nimport { TaskService }\t\tfrom '../../../../../../services/task.service';\r\nimport { MessagesService }\tfrom '../../../../../../services/messages.service';\r\n\r\n@Component({\r\n selector:\t\t'validate-task-modal',\r\n\tencapsulation:\tViewEncapsulation.None,\r\n templateUrl:\t'validateTaskModal.component.html',\r\n styleUrls:\t\t['./validateTaskModal.component.scss']\r\n})\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class ValidateTaskModalComponent\r\n{\r\n public currentComment:\tComment;\r\n public moFormGroup:\t\tFormGroup;\r\n public currentTask:\t\tTask;\r\n\r\n public nextAction: string = '1';\r\n\r\n public numberCurrentStep: any;\r\n public nameCurrentStep: any;\r\n public nameNextStep: any;\r\n public namePreviousStep: any;\r\n\r\n public textHeader:\t\t\t\tstring;\r\n public textValidationButton:\tstring;\r\n\r\n public sendEmail: boolean = false;\r\n\r\n public currentState: string;\r\n\tpublic cancelComment: any;\r\n\r\n moFormCtrlMessage:\t\tFormControl;\r\n moFormCtrlSendEmail:\tFormControl;\r\n\r\n\r\n /**\r\n *\r\n * @param dialogRef\r\n * @param fb\r\n * @param userData\r\n * @param workspaceData\r\n * @param taskService\r\n * @param messagesService\r\n * @param translate\r\n * @param data\r\n */\r\n constructor(public dialogRef:\t\t\tMatDialogRef,\r\n public fb:\t\t\t\t\tFormBuilder,\r\n public userData:\t\t\tUserData,\r\n public workspaceData:\t\tWorkspaceData,\r\n public taskService:\t\t\tTaskService,\r\n public messagesService:\t\tMessagesService,\r\n public translate: TranslateService,\r\n\t\t\t\t@Inject(MAT_DIALOG_DATA)\tpublic data: any)\r\n {\r\n this.currentComment = new Comment();\r\n\r\n if (this.data && this.data.task)\r\n\t\t{\r\n this.currentTask = this.data.task;\r\n\r\n if (this.data.state)\r\n {\r\n this.currentState = this.data.state;\r\n }\r\n else\r\n {\r\n this.currentState = this.currentTask.state;\r\n }\r\n\r\n\r\n this.moFormCtrlMessage\t\t= this.fb.control(this.currentComment.message, Validators.required);\r\n this.moFormCtrlSendEmail\t= this.fb.control(this.sendEmail);\r\n\r\n this.moFormGroup =\tthis.fb.group({\r\n message:\t\tthis.moFormCtrlMessage,\r\n sendEmail:\t\tthis.moFormCtrlSendEmail\r\n });\r\n\r\n\t\t\tif (this.currentState === 'review')\r\n\t\t\t{\r\n\t\t\t\tthis.sendEmail = true;\r\n\t\t\t\tthis.translate.get('validateTask.validationButton1').subscribe((value: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.textValidationButton = value;\r\n\t\t\t\t});\r\n\r\n this.nameCurrentStep = '';\r\n\r\n\t\t\t\tlet oEpreuve = this.workspaceData.getEpreuve(this.currentTask.idEpreuve);\r\n\r\n if (this.currentTask.type && oEpreuve.scenario.steps)\r\n {\r\n this.numberCurrentStep = Number(this.currentTask.type);\r\n\r\n if (oEpreuve.scenario.steps[this.numberCurrentStep])\r\n {\r\n this.nameCurrentStep = oEpreuve.scenario.steps[this.numberCurrentStep].name;\r\n }\r\n\r\n //On récupère le nom de la prochaine étape (si l'étape courante n'est pas déja la dernière)\r\n if (this.numberCurrentStep < oEpreuve.scenario.steps.length - 1 && oEpreuve.scenario.steps[this.numberCurrentStep + 1])\r\n {\r\n this.nameNextStep = oEpreuve.scenario.steps[this.numberCurrentStep + 1].name;\r\n }\r\n\r\n //On récupère le nom de l'étape précédente (si l'étape courante n'est pas déja la première)\r\n if (this.numberCurrentStep > 0 && oEpreuve.scenario.steps[this.numberCurrentStep - 1])\r\n {\r\n this.namePreviousStep = oEpreuve.scenario.steps[this.numberCurrentStep - 1].name;\r\n }\r\n }\r\n this.translate.get('validateTask.headerText1').subscribe((value: string) =>\r\n {\r\n this.textHeader = value + this.nameCurrentStep;\r\n });\r\n }\r\n else\r\n {\r\n this.translate.get('validateTask.validationButton2').subscribe((value1: string) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.translate.get('validateTask.headerText2').subscribe((value2: string) =>\r\n\t\t\t\t\t{\r\n this.textValidationButton\t= value1;\r\n this.textHeader\t\t\t\t= value2;\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * On ajoute le commentaire à la tache concernée\r\n * et on la passe au status \"à valider\"\r\n */\r\n public validate()\r\n {\r\n /**\r\n * Si le commentaire est saisie on l'enregistre en base de données pour la tache concernée\r\n */\r\n if (this.currentComment && this.currentComment.message && this.currentComment.message !== '')\r\n {\r\n\t\t\tconst baseChannelSubject = '*soft::' + this.userData.account + '::creation::suj::';\r\n\t\t\tconst datasComment: any =\r\n\t\t\t{\r\n\t\t\t\taction:\t\t'create',\r\n\t\t\t\tcomment:\tthis.currentComment.message,\r\n\t\t\t\tuser:\t\tthis.userData.mail\r\n\t\t\t};\r\n\r\n\r\n\t\t\t// ce if a été mis là pour éviter une erreur, mais je pense que c'est un pb\r\n\t\t\tif (this.workspaceData.selectedSujet)\r\n\t\t\t{\r\n\t\t\t\tconst notifiers: any[] = [baseChannelSubject + this.workspaceData.selectedSujet.id];\r\n\t\t\t\tthis.messagesService.sendMessage('tasks', this.currentTask.id, 'C', datasComment, notifiers);\r\n\t\t\t\tthis.messagesService.sendMessage('subjects', this.workspaceData.selectedSujet.id, 'C', datasComment, notifiers);\r\n\t\t\t}\r\n\t\t\telse if (this.currentTask.idSujet)\r\n\t\t\t{\r\n\t\t\t\tconst notifiers: any[] = [baseChannelSubject + this.currentTask.idSujet];\r\n\t\t\t\tthis.messagesService.sendMessage('tasks', this.currentTask.id, 'C', datasComment, notifiers);\r\n\t\t\t\tthis.messagesService.sendMessage('subjects', this.currentTask.idSujet, 'C', datasComment, notifiers);\r\n\t\t\t}\r\n }\r\n\r\n const newDatas: any = {};\r\n\t\tlet newTask;\r\n\r\n\t\tconst currentSujet = this.workspaceData.getSujet(this.currentTask.idSujet);\r\n\r\n const datasEmail: any =\r\n {\r\n\t\t\tnomSujet: currentSujet ? currentSujet.name : '',\r\n\t\t\tnomEtape: this.currentTask.typeLib\r\n\t\t};\r\n\r\n if (this.currentState === 'review')\r\n {\r\n\t\t\tif ((this.nextAction === '1' || this.nextAction === '3' || this.nextAction === '4') && this.sendEmail === true)\r\n \t{\r\n\t\t\t\tthis.currentTask.notifyByMail = true;\r\n\t\t\t\tnewDatas.typeMail = 'validatedTask';\r\n\t\t\t\tnewDatas.datasEmail = datasEmail;\r\n\t\t\t}\r\n\r\n switch(this.nextAction)\r\n {\r\n case '1':\r\n // On met la tache courante en 'done' et on créé une nouvelle tache avec\r\n // l'étape suivante\r\n newDatas.state = 'done';\r\n this.taskService.updateTask(this.currentTask, newDatas);\r\n newTask = this._initialiseNewTask('next');\r\n break;\r\n\r\n\r\n case '2':\r\n // On met la tache courante en 'inprogress'\r\n newDatas.state = 'inprogress';\r\n this.taskService.updateTask(this.currentTask, newDatas);\r\n break;\r\n\r\n\r\n case '3':\r\n //On met la tache courante en 'done' et on créé une nouvelle tache avec\r\n //l'étape précédente\r\n newDatas.state = 'done';\r\n this.taskService.updateTask(this.currentTask, newDatas);\r\n newTask = this._initialiseNewTask('previous');\r\n break;\r\n\r\n\r\n case '4':\r\n //On met uniquement la tache courante en 'done'\r\n newDatas.state = 'done';\r\n this.taskService.updateTask(this.currentTask, newDatas);\r\n break;\r\n\r\n\r\n default:\r\n break;\r\n\t\t\t}\r\n }\r\n else\r\n {\r\n\t\t\tif (this.sendEmail === true)\r\n \t{\r\n\t\t\t\tthis.currentTask.notifyByMail = true;\r\n\t\t\t\tnewDatas.typeMail = 'terminatedTask';\r\n\t\t\t\tnewDatas.datasEmail = datasEmail;\r\n\t\t\t}\r\n\r\n\t\t\tnewDatas.state = 'review';\r\n\r\n this.taskService.updateTask(this.currentTask, newDatas);\r\n }\r\n this.dialogRef.close(newTask);\r\n }\r\n\r\n\r\n /**\r\n *\r\n */\r\n public cancel()\r\n {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param event\r\n */\r\n public onChangeAction(event: any)\r\n {\r\n this.nextAction = event.toString();\r\n\r\n if (this.nextAction === '1' || this.nextAction === '3')\r\n\t\t{\r\n\t\t\tthis.translate.get('validateTask.validationButton1').subscribe((value3: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.textValidationButton = value3;\r\n\r\n\t\t\t});\r\n }\r\n else\r\n {\r\n\t\t\tthis.translate.get('validateTask.validationButton3').subscribe((value3: string) =>\r\n\t\t\t{\r\n\t\t\t\tthis.textValidationButton = value3;\r\n\t\t\t});\r\n\t\t}\r\n }\r\n\r\n\r\n /**\r\n *\r\n */\r\n public canSendMail()\r\n {\r\n let result = false;\r\n\r\n if (this.currentState === 'review')\r\n {\r\n result = true;\r\n }\r\n else\r\n {\r\n if (this.userData.mail !== this.currentTask.assigneduser)\r\n {\r\n result = true;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param nature\r\n */\r\n private _initialiseNewTask(nature: string)\r\n {\r\n let newTask:\t\tTask;\r\n let libelleNewStep: string = '';\r\n\r\n\t\tlet oEpreuve = this.workspaceData.getEpreuve(this.currentTask.idEpreuve);\r\n\r\n if (oEpreuve.scenario.steps)\r\n {\r\n if (nature === 'next' && oEpreuve.scenario.steps[this.numberCurrentStep + 1])\r\n {\r\n newTask = new Task();\r\n\r\n let newStep\t\t= this.numberCurrentStep + 1;\r\n let strNewStep\t= newStep.toString();\r\n newTask.type\t= strNewStep;\r\n libelleNewStep\t= oEpreuve.scenario.steps[this.numberCurrentStep + 1].name;\r\n }\r\n else\r\n {\r\n if (nature === 'previous' && oEpreuve.scenario.steps[this.numberCurrentStep - 1])\r\n {\r\n newTask = new Task();\r\n\r\n let newStep\t\t= this.numberCurrentStep - 1;\r\n let strNewStep\t= newStep.toString();\r\n newTask.type\t= strNewStep;\r\n libelleNewStep\t= oEpreuve.scenario.steps[this.numberCurrentStep - 1].name;\r\n }\r\n }\r\n\r\n if (newTask)\r\n {\r\n newTask.idEpreuve\t\t= this.currentTask.idEpreuve;\r\n newTask.canCreateFile\t= true;\r\n\r\n this.translate.get('validateTask.taskName1').subscribe((value1: string) => {\r\n this.translate.get('validateTask.taskName2').subscribe((value2: string) => {\r\n\r\n let newTaskName = '';\r\n newTaskName\t\t+= value1;\r\n newTaskName\t\t+= libelleNewStep;\r\n\r\n\t\t\t\t\t\tconst currentSujet = this.workspaceData.getSujet(this.currentTask.idSujet);\r\n\r\n if (this.workspaceData.selectedSujet)\r\n {\r\n newTaskName += value2;\r\n newTaskName += currentSujet ? currentSujet.name : '';\r\n }\r\n\r\n newTask.name\t= newTaskName;\r\n });\r\n });\r\n newTask.idSujet = this.currentTask.idSujet;\r\n }\r\n }\r\n return newTask;\r\n }\r\n}\r\n\r\n\r\n","\r\nimport { Pipe, PipeTransform }\tfrom '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'otherUsersFilter'\r\n})\r\nexport class OtherUsersFilter implements PipeTransform\r\n{\r\n\r\n\tpublic transform(users: any[], mailCurrentUser: string): any[]\r\n\t{\r\n\t\tif (users)\r\n\t\t{\r\n return users.filter((user) => user.mail !== mailCurrentUser);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn users;\r\n\t\t}\r\n\t}\r\n}","import { Injectable, EventEmitter, OnDestroy } from '@angular/core';\r\nimport * as _ from 'underscore';\r\n\r\n\r\n@Injectable()\r\nexport class AdminData implements OnDestroy\r\n{\r\n\r\n\tprivate _generalParameters: \tany = {};\r\n\tprivate _mailsTemplates: \t\tany[] = [];\r\n\tprivate _scenariosAvailable: \tany[] = [];\r\n\tprivate _scenarioSelected: \t\tany;\r\n\r\n\tpublic adminEmitter: EventEmitter = new EventEmitter();\r\n\r\n\r\n /**\r\n\t *\r\n\t */\r\n\tconstructor()\r\n\t{\r\n\r\n\t}\r\n\r\n\tngOnDestroy()\r\n\t{\r\n\t\tthis.adminEmitter.unsubscribe();\r\n\r\n\t}\r\n\r\n\tget generalParameters():\tany\t\t{ return this._generalParameters; }\r\n\tget scenariosAvailable():\tany[]\t{ return this._scenariosAvailable; }\r\n\tget mailsTemplates():\t\tany[]\t{ return this._mailsTemplates; }\r\n\r\n\tget scenarioSelected(): any\r\n\t{\r\n\r\n\t\tlet indice = 0;\r\n\t\tif (this._scenarioSelected)\r\n\t\t{\r\n\t\t\tfor (let steps of this._scenarioSelected.steps)\r\n\t\t\t{\r\n\r\n\t\t\t\tsteps.id = indice;\r\n\t\t\t\tindice++;\r\n\t\t\t}\r\n\t\t\treturn this._scenarioSelected;\r\n\t\t}\r\n\t}\r\n\r\n\tset generalParameters(generalParameters: any)\t\t{ this._generalParameters\t= generalParameters; }\r\n\tset scenariosAvailable(scenariosAvailable: any[])\t{ this._scenariosAvailable\t= scenariosAvailable; }\r\n\tset mailsTemplates(mailsTemplates: any[])\t\t\t{ this._mailsTemplates \t\t= mailsTemplates; }\r\n\r\n\tset scenarioSelected(scenarioSelected: any)\r\n\t{\r\n\r\n\t\tlet indice = 0;\r\n\r\n\t\tfor (const steps of scenarioSelected.steps)\r\n\t\t{\r\n\r\n\t\t\tsteps.id = indice;\r\n\t\t\tindice++;\r\n\t\t}\r\n\t\tthis._scenarioSelected = scenarioSelected;\r\n\t}\r\n\r\n\r\n\tpublic isNumericEnabled()\r\n\t{\r\n\t\tlet result = false;\r\n\r\n\t\tif (this._generalParameters && this._generalParameters['numericEnabled'])\r\n\t\t{\r\n\t\t\tresult = Number(this._generalParameters['numericEnabled']) === 1;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\tpublic isSpecialTimeEnabled()\r\n\t{\r\n\t\tlet result = false;\r\n\r\n\t\tif (this._generalParameters && this._generalParameters['specialTimeEnabled'])\r\n\t\t{\r\n\t\t\tresult = Number(this._generalParameters['specialTimeEnabled']) === 1;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\tpublic isSpecialTimeArray()\r\n\t{\r\n\t\tlet result = false;\r\n\r\n\t\tif (this._generalParameters && this._generalParameters['specialTimeArray'])\r\n\t\t{\r\n\t\t\tresult = this._generalParameters['specialTimeAarray'];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Injectable, EventEmitter, OnDestroy } from '@angular/core';\r\n\r\nimport { WorkspaceData } from './workspace-data';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class BaremeData implements OnDestroy\r\n{\r\n\r\n\r\n public masTypeList:\t\t\t\tany[]\t= ['Strict', 'Par réponse', 'Concordance', 'Relatif'];\r\n\r\n\tprivate _majBaremeList: any\t\t= [];\r\n\tprivate _mnLastNumber: number\t= 0;\r\n\r\n\r\n\r\n\tconstructor(public workspaceDate: WorkspaceData)\r\n\t{\r\n\r\n\t}\r\n\r\n\tngOnDestroy()\r\n\t{\r\n }\r\n\r\n\r\n\tget majBaremeList()\r\n\t{\r\n\r\n\t\tlet aReturn = [];\r\n\r\n\t\tfor (let sIndex in this._majBaremeList)\r\n\t\t{\r\n\t\t\taReturn.push(this._majBaremeList[sIndex]);\r\n\t\t}\r\n\r\n\t\treturn aReturn;\r\n\t}\r\n\r\n\r\n\tgetBaremeByPassation(psPassation:string)\r\n\t{\r\n\t\tconst aReturn = [];\r\n\r\n\t\tfor (const sIndex in this._majBaremeList)\r\n\t\t{\r\n\t\t\tif (this._majBaremeList[sIndex].datas.idPassation && this._majBaremeList[sIndex].datas.idPassation === psPassation)\r\n\t\t\t{\r\n\t\t\t\taReturn.push(this._majBaremeList[sIndex]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn aReturn;\r\n\t}\r\n\r\n\r\n\tset majBaremeList(pajBaremeList)\r\n\t{\r\n\t\tthis._majBaremeList = pajBaremeList;\r\n\t}\r\n\r\n\tsetBaremeById(psId: any, pjData: any)\r\n\t{\r\n\t\tthis._majBaremeList[psId] = pjData;\r\n\t}\r\n\r\n\r\n\tgetBaremeById(psId: any)\r\n\t{\r\n\t\treturn this._majBaremeList[psId];\r\n\t}\r\n\tgetBaremeNameById(psId: any)\r\n\t{\r\n\t\tlet sReturn = '';\r\n\t\tif (psId)\r\n\t\t{\r\n\t\t\tsReturn = this._majBaremeList[psId].datas.name + '-' + this._majBaremeList[psId].datas.number;\r\n\t\t}\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n\r\n\tupdateBaremeDatasById(psId: any, paoDatasToUpdate: any)\r\n\t{\r\n\t\tif (this._majBaremeList[psId])\r\n\t\t{\r\n\t\t\tfor (const sKey in paoDatasToUpdate)\r\n\t\t\t{\r\n\t\t\t\tif (paoDatasToUpdate[sKey])\r\n\t\t\t\t{\r\n\t\t\t\t\tthis._majBaremeList[psId][sKey] = paoDatasToUpdate[sKey];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\taddBareme(pjBareme: any)\r\n\t{\r\n\r\n\t\tlet baremeData\t\t\t= JSON.parse(pjBareme.datas.data);\r\n\t\tpjBareme.datas.data\t\t= baremeData;\r\n\r\n\t\tif (pjBareme.datas.number && pjBareme.datas.number > this._mnLastNumber)\r\n\t\t{\r\n\t\t\tthis._mnLastNumber = +pjBareme.datas.number;\r\n\t\t}\r\n\r\n\t\tthis._majBaremeList[pjBareme.id] = pjBareme;\r\n\t}\r\n\r\n\r\n\taddBaremes(pajBareme: any)\r\n\t{\r\n\t\tfor (let jBareme of pajBareme)\r\n\t\t{\r\n\t\t\tthis.addBareme(jBareme);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic getLastId():number\r\n\t{\r\n\t\tthis._mnLastNumber++;\r\n\r\n\t\treturn this._mnLastNumber;\r\n\t}\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { GenericData }\t\t\t\tfrom './generic-data';\r\nimport { UserData }\t\t\t\t\tfrom './user-data';\r\nimport { Piece }\t\t\t\t\tfrom '../classes/piece.class';\r\nimport { User}\t\t\t\t\t\tfrom '../classes/user.class';\r\nimport { Message }\t\t\t\t\tfrom '../classes/message.class';\r\nimport { SocketService }\t\t\tfrom '../services/socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * Class UserData\r\n */\r\nexport class ChatData extends GenericData\r\n{\r\n\tprivate _idNewRoom:\t\t\tstring\t= '';\r\n\tprivate _rooms:\t\t\t\tPiece[]\t= [];\r\n\tprivate _selectedRoom:\t\tPiece\t= null;\r\n\tprivate _users:\t\t\t\tUser[]\t= [];\r\n\tprivate _userByRoom:\t\tany[][]\t= [];\r\n\tprivate _messagesByRoom:\tany[]\t= [];\r\n\tprivate _haveChatData:\t\tboolean\t= false;\r\n public socket:\t\t\t\tany;\r\n\r\n\tprivate _isRoomOk:\t\tboolean\t= false;\r\n\tprivate _isRoomInfoOk:\tboolean\t= false;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(\t\tpublic\tuserData:\t\tUserData , \t\tpublic socketService:\t\t\tSocketService)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\r\n\t// ---------------------------------------\r\n\t// Getters\r\n\t// ---------------------------------------\r\n\tget idNewRoom():\t\t\t\tstring\t{ return this._idNewRoom; }\r\n\tget users():\t\t\t\t\tUser[]\t{ return this._users; }\r\n\tget selectedRoom():\t\t\t\tPiece\t{ return this._selectedRoom; }\r\n\tget userByRoom():\t\t\t\tany[]\t{ return this._userByRoom; }\r\n\tget messagesByRoom():\t\t\tany[]\t{ return this._messagesByRoom; }\r\n\tget haveChatData():\t\t\t\tboolean\t{ return this._haveChatData; }\r\n\tget isRoomOk():\t\t\t\t\tboolean\t{ return this._isRoomOk; }\r\n\tget isRoomInfoOk():\t\t\t\tboolean\t{ return this._isRoomInfoOk; }\r\n\r\n\r\n\t/**\r\n\t * Petit truc spécial, on enregistre avec l'id en clef pour manipuler plus facilement\r\n\t * mais on push à la bourrin le retour pour faciliter l'utilisation dans les templates\r\n\t */\r\n\tget rooms(): Piece[]\r\n\t{\r\n\r\n\t\tlet buffRoom: Piece[]\t= [];\r\n\t\tlet numberOfRoom\t\t= 0;\r\n\r\n\r\n\t\tfor (let idRoom in this._rooms)\r\n\t\t{\r\n\t\t\tbuffRoom.push(this._rooms[idRoom]);\r\n\t\t\tnumberOfRoom++;\r\n\t\t}\r\n\r\n\r\n\t\t// Si y'a des rooms on l'indique;\r\n\t\tif (numberOfRoom > 0)\r\n\t\t{\r\n\t\t\tthis.haveChatData = true;\r\n\t\t}\r\n\r\n\t\treturn buffRoom;\r\n\t}\r\n\r\n\r\n\tpublic getMessagesByRoomId(idRoom: any): any[]\r\n\t{\r\n\t\tif (this._rooms[idRoom] && this._rooms[idRoom].messages)\r\n\t\t{\r\n\t\t\treturn this._rooms[idRoom].messages;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic getUser(idUser: any) { return this._users[idUser]; }\r\n\r\n\r\n\r\n\tpublic getUserIcon(idUser: any)\r\n\t{\r\n\t\tlet user = this._users[idUser];\r\n\t\tlet sName: string = '';\r\n\r\n\t\tif (user)\r\n\t\t{\r\n\t\t\tsName = user.nom.charAt(0);\r\n\t\t\tsName += user.prenom.charAt(0);\r\n\t\t}\r\n\t\treturn sName;\r\n\r\n\t}\r\n\r\n\r\n\tpublic setUserState(value: any, key: any)\r\n\t{\r\n\t\tif (this._users[key])\r\n\t\t{\r\n\t\t\tif (value === 'online')\r\n\t\t\t{\r\n\t\t\t\tthis._users[key].status = true;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis._users[key].status = false;\r\n\t\t\t}\r\n\t\t\tthis._users[key].lastDateCo = Date.now().toString();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic getUserState(userList: any)\r\n\t{\r\n\t\tlet me\t\t= this.userData.getUserId();\r\n\t\tlet sReturn = false;\r\n\t\tlet oReturn = null;\r\n\r\n\t\tif (userList && userList.length > 0)\r\n\t\tfor (let item of userList)\r\n\t\t\t{\r\n\t\t\t\tif (item.mail !== me)\r\n\t\t\t\t{\r\n\t\t\t\t\toReturn = this.getUser(item.mail);\r\n\t\t\t\t\tif (oReturn)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsReturn = oReturn.status;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n\r\n\tpublic getUserColor(userList: any)\r\n\t{\r\n\r\n\t\tlet me\t\t= this.userData.getUserId();\r\n\t\tlet sReturn = '#ffffff';\r\n\t\tlet oReturn = null;\r\n\r\n\t\tif (userList && userList.length > 0)\r\n\t\t{\r\n\t\t\tfor (let item of userList)\r\n\t\t\t{\r\n\t\t\t\tif (item.mail !== me)\r\n\t\t\t\t{\r\n\t\t\t\t\toReturn = this.getUser(item.mail);\r\n\t\t\t\t\tif (oReturn)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsReturn = oReturn.color;\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n\r\n\tpublic getLastname(userList: any)\r\n\t{\r\n\t\tlet me\t\t= this.userData.getUserId();\r\n\t\tlet sReturn = '';\r\n\t\tlet oReturn = null;\r\n\r\n\t\tif (userList && userList.length > 0)\r\n\t\t{\r\n\t\t\tfor (let item of userList)\r\n\t\t\t{\r\n\t\t\t\tif (item.mail !== me)\r\n\t\t\t\t{\r\n\t\t\t\t\toReturn = this.getUser(item.mail);\r\n\t\t\t\t\tif (oReturn)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsReturn = oReturn.prenom;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n\r\n\t// ------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n\t// Setters\r\n\t// ------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n\tset idNewRoom(idNewRoom)\t\t{ this._idNewRoom\t\t= idNewRoom; }\r\n\tset rooms(rooms)\t\t\t\t{ this._rooms\t\t\t= rooms; }\r\n\tset selectedRoom(selectedRoom)\t{ this._selectedRoom\t= selectedRoom; }\r\n\tset users(users)\t\t\t\t{ this._users\t\t\t= users; }\r\n\tset userByRoom(userByRoom)\t\t{ this._userByRoom\t\t= userByRoom; }\r\n\tset messagesByRoom(userByRoom)\t{ this._messagesByRoom\t= userByRoom; }\r\n\tset haveChatData(haveChatData)\t{ this._haveChatData\t= haveChatData; }\r\n\r\n\t/**\r\n\t * Quand on a les data, si les 2 sont ok on precess, a la fin du process haveDatachat = true;\r\n\t */\r\n\tset isRoomOk(isRoomOk)\r\n\t{\r\n\t\tthis._isRoomOk = isRoomOk;\r\n\t\tif (this._isRoomOk && this._isRoomInfoOk)\r\n\t\t{\r\n\t\t\tthis.processChat();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Quand on a les data, si les 2 sont ok on precess, a la fin du process haveDatachat = true;\r\n\t */\r\n\tset isRoomInfoOk(isRoomInfoOk)\r\n\t{\r\n\t\tthis._isRoomInfoOk = isRoomInfoOk;\r\n\t\tif (this._isRoomOk && this._isRoomInfoOk)\r\n\t\t{\r\n\t\t\tthis.processChat();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// ---------------------------------------\r\n\t// Spécial\r\n\t// ---------------------------------------\r\n\t/**\r\n\t * Affecte une room via l'id\r\n\t */\r\n\tpublic setRoom(idRoom: number, room: Piece) { this._rooms[idRoom] = room; }\r\n\r\n\tpublic deleteRoom(idRoom: number)\r\n\t{\r\n\t\tif (this._rooms[idRoom])\r\n\t\t{\r\n\t\t\tdelete this._rooms[idRoom];\r\n\r\n\t\t\tif (this._selectedRoom && this._selectedRoom.id === idRoom.toString())\r\n\t\t\t{\r\n\t\t\t\tthis._selectedRoom = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic setUser(idUser: any, user: any)\r\n\t{\r\n\t\tthis._users[idUser] = User.fromJsonObject(user);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Pour une room donnée on va ajouter un utilisateur (apellée a la reception des messages lus par room)\r\n\t */\r\n\tpublic setUserByRoom(idRoom: any, userId: any)\r\n\t{\r\n\t\tif (typeof this._userByRoom[idRoom] === undefined || typeof this._userByRoom[idRoom] === 'undefined')\r\n\t\t{\r\n\t\t\tthis._userByRoom[idRoom] = [];\r\n\t\t\tthis._userByRoom[idRoom].push(userId);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._userByRoom[idRoom].push(userId);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * TODO meme qu'en haut .. voir laquelle est utilisée pr delet l'autre\r\n\t */\r\n\tpublic setUserByRoom2(idRoom: any, userId: any)\r\n\t{\r\n\r\n\t\tif (userId && userId !== this.userData.getUserId())\r\n\t\t{\r\n\t\t\tlet userInfo = this.userData.getUser(userId);\r\n\t\t\tthis._rooms[idRoom].description = userId;\r\n\t\t\tif (userInfo && userInfo.infos && userInfo.infos.nom)\r\n\t\t\t{\r\n\r\n\t\t\t\tthis._rooms[idRoom].displayName = userInfo.infos.nom + ' ' + userInfo.infos.prenom;\r\n\t\t\t\tthis._rooms[idRoom].users.push(userInfo);\r\n\t\t\t}\r\n\t\t\telse if (userInfo)\r\n\t\t\t{\r\n\t\t\t\tthis._rooms[idRoom].users.push(userInfo);\r\n\t\t\t\tthis._rooms[idRoom].displayName = userId;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis._rooms[idRoom].displayName = userId;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Voir si elle est utile\r\n\t */\r\n\tpublic setLastMessageIdByRoom(idRoom: any, idMessage: any)\r\n\t{\r\n\t\t\tthis._rooms[idRoom].lastId = idMessage;\r\n\r\n\t}\r\n\tpublic setLastMessageReadedByMeByRoom(roomId: any, messageTicks: any)\r\n\t{\r\n\t\tthis._rooms[roomId].lastIdReadedByMe = messageTicks;\r\n\t}\r\n\tpublic setLastMessageReadedByHimByRoom(roomId: any, messageTicks: any)\r\n\t{\r\n\t\tthis._rooms[roomId].lastIdReadedByHim = messageTicks;\r\n\t}\r\n\r\n\r\n\tpublic setLastMessageReceivedByMeByRoom(roomId: any, messageTicks: any)\r\n\t{\r\n\t\tthis._rooms[roomId].lastIdReceivedByMe = messageTicks;\r\n\t}\r\n\tpublic setLastMessageReceivedByHimByRoom(roomId: any, messageTicks: any)\r\n\t{\r\n\t\tthis._rooms[roomId].lastIdReceivedByHim = messageTicks;\r\n\t}\r\n\r\n\tpublic setFirstMessageByRoom(roomId: any, messageTicks: any)\r\n\t{\r\n\t\t\tthis._rooms[roomId].firstId = messageTicks;\r\n\t}\r\n\r\n\r\n\tgetTotalCounter()\r\n\t{\r\n\t\tlet totalReturn = 0;\r\n\r\n\t\tlet arrayOfKey = [];\r\n\r\n\t\tfor (let key in this._rooms)\r\n\t\t{\r\n\t\t\tarrayOfKey.push(key);\r\n\t\t}\r\n\t\tlet key2: any;\r\n\t\tfor (key2 of arrayOfKey)\r\n\t\t{\r\n\t\t\ttotalReturn += this._rooms[key2].counter;\r\n\t\t}\r\n\t\treturn totalReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * bon hein, les compteurs quoi !\r\n\t */\r\n\tpublic incrementCounterByRoom(idRoom: any)\r\n\t{\r\n\t\tthis._rooms[idRoom].counter += 1;\r\n\r\n\t}\r\n\tpublic setCounterByRoom(idRoom: any, counter: any)\r\n\t{\r\n\t\t// moins 1 car il y a le message systeme au début ........\r\n\t\tthis._rooms[idRoom].counter = counter;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * est apellé quand on ouvre une room, permet également d'envoyer la notif de la lecture du message\r\n\t */\r\n\tpublic setMessagesByRoom(idRoom: any, messages: any)\r\n\t{\r\n\t\tlet arrayMessage = _.toArray(messages);\r\n\t\tlet indice = 0;\r\n\r\n\r\n\t\tlet arrayId = [];\r\n\r\n\t\tfor(let id in messages)\r\n\t\t{\r\n\t\t\tarrayId.push(id);\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Reconstruction d'un tableau template friendly\r\n\t\t// ---------------------------------------\r\n\t\tfor (let key in messages)\r\n\t\t{\r\n\t\t\tarrayMessage[indice].key\t= new Date(messages[key].dateticks);\r\n\t\t\tarrayMessage[indice].id\t\t= arrayId[indice];\r\n\t\t\tindice++;\r\n\t\t}\r\n\r\n\t\tlet nIndice = 0;\r\n\r\n\t\tfor (let keyDate of arrayMessage)\r\n\t\t{\r\n\t\t\tlet globalDate = keyDate.key;\r\n\r\n\t\t\t// Pour éviter les message systemes\r\n\t\t\tif (keyDate.val && keyDate.sub !== 'SYS')\r\n\t\t\t{\r\n\t\t\t\tlet values = JSON.parse(keyDate.val);\r\n\r\n\t\t\t\tlet eScocketMessage;\r\n\t\t\t\tlet oMessage = new Message();\r\n\r\n\t\t\t\t// eScocketMessage = JSON.parse(values.message);\r\n\t\t\t\toMessage.ticks\t\t= keyDate.id;\r\n\t\t\t\toMessage.content\t= values.args.message;\r\n\t\t\t\toMessage.userId\t\t= values.name;\r\n\t\t\t\toMessage.date\t\t= keyDate.dateticks;\r\n\r\n\t\t\t\tif (this._rooms && this._rooms[idRoom])\r\n\t\t\t\t{\r\n\t\t\t\t\tif (oMessage)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._rooms[idRoom].setMessageById(oMessage, keyDate.id);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (nIndice === 0 && this._rooms[idRoom].lastDate < keyDate.dateticks)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._rooms[idRoom].lastId\t\t= keyDate.id;\r\n\t\t\t\t\t\tthis._rooms[idRoom].lastDate\t= keyDate.dateticks;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this._rooms[idRoom].firstDate > keyDate.dateticks || !this._rooms[idRoom].firstId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._rooms[idRoom].firstId\t\t= keyDate.id;\r\n\t\t\t\t\t\tthis._rooms[idRoom].firstDate\t= keyDate.dateticks;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnIndice++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._rooms[idRoom] && this._rooms[idRoom].lastId && this._rooms[idRoom].lastIdReadedByMe && this._rooms[idRoom].lastId !== this._rooms[idRoom].lastIdReadedByMe)\r\n\t\t{\r\n\t\t\tthis._rooms[idRoom].lastIdReadedByMe = this._rooms[idRoom].lastId;\r\n\r\n\t\t\t// Ici on est dans le cas de message non lu, on envoie donc un readed avec l'id en question\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t'cmd': 'msg.read',\r\n\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tbucket:\t\t'rooms',\r\n\t\t\t\t\t\t\t\tnotifier:\t['*room::' + idRoom + '::priv'],\r\n\t\t\t\t\t\t\t\tkey:\t\tidRoom,\r\n\t\t\t\t\t\t\t\tsub:\t\t'M',\r\n\t\t\t\t\t\t\t\twhen:\t\tthis._rooms[idRoom].lastIdReadedByMe\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('update', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.selectedRoom = null;\r\n\t\tthis.selectedRoom = this._rooms[idRoom];\r\n\r\n\t}\r\n\r\n\r\n\tpublic addRooms(value: any, key: any)\r\n\t{\r\n\t\tthis._rooms[key] = value;\r\n\t}\r\n\r\n\r\n\tpublic setSelectedRoomBy(id: any)\r\n\t{\r\n\t\tthis._selectedRoom = this._rooms[id];\r\n\t}\r\n\r\n\r\n\tpublic getUserByRoom(idRoom: any) { return this._userByRoom[idRoom];}\r\n\r\n\r\n\t/**\r\n\t * Comme d'un coté on récup les rooms et les messages lus (et les compteurs..) une fois qu'on a toute les infos\r\n\t * cette fonction se charge de tt mettre en ordre pr la suite\r\n\t */\r\n\tpublic processChat()\r\n\t{\r\n\t\tfor (let key in this._rooms)\r\n\t\t{\r\n\r\n\t\t\tlet usersRoom = this.getUserByRoom(key);\r\n\r\n\t\t\tfor (let user of usersRoom)\r\n\t\t\t{\r\n\t\t\t\tif (user !== this.userData.getUserId() && user)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet userInfo \t\t\t\t\t= this.userData.getUser(user);\r\n\t\t\t\t\tthis._rooms[key].description\t= user;\r\n\r\n\t\t\t\t\tif (userInfo.infos.nom)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._rooms[key].displayName = userInfo.infos.nom + ' ' + userInfo.infos.prenom;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._rooms[key].displayName = user;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// on et les booleans pr ne pas repasser ds la fonction\r\n\t\tthis._isRoomOk\t\t= false;\r\n\t\tthis._isRoomInfoOk\t= false;\r\n\t\tthis._haveChatData\t= true;\r\n\t}\r\n\r\n\r\n\tsetSelectedRoomByMail(mail: any)\r\n\t{\r\n\t\tlet found = false;\r\n\r\n\r\n\t\tlet arrayId = [];\r\n\r\n\r\n\t\tfor (let key in this._rooms)\r\n\t\t{\r\n\t\t\tarrayId.push(key);\r\n\t\t}\r\n\r\n\t\tlet key2: any;\r\n\t\tfor (key2 of arrayId)\r\n\t\t{\r\n\t\t\tfor (let user of this._rooms[key2].users)\r\n\t\t\t{\r\n\t\t\t\tif (user.mail === mail)\r\n\t\t\t\t{\r\n\t\t\t\t\tfound = true;\r\n\t\t\t\t\tthis.setSelectedRoomBy(key2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\tlet userId = this.userData.getUserId();\r\n\r\n\t\tif (!found && mail !== userId)\r\n\t\t{\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Ici il va falloir créer une room ...\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.userData.userForChatInvite = this.userData.getUser(mail);\r\n\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\r\n\t\t\t// Lib auto permet d'avoir un nom automatique en fonction de la personne avec qui on communique.\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.socket = socket;\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': userId,\r\n\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t'cmd': 'room',\r\n\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'libAuto': \t\ttrue,\r\n\t\t\t\t\t\t\t\t'owner': \t\tuserId,\r\n\t\t\t\t\t\t\t\t'isPublic': \tfalse,\r\n\t\t\t\t\t\t\t\t'isReadOnly': \tfalse\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\tsocket.emit('create', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic canGetChatData()\r\n\t{\r\n\t\treturn this._haveChatData;\r\n\t}\r\n\r\n\r\n}\r\n\r\n","import { Injectable }\t\tfrom '@angular/core';\r\nimport { GenericData }\t\tfrom './generic-data';\r\nimport { WorkspaceData }\tfrom './workspace-data';\r\nimport { TaskData }\t\t\tfrom './task-data';\r\nimport { UserData }\t\t\tfrom './user-data';\r\n\r\nimport { File as EFile }\tfrom '../classes/file.class';\r\nimport * as _\t\t\t\tfrom 'underscore';\r\n\r\n// import { Storage } from '@ionic/storage';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * Class UserData\r\n */\r\nexport class FileData extends GenericData\r\n{\r\n\r\n\t// Selection user\r\n\r\n\t// Les datas\r\n\r\n\tpublic currentSortName\t= '';\r\n\tpublic currentAsc\t\t= '';\r\n\t/**\r\n\t * Stockage des taches récupérées dans l'appli\r\n\t */\r\n\tprivate _filterList:\t\tany\t= [];\r\n\tprivate _taskList:\t\t\tany = [];\r\n\tprivate _haveData:\t\t\tboolean = true;\r\n\tprivate _arrayFiles:\t\tEFile[];\r\n\tprivate _sorterList:\t\tany[];\r\n\tprivate _sorterSelected:\tany;\r\n\tprivate _taskListSelected:\tany;\r\n\tprivate _filterSelected:\tany;\r\n\r\n\tpublic listTypesDocument = [\r\n\t\t{\r\n\t\t\tlabel: 'Sujet',\r\n\t\t\tvalue: 'sujet'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Document Réponse',\r\n\t\t\tvalue: 'docRep'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Document Annexe',\r\n\t\t\tvalue: 'docAnn'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Barème',\r\n\t\t\tvalue: 'bareme'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Correction',\r\n\t\t\tvalue: 'correction'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Document de test',\r\n\t\t\tvalue: 'docTest'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Source',\r\n\t\t\tvalue: 'source'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Mémo de correction',\r\n\t\t\tvalue: 'memo'\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Bon A Tirer (BAT)',\r\n\t\t\tvalue: 'bat'\r\n\t\t}];\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(public workspaceData:\tWorkspaceData,\r\n\t\t\t\tpublic taskData:\t\tTaskData,\r\n\t\t\t\tpublic userData:\t\tUserData)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\r\n\tget arrayFiles()\t\t{ return this._arrayFiles; }\r\n\t\r\n\tget filterList()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key of this._filterList)\r\n\t\t{\r\n\t\t\toReturn.push(key);\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\tget taskList()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let item of this._taskList)\r\n\t\t{\r\n\t\t\toReturn.push(item);\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t }\r\n\r\n\r\n\tget sorterList()\t\t{ return this._sorterList; }\r\n\tget sorterSelected()\t{ return this._sorterSelected; }\r\n\tget filterSelected()\t{ return this._filterSelected; }\r\n\tget taskListSelected()\t{ return this._taskListSelected; }\r\n\tget haveData()\t\t\t{ return this._haveData; }\r\n\r\n\r\n\tset haveData(haveData)\t\t\t\t\t{ this._haveData\t\t\t= haveData; }\r\n\tset arrayFiles(arrayFiles)\t\t\t\t{ this._arrayFiles\t\t\t= arrayFiles; }\r\n\tset taskList(taskList)\t\t\t\t\t{ this._taskList\t\t\t= taskList; }\r\n\tset filterList(filterList)\t\t\t\t{ this._filterList\t\t\t= filterList; }\r\n\tset sorterList(sorterList)\t\t\t\t{ this._sorterList\t\t\t= sorterList; }\r\n\tset sorterSelected(sorterSelected)\t\t{ this._sorterSelected\t\t= sorterSelected; }\r\n\tset filterSelected(filterSelected)\t\t{ this._filterSelected\t\t= filterSelected; }\r\n\tset taskListSelected(taskListSelected)\t{ this._taskListSelected\t= taskListSelected; }\r\n\r\n\r\n\r\n\t/**\r\n\t * TODO tableau de conversion à prévoir pour voir les bons nom.\r\n\t * Renommer filter en sort et filter2 en filter\r\n\t */\r\n\tpublic synchronize()\r\n\t{\r\n\t\t\r\n\t\tlet taskArray = this.taskData.globalTaskDatas;\r\n\r\n\t\tthis.arrayFiles = this.workspaceData.selectedSujet.pj;\r\n\r\n\t\tif (this._arrayFiles.length > 0)\r\n\t\t{\r\n\t\t\tthis.haveData = true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.haveData = false;\r\n\t\t}\r\n\r\n//\t\tthis._filterList['tous'] = 1;\r\n//\t\tthis._filterList['aucun'] = 1;\r\n\r\n\t\tlet filterTemp \t\t= [];\r\n\t\tlet filterId1: any \t= {};\r\n\t\tfilterId1.num\t\t= 1;\r\n\t\tfilterId1.id\t\t= 'tous';\r\n\t\tfilterId1.name\t\t= 'Tous';\r\n\t\tfilterTemp.push(filterId1);\r\n\r\n\t\tlet filterId2: any\t\t= {};\r\n\t\tfilterId2.num\t\t\t= 1;\r\n\t\tfilterId2.id\t\t\t= 'aucun';\r\n\t\tfilterId2.name\t\t\t= 'Sans type';\r\n\t\tfilterTemp.push(filterId2);\r\n\r\n\t\tlet filterId3: any\t\t= {};\r\n\t\tfilterId3.num\t\t\t= 1;\r\n\t\tfilterId3.id\t\t\t= 'corbeille';\r\n\t\tfilterId3.name\t\t\t= 'Corbeille';\r\n\t\tfilterTemp.push(filterId3);\r\n\r\n\t\tlet taskTemp:\tany\t= [];\r\n\t\tlet taskId:\t\tany = {};\r\n\t\t\r\n\t\ttaskId.num\t= 1;\r\n\t\ttaskId.id\t= 'toutes';\r\n\t\ttaskId.name = 'Toutes';\r\n\r\n\t\ttaskTemp.push(taskId);\r\n\r\n\r\n\t\tlet taskId2: any\t= {};\r\n\t\ttaskId2.num\t\t\t= 1;\r\n\t\ttaskId2.id\t\t\t= 'aucune';\r\n\t\ttaskId2.name\t\t= 'Aucune';\r\n\t\ttaskTemp.push(taskId2);\r\n\r\n\r\n\t\t// Récupération des types de documents\r\n\t\tfor (let document of this.arrayFiles)\r\n\t\t{\r\n\t\t\tif (document.typeDocument)\r\n\t\t\t{\r\n\t\t\t\tlet filterId4: any \t= {};\r\n\t\t\t\tfilterId4.num\t\t= 1;\r\n\t\t\t\tfilterId4.id\t\t= document.typeDocument;\r\n\r\n\t\t\t\t// Récupération du vrai nom\r\n\t\t\t\tfor (let typeDoc of this.listTypesDocument)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (typeDoc.value === document.typeDocument)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfilterId4.name = typeDoc.label;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tfilterTemp.push(filterId4);\r\n\t\t\t}\r\n\r\n\t\t\tif (document.taskId)\r\n\t\t\t{\r\n\t\t\t\tlet currentTask = this.taskData.getTaskById(document.taskId);\r\n\t\t\t\tif (currentTask && currentTask.typeLib)\r\n\t\t\t\t{\r\n\t\t\t\t\tdocument.currentStep = currentTask.typeLib;\r\n\t\t\t\t\tlet taskId3: any = {};\r\n\t\t\t\t\ttaskId3.num\t\t= 1;\r\n\t\t\t\t\ttaskId3.id\t\t= currentTask.type;\r\n\t\t\t\t\ttaskId3.name\t= currentTask.typeLib;\r\n\t\t\r\n\t\t\t\t\ttaskTemp.push(taskId3);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tthis._taskList\t\t= _.uniq(taskTemp,\t\tfalse, 'id');\r\n\t\tthis._filterList\t= _.uniq(filterTemp,\tfalse, 'id');\r\n\t\t\r\n\t\t\r\n\t\t// récupération des taches rattaché au document\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Remet à l'origine les fichier (efface le tri)\r\n\t */\r\n\tpublic raz()\r\n\t{\r\n\t\tthis.arrayFiles = this.workspaceData.selectedSujet.pj;\r\n\t\tif (this._arrayFiles.length > 0)\r\n\t\t{\r\n\t\t\tthis.haveData = true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.haveData = false;\r\n\t\t}\r\n\t\tthis.sorterSelected = '';\r\n\t\tthis.filterSelected = '';\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Tri la liste des fichier\r\n\t */\r\n\tpublic sortList(nameFilter: any, orderAsc: any)\r\n\t{\r\n\t\tthis.currentSortName\t= nameFilter;\r\n\t\tthis.currentAsc\t\t\t= orderAsc;\r\n\r\n\t\tthis._arrayFiles.sort(function (a, b)\r\n\t\t{\r\n\t\t\tlet nameA: any;\r\n\t\t\tlet nameB: any;\r\n\r\n\t\t\t// en fonction du choix user on applique le tri en quesiton\r\n\t\t\tswitch (nameFilter)\r\n\t\t\t{\r\n\t\t\t\tcase 'name':\r\n\t\t\t\t\t nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'type':\r\n\t\t\t\t\t nameA = a.typeDocument;\r\n\t\t\t\t\t nameB = b.typeDocument;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'date':\r\n\t\t\t\t\t nameA = a.dateCreation\r\n\t\t\t\t\t nameB = b.dateCreation;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (orderAsc)\r\n\t\t\t{\r\n\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t{\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// names must be equal\r\n\t\t\treturn 0;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\r\n\tpublic filter(typeDoc: any, typeState: any, searchValue: any = undefined)\r\n\t{\r\n\t\t\r\n\t\tthis.synchronize();\r\n\t\tlet aResult\t\t\t= [];\r\n\t\tlet aResultState\t= [];\r\n\t\tlet aResultSearch\t= [];\r\n\r\n\t\tlet taskArray = this.taskData.globalTaskDatas;\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Partie type super\r\n\t\t// ---------------------------------------\r\n\t\tif (typeDoc === 'tous')\r\n\t\t{\r\n\t\t\tfor (let doc of this.arrayFiles)\r\n\t\t\t{\r\n\t\t\t\tif (doc.deleted === false)\r\n\t\t\t\t{\r\n\t\t\t\t\taResult.push(doc);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._arrayFiles = aResult;\r\n\t\t}\r\n\t\telse if (typeDoc === 'aucun')\r\n\t\t{\r\n\t\t\tfor (let doc of this.arrayFiles)\r\n\t\t\t{\r\n\t\t\t\tif (doc.typeDocument === '' && doc.deleted === false)\r\n\t\t\t\t{\r\n\t\t\t\t\taResult.push(doc);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._arrayFiles = aResult;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (typeDoc === 'corbeille')\r\n\t\t\t{\r\n\t\t\t\tfor (let doc of this.arrayFiles)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (doc.deleted === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taResult.push(doc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis._arrayFiles = aResult;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tfor (let doc of this.arrayFiles)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (doc.typeDocument === typeDoc && doc.deleted === false)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taResult.push(doc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis._arrayFiles = aResult;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Partie type de tache\r\n\t\t// ---------------------------------------\r\n\t\tif (typeState === 'toutes')\r\n\t\t{\r\n\t\t}\r\n\t\telse if (typeState === 'aucune')\r\n\t\t{\r\n\t\t\tfor (let doc of this.arrayFiles)\r\n\t\t\t{\r\n\t\t\t\tif (doc.taskId === '')\r\n\t\t\t\t{\r\n\t\t\t\t\taResultState.push(doc);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._arrayFiles = aResultState;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t\r\n\t\t\tfor (let document of this.arrayFiles)\r\n\t\t\t{\r\n\t\t\t\tif (document.taskId)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let task of taskArray)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (task.id === document.taskId && task.type === typeState)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taResultState.push(document);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis._arrayFiles = aResultState;\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Partie recherche\r\n\t\t// ---------------------------------------\r\n\t\tif (searchValue)\r\n\t\t{\r\n\t\t\tlet searchValueWithoutSpaces = searchValue.replace(/\\s/g, '');\r\n\r\n\t\t\tif (searchValueWithoutSpaces !== '')\r\n\t\t\t{\r\n\t\t\t\tlet containsString;\r\n\t\t\t\tlet searchLowerCase\t\t= searchValue.toLowerCase();\r\n\t\t\t\tlet searchWithoutAccent = searchLowerCase.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\r\n\r\n\t\t\t\tfor (let document of this.arrayFiles)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet nameLowerCase\t\t= document.name.toLowerCase();\r\n\t\t\t\t\tlet nameWithoutAccent\t= nameLowerCase.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\r\n\r\n\t\t\t\t\tif (document.name)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontainsString = nameWithoutAccent.indexOf(searchWithoutAccent) !== -1;\r\n\t\t\t\t\t\tif (containsString === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taResultSearch.push(document);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tthis._arrayFiles = aResultSearch;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.sortList(this.currentSortName, this.currentAsc);\r\n\t}\r\n\r\n\r\n\r\n\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\n\r\n// import { Storage } from '@ionic/storage';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * Class UserData\r\n */\r\nexport class GenericData\r\n{\r\n\r\n\r\n\tpublic globalEmitter: EventEmitter = new EventEmitter();\r\n\tpublic globalEmitter2: EventEmitter = new EventEmitter();\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor()\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic getStorage(key: any)\r\n\t{\r\n\t\tlet value = localStorage.getItem(key);\r\n\r\n\t\tif (!value) { return; }\r\n\r\n\t\t// assume it is an object that has been stringified\r\n\t\tif (value[0] === \"{\" || value[0] === \"[\")\r\n\t\t{\r\n\t\t\tvalue = JSON.parse(value);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic removeStorage(key: any)\r\n\t{\r\n\t\tlocalStorage.removeItem(key);\r\n\t}\r\n\t\r\n\t\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic store(key: any, data: any)\r\n\t{\r\n//\t\tif (!key || !data) { return; }\r\n\r\n\t\tif(typeof(data) === \"object\")\r\n\t\t{\r\n\t\t\tdata = JSON.stringify(data);\r\n\t\t}\r\n\r\n\t\tlocalStorage.setItem(key, data);\r\n\t}\r\n\r\n\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { UserData }\tfrom './user-data';\r\nimport { GenericData } from './generic-data';\r\n\r\n@Injectable()\r\n/**\r\n *\r\n * @export\r\n * @class User\r\n */\r\nexport class SavedData extends GenericData\r\n{\r\n\t\tprivate _id:\t\t\t\t\t\tstring\t= '';\r\n\t\tprivate _lastSubjectId:\t\t\t\tany\t\t= null;\r\n\t\tprivate _lastDisciplineId:\t\t\tany\t\t= null;\r\n\t\tprivate _lastEtablissementId:\t\tany\t\t= null;\r\n\t\tprivate _lastSessionId:\t\t\t\tany\t\t= null;\r\n\t\tprivate _lastExamenId:\t\t\t\tany\t\t= null;\r\n\t\tprivate _lastTaskId:\t\t\t\tany\t\t= null;\r\n\t\tprivate _lastPath:\t\t\t\t\tany\t\t= null;\r\n\t\tprivate _lastGroup:\t\t\t\t\tany\t\t= null;\r\n\t\tprivate _openedNodes:\t\t\t\tany\t\t= null;\r\n\t\tprivate _paramsLog:\t\t\t\t\tany\t\t= null;\r\n\t\tprivate _isWorkspaceTaskChecked:\tany\t\t= '';\r\n\r\n\r\n /**\r\n * @memberOf User\r\n */\r\n\tconstructor(public userData: UserData)\r\n\t{\r\n\t\tsuper();\r\n\t\t// Une fois n'est pas coutume on va construire tt le bordel dans le constructeur à partir des infos dans le localStorage\r\n\t}\r\n\r\n\r\n\tget id(): string { return this._id; }\r\n\r\n\tget lastSubjectId()\r\n\t{\r\n\t\tlet oReturn = this._lastSubjectId;\r\n\r\n\t\tif (this._lastSubjectId === '')\r\n\t\t{\r\n\t\t\toReturn \t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::lastSubjectId');\r\n\t\t\tthis._lastSubjectId = oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tget lastDisciplineId()\r\n\t{\r\n\t\tlet oReturn = this._lastDisciplineId;\r\n\t\tif (this._lastDisciplineId === '')\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::lastDisciplineId');\r\n\t\t\tthis._lastDisciplineId = oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tget lastEtablissementId()\r\n\t{\r\n\t\tlet oReturn = this._lastEtablissementId;\r\n\t\tif (this._lastEtablissementId === '')\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::lastEtablissementId');\r\n\t\t\tthis._lastEtablissementId = oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\tget lastSessionId()\r\n\t{\r\n\t\tlet oReturn = this._lastSessionId;\r\n\t\tif (this._lastSessionId === '')\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::lastSessionId');\r\n\t\t\tthis._lastSessionId = oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tget openedNodes()\r\n\t{\r\n\t\tlet oReturn = this._openedNodes;\r\n\t\tif (this._openedNodes === null)\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::openedNodes');\r\n\r\n\t\t\tif (oReturn !== null)\r\n\t\t\t{\r\n\t\t\t\toReturn = JSON.parse(oReturn);\r\n\t\t\t}\r\n\r\n\t\t\tthis._openedNodes = oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tget lastGroup()\r\n\t{\r\n\r\n\t\tlet oReturn = this._lastGroup;\r\n\t\tif (this._lastGroup === null)\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::lastGroup');\r\n\t\t\tthis._lastGroup = oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\tget lastExamenId()\r\n\t{\r\n\t\tlet oReturn = this._lastExamenId;\r\n\t\tif (this._lastExamenId === '')\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::lastExamenId');\r\n\t\t\tthis._lastExamenId = oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\tget lastTaskId()\r\n\t{\r\n\t\tlet oReturn = this._lastTaskId;\r\n\t\tif (this._lastTaskId === '')\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::lastTaskId');\r\n\t\t\tthis._lastTaskId = oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\tget lastPath()\r\n\t{\r\n\t\tlet oReturn = this._lastPath;\r\n\t\tif (this._lastPath === null)\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::lastPath');\r\n\t\t}\r\n\r\n\t\tif (oReturn !== null && oReturn !== undefined && oReturn !== 'undefined')\r\n\t\t{\r\n\t\t\toReturn = JSON.parse(oReturn);\r\n\t\t\tthis._lastPath = oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\tget isWorkspaceTaskChecked()\r\n\t{\r\n\t\tlet oReturn = this._isWorkspaceTaskChecked;\r\n\t\tif (this._isWorkspaceTaskChecked === '')\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::isWorkspaceTaskChecked');\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Récupération des paramètres de l'appli (options selectionnées, etc...)\r\n\t */\r\n\tget paramsLog()\r\n\t{\r\n\t\tlet oReturn = this._paramsLog;\r\n\r\n\t\tif (this._paramsLog === '')\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::paramsLog');\r\n\t\t\t\r\n\t\t\tif (oReturn !== null && oReturn !== undefined && oReturn !== 'undefined')\r\n\t\t\t{\r\n\t\t\t\toReturn = JSON.parse(oReturn);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\r\n\tset id(id) { this._id = id; }\r\n\r\n\r\n\tset lastSubjectId(lastSubjectId)\r\n\t{\r\n\t\tif (lastSubjectId)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::lastSubjectId', lastSubjectId);\r\n\t\t}\r\n\t\tthis._lastSubjectId = lastSubjectId;\r\n\t}\r\n\tset lastDisciplineId(lastDisciplineId)\r\n\t{\r\n\t\tif (lastDisciplineId)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::lastDisciplineId', lastDisciplineId);\r\n\t\t}\r\n\t\tthis._lastSubjectId = lastDisciplineId;\r\n\t}\r\n\tset lastEtablissementId(lastEtablissementId)\r\n\t{\r\n\t\tif (lastEtablissementId)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::lastEtablissementId', lastEtablissementId);\r\n\t\t}\r\n\t\tthis._lastEtablissementId = lastEtablissementId;\r\n\t}\r\n\tset lastSessionId(lastSessionId)\r\n\t{\r\n\t\tif (lastSessionId)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::lastSessionId', lastSessionId);\r\n\t\t}\r\n\t\tthis._lastSessionId = lastSessionId;\r\n\t}\r\n\tset lastExamenId(lastExamenId)\r\n\t{\r\n\t\tif (lastExamenId)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::lastExamenId', lastExamenId);\r\n\t\t}\r\n\t\tthis._lastExamenId = lastExamenId;\r\n\t}\r\n\tset lastTaskId(lastTaskId)\r\n\t{\r\n\t\tif (lastTaskId)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::lastTaskId', lastTaskId);\r\n\t\t}\r\n\t\tthis._lastTaskId = lastTaskId;\r\n\t}\r\n\r\n\r\n\tset lastPath(lastPath)\r\n\t{\r\n\t\tif (lastPath)\r\n\t\t{\r\n\t\t\tconst data = JSON.stringify(lastPath);\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::lastPath', data);\r\n\t\t}\r\n\t\tthis._lastPath = lastPath;\r\n\t}\r\n\r\n\r\n\tset lastGroup(lastGroup)\r\n\t{\r\n\t\tif (lastGroup)\r\n\t\t{\r\n\t\t\tconst data = JSON.stringify(lastGroup);\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::lastGroup', data);\r\n\t\t}\r\n\t\tthis._lastGroup = lastGroup;\r\n\t}\r\n\r\n\r\n\tset openedNodes(nodes)\r\n\t{\r\n\t\tif (nodes)\r\n\t\t{\r\n\t\t\tconst data = JSON.stringify(nodes);\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::openedNodes', data);\r\n\t\t}\r\n\t\tthis._openedNodes = nodes;\r\n\t}\r\n\r\n\tset isWorkspaceTaskChecked(isWorkspaceTaskChecked)\r\n\t{\r\n\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::isWorkspaceTaskChecked', isWorkspaceTaskChecked);\r\n\t\tthis._isWorkspaceTaskChecked = isWorkspaceTaskChecked;\r\n\r\n\t\t// On enregistre également l'information dans l'ensemble des paramètres logiciels\r\n\t\t// (utilisé lors de l'enregistrement en base de données)\r\n\t\tlet paramsLogs = this._paramsLog;\r\n\r\n\t\tif (paramsLogs === null)\r\n\t\t{\r\n\t\t\tparamsLogs = this.getStorage(this.userData.mail + '::' + this.userData.account + '::paramsLog');\r\n\r\n\t\t\tif (paramsLogs !== null && paramsLogs !== undefined && paramsLogs !== 'undefined')\r\n\t\t\t{\r\n\t\t\t\tparamsLogs = JSON.parse(paramsLogs);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tparamsLogs = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tparamsLogs['worspaceTaskChecked'] = isWorkspaceTaskChecked;\r\n\t\tthis._paramsLog \t= paramsLogs;\r\n\t\tlet strParamsLogs \t= JSON.stringify(paramsLogs);\r\n\r\n\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::paramsLog', strParamsLogs);\r\n\t}\r\n\r\n\t\r\n\tset paramsLog(params)\r\n\t{\r\n\t\tif (params)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::paramsLog', params);\r\n\t\t}\r\n\t\tthis._paramsLog = params;\r\n\t}\r\n\r\n\r\n\tpublic getStorage(key: any)\r\n\t{\r\n\t\tlet oReturn;\r\n\t\toReturn = localStorage.getItem(key);\r\n\t\treturn oReturn;\r\n\t}\r\n\tpublic removeStorage(key: any)\r\n\t{\r\n\t\tlocalStorage.removeItem(key);\r\n\t}\r\n\tpublic store(key: any, data: any)\r\n\t{\r\n\t\tlocalStorage.setItem(key, data);\r\n\t}\r\n\r\n\tpublic logout()\r\n\t{\r\n\t\tthis._lastGroup \t\t\t= null;\r\n\t\tthis._openedNodes\t\t\t= null;\r\n\t\tthis._paramsLog\t\t\t\t= null;\r\n\t\tthis._lastPath \t\t\t\t= null;\r\n\t\tthis._lastSubjectId \t\t= null;\r\n\t\tthis._lastDisciplineId \t\t= null;\r\n\t\tthis._lastEtablissementId \t= null;\r\n\t\tthis._lastSessionId \t\t= null;\r\n\t\tthis._lastExamenId \t\t\t= null;\r\n\t\tthis._lastTaskId \t\t\t= null;\r\n\t\tthis._lastExamenId \t\t\t= null;\r\n\t\tthis._lastExamenId \t\t\t= null;\r\n\r\n\t}\r\n\r\n}\r\n\r\n","import { Injectable, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { GenericData }\t\t\t\tfrom './generic-data';\r\nimport { WorkspaceData }\t\t\tfrom './workspace-data';\r\nimport { UserData }\t\t\t\t\tfrom './user-data';\r\nimport { Matiere }\t\t\t\t\tfrom '../classes/matiere.class';\r\nimport { Task }\t\t\t\t\t\tfrom '../classes/task.class';\r\nimport { SocketService }\t\t\tfrom '../services/socket.service';\r\n\r\n// import { Storage } from '@ionic/storage';\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable()\r\n/**\r\n * Class UserData\r\n */\r\nexport class TaskData extends GenericData implements OnDestroy\r\n{\r\n\r\n\t/**\r\n\t * Stockage des taches récupérées dans l'appli\r\n\t */\r\n\tprivate _taskDatas:\t\t\t\t\tTask[]\t\t= [];\r\n\tprivate _globalTaskDatas:\t\t\tTask[]\t\t= [];\r\n\tprivate _epreuveByWorkflowSelected: Matiere[]\t= [];\r\n\r\n\tpublic taskDataEmitter: EventEmitter = new EventEmitter();\r\n\tpublic taskDataEmitter2: EventEmitter = new EventEmitter();\r\n\r\n\r\n\tget epreuveByWorkflowSelected()\t{ return this._epreuveByWorkflowSelected; }\r\n\tget taskDatas()\t\t\t\t\t{ return this._taskDatas; }\r\n\tget globalTaskDatas()\t\t\t{ return this._globalTaskDatas; }\r\n\r\n\tset taskDatas(taskDatas)\t\t\t\t{ this._taskDatas\t\t\t\t\t= taskDatas; }\r\n\tset globalTaskDatas(globalTaskDatas)\t{ this._globalTaskDatas\t\t\t\t= globalTaskDatas; }\r\n\tset epreuveByWorkflowSelected(psParam)\t{ this._epreuveByWorkflowSelected\t= psParam; }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(public workspaceData: WorkspaceData,\r\n\t\t\t\tpublic userData: UserData,\r\n\t\t\t\tpublic socketService: SocketService)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.workspaceData.setTaskData(this);\r\n\t}\r\n\r\n\r\n\tngOnDestroy()\r\n\t{\r\n\t\tthis.taskDataEmitter.unsubscribe();\r\n\t}\r\n\r\n\r\n\tpublic initTasks()\r\n\t{\r\n\t\tthis._taskDatas \t\t= [];\r\n\t\tthis._globalTaskDatas \t= [];\r\n\t}\r\n\r\n\r\n\tpublic majSubjectName(psIdSujet: any)\r\n\t{\r\n\r\n\t\tfor (const task of this._globalTaskDatas)\r\n\t\t{\r\n\t\t\tif (task.idSujet === psIdSujet)\r\n\t\t\t{\r\n\t\t\t\tconst oSujet = this.workspaceData.getSujet(psIdSujet);\r\n\t\t\t\ttask.nameSujet = oSujet.name;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\tpublic buildTask(oTask: any)\r\n\t{\r\n\t\tif (oTask)\r\n\t\t{\r\n\t\t\tconst epreuve\t\t\t= this.workspaceData.getEpreuve(oTask.idEpreuve);\r\n\t\t\tconst sujet\t\t\t\t= this.workspaceData.getSujet(oTask.idSujet);\r\n\t\t\tconst session\t\t\t= this.workspaceData.getSession(oTask.idSession);\r\n\t\t\tconst etablissement\t\t= this.workspaceData.getEtablissement(oTask.idEtablissement);\r\n\t\t\tconst examen\t\t\t= this.workspaceData.getExamen(oTask.idExamen);\r\n\r\n\t\t\toTask.nameSession\t\t= session\t\t? session.name\t\t\t: ' Non autorisé ';\r\n\t\t\toTask.nameEtablissement = etablissement\t? etablissement.name\t: ' Non autorisé ';\r\n\t\t\toTask.nameEpreuve\t\t= epreuve\t\t? epreuve.name\t\t\t: ' Non autorisé ';\r\n\t\t\toTask.nameSujet\t\t\t= sujet\t\t\t? sujet.name\t\t\t: ' Non autorisé ';\r\n\t\t\toTask.nameExamen\t\t= examen\t\t? examen.name\t\t\t: ' Non autorisé ';\r\n\r\n\t\t\toTask.stateLib = 'En cours';\r\n\r\n\t\t\t// récupération du nom de l'état de la tache\r\n\t\t\tfor (const item of oTask.statesAvailable)\r\n\t\t\t{\r\n\t\t\t\tif (item.value === oTask.state)\r\n\t\t\t\t{\r\n\t\t\t\t\toTask.stateLib = item.libelle;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Nom du type de tache\r\n\t\t\tif (epreuve && epreuve.scenario && epreuve.scenario.steps)\r\n\t\t\t{\r\n\t\t\t\tfor (const key in epreuve.scenario.steps)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (key === oTask.type)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\toTask.typeLib = epreuve.scenario.steps[key].name;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn oTask;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * sauvegarde de la liste des taches\r\n\t */\r\n\tpublic addTasks(data: any, pbMajSelected = false)\r\n\t{\r\n\r\n\t\tfor (const task of data)\r\n\t\t{\r\n\t\t\tlet oTask = Task.fromJsonObject(task);\r\n\t\t\toTask = this.buildTask(oTask);\r\n\r\n\t\t\tconst indexInTaskDatas = _.findIndex(this._taskDatas, (taskObj: any) => { return taskObj.id === oTask.id; });\r\n\r\n\t\t\tif (indexInTaskDatas === -1)\r\n\t\t\t{\r\n\t\t\t\tthis._taskDatas.push(oTask);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis._taskDatas[indexInTaskDatas] = this.buildTask(this._taskDatas[indexInTaskDatas]);\r\n\t\t\t}\r\n\r\n\t\t\t//On vérifie que la tache à ajouter n'est pas déja présente dans l'ensemble des\r\n\t\t\t//taches déja récupérées\r\n\t\t\tconst indexInGlobalTasks = _.findIndex(this._globalTaskDatas, (taskObj: any) => { return taskObj.id === oTask.id; });\r\n\r\n\t\t\tif (indexInGlobalTasks === -1)\r\n\t\t\t{\r\n\t\t\t\tthis._globalTaskDatas.push(oTask);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// On met à jour les infos de la tache existante\r\n\t\t\t\tthis._globalTaskDatas[indexInGlobalTasks] = this.buildTask(this._globalTaskDatas[indexInGlobalTasks]);\r\n\t\t\t}\r\n\r\n\t\t\tif (pbMajSelected)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedTask = oTask;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsetGlobalTask(taskId: any, task: Task)\r\n\t{\r\n\t\tconst indexInGlobalTasks = _.findIndex(this._globalTaskDatas, (taskObj: any) => { return taskObj.id === taskId; });\r\n\r\n\t\tif (indexInGlobalTasks !== -1)\r\n\t\t{\r\n\t\t\tthis._globalTaskDatas[indexInGlobalTasks] = task;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._globalTaskDatas.push(task);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\r\n\t/**\r\n\t * Récupération d'une tache par son identifiant\r\n\t * @param idTask\r\n\t */\r\n\tpublic getTaskById(idTask: any)\r\n\t{\r\n\t\tconst result = _.find(this._globalTaskDatas, (task: any) => { return task.id === idTask; });;\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic listenTask(task: any)\r\n\t{\r\n\t\t// Construction du channel que l'on va écouter\r\n\t\tconst channel = '*soft::' + this.userData.account + '::creation::task::' + task.id;\r\n\t\t/**\r\n\t\t * On vérifie si on écoute pas déja sur le channe!\r\n\t\t * Si ce n'est pas le cas on ajoute une room pour écouter sur ce channel\r\n\t\t * en transmettant une fonction pour gérer les evènements\r\n\t\t */\r\n\t\tlet value = this.socketService.findRoomAGerer(channel);\r\n\r\n\t\tif (value < 0)\r\n\t\t{\r\n\t\t\tthis.socketService.roomsAGerer.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tname:\t\tchannel,\r\n\t\t\t\t\tstate:\t\t'nosub',\r\n\t\t\t\t\twatch:\t\ttrue,\r\n\t\t\t\t\tfct:\t\tthis._handleTaskEvent.bind(this),\r\n\t\t\t\t\tchannel:\tundefined\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Permet la récupération des épreuves en fonction d'un workflow donné\r\n\t */\r\n\tpublic getEpreuveByWorkflow(workflowId: any)\r\n\t{\r\n\t\tlet arrayReturn = [];\r\n\t\tlet etablissements = this.workspaceData.etablissements;\r\n\r\n\t\tfor (let etablissement of etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of etablissement.sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let exam of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let matiere of exam.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (matiere.scenario)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// Récupérer l'étape de la derniere tache ! pour savoir ou en est l'épreuve\r\n\t\t\t\t\t\t\tif (matiere.scenario.title === workflowId)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t// Fuck à partir d'ici il va falloir récupérer les taches par sujets\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\tlet maxStep= \"0\";\r\n\r\n\t\t\t\t\t\t\t\tfor (let task of this._globalTaskDatas)\r\n\t\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\t\tif (task.idEpreuve === matiere.id)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet typeTask = task.type;\r\n\r\n\t\t\t\t\t\t\t\t\t\tlet indiceOfTask;\r\n\t\t\t\t\t\t\t\t\t\tlet indiceOfStep;\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Si la tache correspond l'indice max des taches rattaché à ce sujet pour avoir l'avancement\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Nom du type de tache\r\n\t\t\t\t\t\t\t\t\t\tfor (let step in matiere.scenario.steps)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (parseInt(step) === parseInt(typeTask))\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tindiceOfStep = step;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (parseInt(indiceOfStep) > parseInt(maxStep))\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tmaxStep = indiceOfStep;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tmatiere.maxStep = maxStep;\r\n\r\n\t\t\t\t\t\t\t\tarrayReturn.push(matiere);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._epreuveByWorkflowSelected = arrayReturn;\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Fonction apellé lorsque un tri par noeud est demandé\r\n\t */\r\n\tpublic filterTasks(typeOfFilter: any, id: any = null)\r\n\t{\r\n\r\n\t\tlet resultDatas: any[] = [];\r\n\t\tif (id)\r\n\t\t{\r\n\t\t\t// Raz des data, si on veut trier sur étab2 et que seulement les etab1 sont dispo ça va pas le faire\r\n\t\t\tresultDatas = this.globalTaskDatas;\r\n\r\n\t\t\tswitch (typeOfFilter)\r\n\t\t\t{\r\n\r\n\t\t\t\tcase 'etab':\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (step: any) =>\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tif (step.idEtablissement)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn step.idEtablissement === id;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// du code supplémentaire est nécéssaire car certaine tache ont été enregistré sans idEtablissement, du coup on va le chercher dans les sessions\r\n\t\t\t\t\t\t\tlet oEtablissements = this.workspaceData.etablissements;\r\n\r\n\t\t\t\t\t\t\tlet idEtabFinded;\r\n\t\t\t\t\t\t\tfor (let etab of oEtablissements)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfor (let session of etab.sessions)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (session.id === step.idSession)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tidEtabFinded = etab.id;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn idEtabFinded === id;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'sess':\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (task: any) => { return task.idSession == id; });\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'exam':\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (step: any) => { return step.idExamen === id; });\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'matiere':\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (step: any) => { return step.idEpreuve === id; });\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'suj':\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (step: any) => { return step.idSujet === id; });\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresultDatas = this.globalTaskDatas;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Cas aucun => on filtre l'étape d'avant si elle est selectionnée\r\n\t\t\t// ---------------------------------------\r\n\t\t\tresultDatas = this.globalTaskDatas;\r\n\t\t\tlet filterId: any;\r\n\r\n\t\t\tswitch (typeOfFilter)\r\n\t\t\t{\r\n\r\n\t\t\t\tcase 'etab':\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'sess':\r\n\r\n\t\t\t\t\tfilterId\t= this.workspaceData.selectedEtablissement.id;\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (task: any) => { return task.idEtablissement == filterId; });\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'exam':\r\n\t\t\t\t\tfilterId\t= this.workspaceData.selectedSession.id;\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (task: any) => { return task.idSession == filterId; });\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'matiere':\r\n\t\t\t\t\tfilterId\t= this.workspaceData.selectedExamen.id;\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (task: any) => { return task.idExamen == filterId; });\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'suj':\r\n\t\t\t\t\tfilterId\t= this.workspaceData.selectedMatiere.id;\r\n\t\t\t\t\tresultDatas = _.filter(resultDatas, (task: any) => { return task.idEpreuve == filterId; });\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.taskDatas = resultDatas;\r\n\t}\r\n\r\n\r\n\tpublic getTaskDatas()\r\n\t{\r\n\t\tlet aoReturn = [];\r\n\r\n\t\tfor (let key in this._globalTaskDatas)\r\n\t\t{\r\n\t\t\taoReturn.push(this._globalTaskDatas[key]);\r\n\t\t}\r\n\r\n\t\treturn aoReturn;\r\n\t}\r\n\r\n\r\n\tprivate _handleTaskEvent(datas: any)\r\n\t{\r\n\t\tif (datas.cmd === 'messages.set')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.message)\r\n\t\t\t{\r\n\t\t\t\tlet messageAdded = this.workspaceData.parseHistoric(datas.args.message);\r\n\r\n\t\t\t\tthis.workspaceData.addHistoricToElement(datas.args.message.key, messageAdded);\r\n\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', datas.args.message.key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n}\r\n\r\n","import { Injectable, EventEmitter, OnDestroy } from '@angular/core';\r\nimport * as _ from 'underscore';\r\n// import { Storage } from '@ionic/storage';\r\nimport { User } from '../classes/user.class';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * Class UserData\r\n */\r\nexport class UserData implements OnDestroy\r\n{\r\n\tpublic _favorites: any \t= [];\r\n\tpublic HAS_LOGGED_IN \t= 'hasLoggedIn';\r\n\tpublic TOKEN_KEY \t\t= 'tokenKey';\r\n\r\n\tpublic userDatas: any = null;\r\n\tpublic bddAccountConnected: string = null;\r\n\r\n\tpublic states: any =\r\n\t\t{\r\n\t\t\tapplication:\t'offline',\r\n\t\t\tchat:\t\t\t'offline',\r\n\t\t\tuserchat:\t\t'offline'\r\n\t\t};\r\n\r\n\r\n\tpublic static STATUS_ADMIN\t\t\t= 'admin';\r\n\tpublic static STATUS_RESPONSABLE\t= 'responsable';\r\n\tpublic static STATUS_SUPERVISEUR\t= 'superviseur';\r\n\tpublic static STATUS_USER\t\t\t= 'user';\r\n\r\n\r\n\tpublic static CONST_CHAT_ACTION_NEWMESSAGE\t\t= 'chat::newMessage';\r\n\tpublic static CONST_CHAT_ACTION_NEWROOM\t\t\t= 'chat::newRoom';\r\n\tpublic static CONST_CHAT_ACTION_NEWUSER\t\t\t= 'chat::newUser';\r\n\tpublic static CONST_CHAT_ACTION_USERCONNECTED\t= 'chat::userConnected';\r\n\tpublic static CONST_CHAT_ACTION_GETUSERLIST\t\t= 'chat::getUserList';\r\n\r\n\r\n\tprotected _setAccountInfo:\t\t\tany;\r\n\r\n\tprotected _canAccessChat:\t\t\tboolean = false;\r\n\tprotected _canAccessForum:\t\t\tboolean = false;\r\n\tprotected _canAccessNotification:\tboolean = false;\r\n\r\n\tprotected _canRead:\t\tboolean = false;\r\n\tprotected _canCreate:\tboolean = false;\r\n\tprotected _canUpdate:\tboolean = false;\r\n\tprotected _canDelete:\tboolean = false;\r\n\r\n\tprivate _id:\t\t\tstring\t= '';\r\n\tprivate _fingerPrint:\tstring\t= '';\r\n\tprivate _dateCreation:\tstring\t= '';\r\n\r\n\t// Partie du chat\r\n\tprivate _idNewRoom:\t\t\tstring\t= '';\r\n\tprivate _rooms:\t\t\t\tany[]\t= [];\r\n\tprivate _users:\t\t\t\tUser[]\t= [];\r\n\tprivate _userByRoomId:\t\tany[]\t= [];\r\n\tprivate _messagesByRoomId:\tany[]\t= [];\r\n\tprivate _firstLetterIcone\t\t\t= '';\r\n\tprivate _color\t\t\t= '';\r\n\r\n\t// Status de l'user conencté, par défaut il possède le status de simple utilisateur\r\n\tprivate _status:\t\t\tstring\t= UserData.STATUS_USER;\r\n\tprivate _isServer:\t\t\tboolean = false;\r\n\tprivate _mail:\t\t\t\tstring\t= '';\r\n\tprivate _username:\t\t\tstring\t= '';\r\n\tprivate _accounts:\t\t\tany[]\t= [];\r\n\tprivate _account:\t\t\tstring\t= '';\r\n\tprivate _isAccountSelected:\tboolean = false;\r\n\tprivate _right:\t\t\t\tstring\t= '';\r\n\tprivate _role:\t\t\t\tstring\t= '';\r\n\tprivate _firstName:\t\t\tstring\t= '';\r\n\tprivate _lastName:\t\t\tstring\t= '';\r\n\tprivate _userId:\t\t\tstring\t= '';\r\n\tprivate _deleted:\t\t\tboolean = false;\r\n\tprivate _userForChatInvite:\tany\t\t= null;\r\n\r\n\tprivate _connected:\t\t\tboolean = false;\r\n\tprivate _otpAuth:\t\t\tboolean\t= false;\r\n\tprivate _methodAuth:\t\tany\t\t= 1;\r\n\tprivate _mustReset:\t\t\tboolean = false;\r\n\tprivate _mustValidateBrowser:boolean = false;\r\n\r\n\r\n\tpublic mbIsPrinter: boolean = false;\r\n\r\n\tprivate _dialogRefModalConnection: any = null;\r\n\r\n\t/**\r\n\t * Stockage des évènements du calendrier\r\n\t */\r\n\tprivate _calendarDatas:\tany = {};\r\n\r\n\t/**\r\n\t * Stockage des taches récupérées dans l'appli\r\n\t */\r\n\tprivate _taskDatas:\t\tany = {};\r\n\r\n\tpublic globalEmitter: \tEventEmitter = new EventEmitter();\r\n\tpublic notifEmitter: \tEventEmitter = new EventEmitter();\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor()\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\tngOnDestroy()\r\n\t{\r\n\t\tthis.globalEmitter.unsubscribe();\r\n\t\tthis.notifEmitter.unsubscribe();\r\n\t}\r\n\r\n\r\n\tpublic getStorage(key: any)\r\n\t{\r\n\t\tlet value = localStorage.getItem(key);\r\n\r\n\t\tif (!value) { return; }\r\n\r\n\t\t// assume it is an object that has been stringified\r\n\t\tif (value[0] === \"{\" || value[0] === \"[\")\r\n\t\t{\r\n\t\t\tvalue = JSON.parse(value);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\r\n\r\n\tpublic removeStorage(key: any)\r\n\t{\r\n\t\tlocalStorage.removeItem(key);\r\n\t}\r\n\r\n\tpublic store(key: any, data: any)\r\n\t{\r\n//\t\tif (!key || !data) { return; }\r\n\r\n\t\tif(typeof(data) === \"object\")\r\n\t\t{\r\n\t\t\tdata = JSON.stringify(data);\r\n\t\t}\r\n\t\tlocalStorage.setItem(key, data);\r\n\t}\r\n\r\n\r\n\r\n\r\n\tget id():\t\t\t\t\t\tstring\t{ return this._id; }\r\n\tget fingerPrint():\t\t\t\tstring\t{ return this._fingerPrint; }\r\n\tget dateCreation():\t\t\t\tstring\t{ return this._dateCreation; }\r\n\tget isServer():\t\t\t\t\tboolean { return this._isServer; }\r\n\tget mail():\t\t\t\t\t\tstring\t{ return this._mail; }\r\n\tget username():\t\t\t\t\tstring\t{ return this._username; }\r\n\tget accounts():\t\t\t\t\tany[]\t{ return this._accounts; }\r\n\tget account():\t\t\t\t\tstring\t{ return this._account; }\r\n\tget isAccountSelected():\t\tboolean\t{ return this._isAccountSelected; }\r\n\tget right():\t\t\t\t\tstring\t{ return this._right; }\r\n\tget role():\t\t\t\t\t\tstring\t{ return this._role; }\r\n\tget firstName():\t\t\t\tstring\t{ return this._firstName; }\r\n\tget firstLetterIcone():\t\t\tstring\t{ return this._firstLetterIcone; }\r\n\tget color():\t\t\tstring\t{ return this._color; }\r\n\tget lastName():\t\t\t\t\tstring\t{ return this._lastName; }\r\n\tget deleted():\t\t\t\t\tboolean { return this._deleted; }\r\n\tget status():\t\t\t\t\tstring\t{ return this._status; }\r\n\tget idNewRoom():\t\t\t\tstring\t{ return this._idNewRoom; }\r\n\tget canAccessChat():\t\t\tboolean { return this._canAccessChat; }\r\n\tget canAccessForum():\t\t\tboolean { return this._canAccessForum; }\r\n\tget canAccessNotification():\tboolean { return this._canAccessNotification; }\r\n\tget canRead():\t\t\t\t\tboolean { return this._canRead; }\r\n\tget canCreate():\t\t\t\tboolean { return this._canCreate; }\r\n\tget canUpdate():\t\t\t\tboolean { return this._canUpdate; }\r\n\tget canDelete():\t\t\t\tboolean { return this._canDelete; }\r\n\tget userForChatInvite():\t\tany\t\t{ return this._userForChatInvite; }\r\n\tget rooms():\t\t\t\t\tany[]\t{ return this._rooms; }\r\n\tget users(): any[]\r\n\t{\r\n\t\tlet objUsers = [];\r\n\r\n\t\tfor (let key in this._users)\r\n\t\t{\r\n\t\t\tobjUsers.push(this._users[key]);\r\n\r\n\t\t}\r\n\t\treturn objUsers;\r\n\t}\r\n\tget userByRoomId():\t\t\t\tany[]\t{ return this._userByRoomId; }\r\n\tget messagesByRoomId():\t\t\tany[]\t{ return this._messagesByRoomId; }\r\n\tget connected():\t\t\t\tboolean { return this._connected; }\r\n\tget otpAuth():\t\t\t\t\tboolean { return this._otpAuth; }\r\n\tget methodAuth():\t\t\t\tany\t\t{ return this._methodAuth; }\r\n\tget mustReset():\t\t\t\tboolean\t{ return this._mustReset; }\r\n\tget mustValidateBrowser(): \tboolean\t{ return this._mustValidateBrowser; }\r\n\tget dialogRefModalConnection():\tany { return this._dialogRefModalConnection; }\r\n\r\n\r\n\tset id(id)\t\t\t\t\t\t\t\t\t\t\t{ this._id\t\t\t\t\t\t= id; }\r\n\tset fingerPrint(fingerPrint)\t\t\t\t\t\t{ this._fingerPrint\t\t\t\t= fingerPrint; }\r\n\tset dateCreation(dateCreation)\t\t\t\t\t\t{ this._dateCreation\t\t\t= dateCreation; }\r\n\tset isServer(isServer)\t\t\t\t\t\t\t\t{ this._isServer\t\t\t\t= isServer; }\r\n\tset mail(mail)\t\t\t\t\t\t\t\t\t\t{ this._mail\t\t\t\t\t= mail; }\r\n\tset username(username)\t\t\t\t\t\t\t\t{ this._username\t\t\t\t= username; }\r\n\tset accounts(accounts)\t\t\t\t\t\t\t\t{ this._accounts\t\t\t\t= accounts; }\r\n\tset account(account)\t\t\t\t\t\t\t\t{ this._account\t\t\t\t\t= account; }\r\n\tset isAccountSelected(isAccountSelected)\t\t\t{ this._isAccountSelected\t\t= isAccountSelected; }\r\n\tset right(right)\t\t\t\t\t\t\t\t\t{ this._right\t\t\t\t\t= right; }\r\n\tset role(role)\t\t\t\t\t\t\t\t\t\t{ this._role\t\t\t\t\t= role; }\r\n\tset firstName(firstName)\t\t\t\t\t\t\t{ this._firstName\t\t\t\t= firstName; }\r\n\tset color(color)\t\t\t\t\t\t\t\t\t{ this._color\t\t\t\t= color; }\r\n\tset firstLetterIcone(firstLetterIcone)\t\t\t\t{ this._firstLetterIcone\t\t\t\t= firstLetterIcone; }\r\n\tset lastName(lastName)\t\t\t\t\t\t\t\t{ this._lastName\t\t\t\t= lastName; }\r\n\tset deleted(deleted)\t\t\t\t\t\t\t\t{ this._deleted\t\t\t\t\t= deleted; }\r\n\tset status(status)\t\t\t\t\t\t\t\t\t{ this._status\t\t\t\t\t= status; }\r\n\tset idNewRoom(idNewRoom)\t\t\t\t\t\t\t{ this._idNewRoom\t\t\t\t= idNewRoom; }\r\n\tset canAccessChat(canAccessChat)\t\t\t\t\t{ this._canAccessChat\t\t\t= canAccessChat; }\r\n\tset canAccessForum(canAccessForum)\t\t\t\t\t{ this._canAccessForum\t\t\t= canAccessForum; }\r\n\tset canAccessNotification(canAccessNotification)\t{ this._canAccessNotification\t= canAccessNotification; }\r\n\tset canRead(canRead)\t\t\t\t\t\t\t\t{ this._canRead\t\t\t\t\t= canRead; }\r\n\tset canCreate(canCreate)\t\t\t\t\t\t\t{ this._canCreate\t\t\t\t= canCreate; }\r\n\tset canUpdate(canUpdate)\t\t\t\t\t\t\t{ this._canUpdate\t\t\t\t= canUpdate; }\r\n\tset canDelete(canDelete)\t\t\t\t\t\t\t{ this._canDelete\t\t\t\t= canDelete; }\r\n\tset userForChatInvite(userForChatInvite)\t\t\t{ this._userForChatInvite\t\t= userForChatInvite; }\r\n\tset rooms(rooms)\t\t\t\t\t\t\t\t\t{ this._rooms\t\t\t\t\t= rooms; }\r\n\tset users(users)\t\t\t\t\t\t\t\t\t{ this._users\t\t\t\t\t= users; }\r\n\tset userByRoomId(userByRoomId)\t\t\t\t\t\t{ this._userByRoomId\t\t\t= userByRoomId; }\r\n\tset messagesByRoomId(userByRoomId)\t\t\t\t\t{ this._messagesByRoomId\t\t= userByRoomId; }\r\n\tset connected(connected)\t\t\t\t\t\t\t{ this._connected\t\t\t\t= connected; }\r\n\tset otpAuth(otpAuth)\t\t\t\t\t\t\t\t{ this._otpAuth\t\t\t\t\t= otpAuth; }\r\n\tset methodAuth(methodAuth)\t\t\t\t\t\t\t{ this._methodAuth\t\t\t\t= methodAuth; }\r\n\tset mustReset(mustReset)\t\t\t\t\t\t\t{ this._mustReset\t\t\t\t= mustReset; }\r\n\tset mustValidateBrowser(mustValidateBrowser)\t\t{ this._mustValidateBrowser\t\t= mustValidateBrowser; }\r\n\tset dialogRefModalConnection(dialogRef)\t\t\t\t{ this._dialogRefModalConnection= dialogRef; }\r\n\r\n\t/**\r\n\t * Retourne true si l'user courant est un administrateur\r\n\t */\r\n\tpublic isAdmin()\r\n\t{\r\n\t\treturn this.status === UserData.STATUS_ADMIN;\r\n\t}\r\n\r\n\t/**\r\n\t * Retourne true si l'user courant est un responsable\r\n\t */\r\n\tpublic isResponsable()\r\n\t{\r\n\t\treturn this.status === UserData.STATUS_RESPONSABLE;\r\n\t}\r\n\r\n\t/**\r\n\t * Retourne true si l'user courant est un superviseur\r\n\t */\r\n\tpublic isSuperviseur()\r\n\t{\r\n\t\treturn this.status === UserData.STATUS_SUPERVISEUR;\r\n\t}\r\n\r\n\t/**\r\n\t * Retourne true si l'user courant est un simple utilisateur\r\n\t */\r\n\tpublic isSimpleUser()\r\n\t{\r\n\t\treturn this.status === UserData.STATUS_USER;\r\n\t}\r\n\r\n\tpublic parseBoolean(psString: any)\r\n\t{\r\n\t\tlet bReturn = null;\r\n\r\n\t\tif(psString === \"true\")\r\n\t\t{\r\n\t\t\tbReturn = true;\r\n\t\t}\r\n\t\telse if (psString === \"false\")\r\n\t\t{\r\n\t\t\tbReturn = false;\r\n\t\t}\r\n\r\n\t\treturn bReturn;\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Fonction qui permet de définir les droits globaux\r\n\t */\r\n\tpublic setCurrentUser(poUserData: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupération des infos de base\r\n\t\t// ---------------------------------------\r\n\t\tif (poUserData)\r\n\t\t{\r\n\t\t\tif (poUserData.infos)\r\n\t\t\t{\r\n\t\t\t\tthis.firstName\t= poUserData.infos.prenom;\r\n\t\t\t\tthis.lastName\t= poUserData.infos.nom;\r\n\t\t\t\tthis.mail\t\t= poUserData.infos.mail;\r\n\t\t\t}\r\n\r\n\t\t\tif (poUserData.privates)\r\n\t\t\t{\r\n\t\t\t\tthis.account\t= poUserData.privates.account;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis.mbIsPrinter = this.parseBoolean(poUserData.publics.bIsPrinter);\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Gestion des droits sur le chat\r\n\t\t\t// ---------------------------------------\r\n\t\t\tif (poUserData.droitsLogiciel)\r\n\t\t\t{\r\n\t\t\t\tlet aRight = poUserData.droitsLogiciel.creation;\r\n\t\t\t\tif (aRight)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (aRight.indexOf('chat') !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.canAccessChat = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (aRight.indexOf('forum') !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.canAccessForum = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (aRight.indexOf('notification') !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.canAccessNotification = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// Droits CRUD\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tif (aRight.indexOf('create') !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.canCreate = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (aRight.indexOf('read') !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.canRead = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (aRight.indexOf('update') !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.canUpdate = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (aRight.indexOf('delete') !== -1)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.canDelete = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic hasFavorite(sessionName: any)\r\n\t{\r\n\t\tlet oReturn = this._favorites.indexOf(sessionName) > -1;\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic addFavorite(sessionName: any)\r\n\t{\r\n\t\tthis._favorites.push(sessionName);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic removeFavorite(sessionName: any)\r\n\t{\r\n\t\tlet index = this._favorites.indexOf(sessionName);\r\n\t\tif (index > -1)\r\n\t\t{\r\n\t\t\tthis._favorites.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic login(username: string, token: string, idUnique: string)\r\n\t{\r\n\t\tif (!username || !idUnique ||\r\n\t\t\tusername.length === 0 || idUnique.length === 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.store(this.HAS_LOGGED_IN, 'true');\r\n\t\tthis.setUsername(username);\r\n\t\tthis.setUserId(idUnique);\r\n\t\tif (token)\r\n\t\t{\r\n\t\t\tthis.setTokenKey(token);\r\n\t\t}\r\n\r\n\t\t// this.events.publish('user:login');\r\n\t\t// TODO => voir si il à pas un status ne pas déranger en cours lors de la dernière connexion\r\n\t\tthis.states.application = 'online';\r\n\t\tthis.states.chat\t\t= 'online';\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic signup(username: any)\r\n\t{\r\n\t\t//\t\tthis.storage.set(this.HAS_LOGGED_IN, true);\r\n\t\tthis.setUsername(username);\r\n\t\t//\t\tthis.events.publish('user:signup');\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic logout()\r\n\t{\r\n\t\tthis.removeStorage(\"username\");\r\n\t\tthis.removeStorage(\"userid\");\r\n\t\tthis.removeStorage(\"calendarDatas\");\r\n\r\n\t\tthis.store(this.HAS_LOGGED_IN, 'false');\r\n\t\tthis.removeStorage(this.getUserId() + '::' + this.account + '::socketCluster.authToken');\r\n\t\tthis.states.application = 'offline';\r\n\r\n\t\tfor (let keyUser in this._users)\r\n\t\t{\r\n\t\t\tthis.removeStorage('usersDatas::' + this.account + '::' + keyUser);\r\n\t\t}\r\n\t\tthis._users = [];\r\n\t\tthis._otpAuth = false;\r\n\t\tthis.connected = false;\r\n\r\n\t\tthis.setTasksHomeForMe({});\r\n\t\tthis.setTasksHomeImAdmin({});\r\n\t\tthis.setCalendarDatas({});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic setUsername(username: any)\r\n\t{\r\n\t\tthis.store('username', username);\r\n\t\t// this.router.navigate(['/home']);\r\n\t\t// this.storage.set('username', username);\r\n\t}\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic setUserId(userid: any)\r\n\t{\r\n\t\t// this.router.navigate(['/home']);\r\n\t\t// this.storage.set('username', username);\r\n\t\tthis._userId = userid;\r\n\t}\r\n\r\n\r\n\tpublic setStateApplication(key: string, value: any)\r\n\t{\r\n\t\tthis.states[key] = value;\r\n\t\t// this.store(this.HAS_LOGGED_IN, 'true');\r\n\t}\r\n\r\n\tpublic setFingerPrint(value: any)\r\n\t{\r\n\t\tthis.store(this.getUserId() + '::' + this.account + '::fingerprint', value);\r\n\t}\r\n\r\n\r\n\tpublic setAccountInfo(value: any)\r\n\t{\r\n\t\tthis.store('accountInfo', value);\r\n\t}\r\n\r\n\r\n\t// ------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n\t//\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tPartie Chat\r\n\t// ------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n\tpublic addUser(value: any, key: any)\r\n\t{\r\n\t\tthis._users[key] = value;\r\n\t\tthis.store('usersDatas::' + this.account + '::' + key, value);\r\n\t}\r\n\r\n\tpublic removeUser(key: any)\r\n\t{\r\n\t\tdelete this._users[key];\r\n\t\tthis.removeStorage('usersDatas::' + this.account + '::' + key);\r\n\t}\r\n\r\n\tpublic setUserState(value: any, key: any)\r\n\t{\r\n\t\tif(value === 'online')\r\n\t\t{\r\n\t\t\tthis._users[key].status = true;\r\n\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\r\n\t\t\tthis._users[key].status = false;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic getUser(key: any)\r\n\t{\r\n\t\tlet oReturn: any;\r\n\r\n\t\tif (!this._users[key])\r\n\t\t{\r\n\t\t\toReturn = this.getStorage('usersDatas::' + this.account + '::' + key);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\toReturn = this._users[key];\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\tpublic getUsers()\r\n\t{\r\n\t\treturn this._users;\r\n\t}\r\n\r\n\tpublic getUsers2()\r\n\t{\r\n\t\tlet test: any = this._users;\r\n\t\tlet returnArray = [];\r\n\r\n\t\tfor (let user in this._users)\r\n\t\t{\r\n\t\t\treturnArray.push(this.getUser(user));\r\n\t\t}\r\n\t\treturn returnArray;\r\n\t}\r\n\r\n\tpublic getUsersList()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage(this.account + '::usersList');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t// ------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n\t//\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tPartie autre\r\n\t// ------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n\r\n\tpublic setTasksHomeForMe(value: any)\r\n\t{\r\n\t\tthis.store(this.account + '::tasksHomeForMe', value);\r\n\t}\r\n\r\n\tpublic addTaskHomeForMe(value: any)\r\n\t{\r\n\t\tconst tasks: any = this.getStorage(this.account + '::tasksHomeForMe');\r\n\r\n\t\tconst index = _.findIndex(tasks, (val: any) => {\r\n\t\t\treturn val.uuid === value.uuid;\r\n\t\t});\r\n\r\n\t\tif (index !== -1)\r\n\t\t{\r\n\t\t\ttasks[index] = value;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\ttasks.push(value);\r\n\t\t}\r\n\t\tthis.store(this.account + '::tasksHomeForMe', tasks);\r\n\t}\r\n\r\n\tpublic setUsersList(value: any)\r\n\t{\r\n\t\tthis.store(this.account + '::usersList', value);\r\n\t}\r\n\r\n\r\n\tpublic setTasksHomeImAdmin(value: any)\r\n\t{\r\n\t\tthis.store(this.account + '::tasksHomeImAdmin', value);\r\n\t}\r\n\r\n\tpublic addTasksHomeImAdmin(value: any)\r\n\t{\r\n\t\tconst tasks: any = this.getStorage(this.account + '::tasksHomeImAdmin');\r\n\r\n\t\tconst index = _.findIndex(tasks, (val: any) => {\r\n\t\t\treturn val.uuid === value.uuid;\r\n\t\t});\r\n\r\n\t\tif (index !== -1)\r\n\t\t{\r\n\t\t\ttasks[index] = value;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\ttasks.push(value);\r\n\t\t}\r\n\t\tthis.store(this.account + '::tasksHomeImAdmin', tasks);\r\n\r\n\t}\r\n\r\n\r\n\tpublic setUserDatas(datas: any)\r\n\t{\r\n\t\tthis.userDatas = datas;\r\n//\t\t('setCurrentUSer', datas);\r\n\r\n\t\t// parser des éléments pour les membres de classe\r\n\t\tthis.setCurrentUser(datas);\r\n\r\n\t\tthis.store('userDatas', datas);\r\n\t}\r\n\r\n\tpublic setRessources(datas: any)\r\n\t{\r\n\t\tthis.store('ressources', datas);\r\n\t}\r\n\r\n\tpublic setUsersDatas(datas: any, key: any)\r\n\t{\r\n\t\tthis.userDatas = datas;\r\n\t\t//\t\ts('setCurrentUSer', datas);\r\n\r\n\t\t// parser des éléments pour les membres de classe\r\n\r\n\t\tthis.store('usersDatas::' + this.account + '::' + key, datas);\r\n\t}\r\n\r\n\tpublic getUsersDatas(key: any)\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage('usersDatas::' + this.account + '::' + key);\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\r\n\r\n\t/**\r\n\t * Récupère un évènement en fonction de son identifiant dans le localstorage\r\n\t * @param idElement\r\n\t */\r\n\tpublic getCalendarElement(idElement: string)\r\n\t{\r\n\t\tlet result;\r\n\r\n\t\tif (!this._calendarDatas)\r\n\t\t{\r\n\t\t\tthis._calendarDatas = this.getStorage(this.getUserId() + '::' + this.account + '::calendarDatas');\r\n\t\t}\r\n\r\n\t\tresult = this._calendarDatas[idElement];\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ajout d'un evènement dans le localstorage en fonction de son identifiant\r\n\t * @param idData\r\n\t * @param data\r\n\t */\r\n\tpublic addCalendarElement(idData: string, data: any)\r\n\t{\r\n\r\n\t\tif (!this._calendarDatas)\r\n\t\t{\r\n\t\t\tthis._calendarDatas = this.getStorage(this.getUserId() + '::' + this.account + '::calendarDatas');\r\n\t\t}\r\n\r\n\t\tlet type = data.type;\r\n\r\n\t\tif (!this._calendarDatas[idData])\r\n\t\t{\r\n\t\t\tthis._calendarDatas[idData] = {};\r\n\t\t}\r\n\t\tthis._calendarDatas[idData][type] = data;\r\n\r\n\t\tthis.store(this.getUserId() + '::' + this.account + '::calendarDatas', this._calendarDatas);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t * @param dateId \r\n\t */\r\n\tpublic removeCalendarElement(dateId: any)\r\n\t{\r\n\t\tif (!this._calendarDatas)\r\n\t\t{\r\n\t\t\tthis._calendarDatas = this.getStorage(this.getUserId() + '::' + this.account + '::calendarDatas');\r\n\t\t}\r\n\r\n\t\tif (this._calendarDatas[dateId])\r\n\t\t{\r\n\t\t\tdelete this._calendarDatas[dateId];\r\n\t\t\tthis.store(this.getUserId() + '::' + this.account + '::calendarDatas', this._calendarDatas);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Affectation d'un ensemble de dates dans le localstorage\r\n\t * @param datas\r\n\t */\r\n\tpublic setCalendarDatas(datas: any)\r\n\t{\r\n\t\tthis._calendarDatas = datas;\r\n\t\tthis.store(this.getUserId() + '::' + this.account + '::calendarDatas', datas);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Récupération des évènements dans le localstorage\r\n\t */\r\n\tpublic getCalendarDatas()\r\n\t{\r\n\t\tlet oReturn: any = {};\r\n\r\n\t\tif (this._calendarDatas)\r\n\t\t{\r\n\t\t\toReturn = this._calendarDatas;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._calendarDatas = this.getStorage(this.getUserId() + '::' + this.account + '::calendarDatas');\r\n\t\t\toReturn \t\t\t= this._calendarDatas;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Récupération d'une tache dans le localstorage en fonction de son identifiant\r\n\t * @param idData\r\n\t * @param data\r\n\t */\r\n\tpublic addTaskData(idData: string, data: any)\r\n\t{\r\n\t\tif (!this._taskDatas)\r\n\t\t{\r\n\t\t\tthis._taskDatas = this.getStorage('taskDatas');\r\n\t\t}\r\n\r\n\t\tif (!this._taskDatas)\r\n\t\t{\r\n\t\t\tthis._taskDatas = {};\r\n\t\t}\r\n\r\n\t\tthis._taskDatas[idData] = data;\r\n\t\tthis.store('taskDatas', this._taskDatas);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ajout de la structure de nodes dans le locastorage\r\n\t * @param datas\r\n\t */\r\n\tpublic setTaskDatas(datas: any)\r\n\t{\r\n\t\tthis._taskDatas = datas;\r\n\t\tthis.store('taskDatas', datas);\r\n\t}\r\n\r\n\tpublic getAccountInfo()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage('accountInfo');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getUsername()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage('username');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tpublic getUserId()\r\n\t{\r\n\t\treturn this._userId;\r\n\t}\r\n\r\n\r\n\tpublic getUserObject()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage('userid');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tpublic getFingerPrint()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage(this.getUserId() + '::' + this.account + '::fingerprint');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\r\n\tpublic getTasksHomeForMe()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage(this.account + '::tasksHomeForMe');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\tpublic getTasksHomeForMeById(idTask: string)\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\tconst tasks = this.getStorage(this.account + '::tasksHomeForMe');\r\n\r\n\t\tconst index = _.findIndex(tasks, (val: any) => \r\n\t\t{\r\n\t\t\treturn val.uuid === idTask;\r\n\t\t});\r\n\r\n\t\tif (index !== -1)\r\n\t\t{\r\n\t\t\toReturn = tasks[index];\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tpublic getTasksHomeImAdmin()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage(this.account + '::tasksHomeImAdmin');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tpublic isUserAdmin(userId: any)\r\n\t{\r\n\t\tconst user \t= this.getUser(userId);\r\n\t\tlet isAdmin = false;\r\n\r\n\t\tif (user.publics && (user.publics.isAdmin === true || user.publics.isAdmin === 'true'))\r\n\t\t{\r\n\t\t\tisAdmin = true;\r\n\t\t}\r\n\r\n\t\treturn isAdmin;\r\n\t}\r\n\r\n\r\n\tpublic isUserSuperviseur(userId: any)\r\n\t{\r\n\t\tconst user \t\t= this.getUser(userId);\r\n\t\tlet isSuperUser = false;\r\n\r\n\t\tif (user.publics && (user.publics.isSuperUser === true || user.publics.isSuperUser === 'true'))\r\n\t\t{\r\n\t\t\tisSuperUser = true;\r\n\t\t}\r\n\r\n\t\treturn isSuperUser;\r\n\t}\r\n\r\n\r\n\tpublic getReadedMessages()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage('readedMessages');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tpublic getRessources()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage('ressources');\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Récupération de l'ensemble des tâches disponibles dans le localstorage\r\n\t */\r\n\tpublic getTaskDatas()\r\n\t{\r\n\t\tlet oReturn: any = {};\r\n\r\n\t\tif (this._taskDatas)\r\n\t\t{\r\n\t\t\toReturn = this._taskDatas;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._taskDatas = this.getStorage('taskDatas');\r\n\t\t\toReturn \t\t= this._taskDatas;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tpublic getUserDatas()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\tif (this.userDatas !== null)\r\n\t\t{\r\n\t\t\toReturn = this.userDatas;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\toReturn = this.getStorage('userDatas');\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tpublic getStateApplication()\r\n\t{\r\n\t\treturn this.states;\r\n\t}\r\n\r\n\t/**\r\n\t * return a promise\r\n\t */\r\n\tpublic hasLoggedIn()\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\toReturn = this.getStorage(this.HAS_LOGGED_IN) === 'true';\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic setTokenKey(token: string)\r\n\t{\r\n\t\tthis.store(this.getUserId() + '::' + this.account + '::socketCluster.authToken', token);\r\n\t}\r\n\r\n\tpublic setRSAPrivate(rsaKey: any)\r\n\t{\r\n\t\tthis.store(this.getUserId() + '::' + this.account + '::rsa-private', rsaKey);\r\n\t}\r\n\r\n\r\n\tpublic getRSAPrivate()\r\n\t{\r\n\t\tlet rsa = this.getStorage(this.getUserId() + '::' + this.account + '::rsa-private');\r\n\r\n\t\treturn rsa;\r\n\t}\r\n\r\n\tpublic hasRSAprivate()\r\n\t{\r\n\t\tlet result = false;\r\n\r\n\t\tif (this.getStorage(this.getUserId() + '::' + this.account + '::rsa-private') !== undefined)\r\n\t\t{\r\n\t\t\tresult = true;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic deleteRSAPrivate()\r\n\t{\r\n\t\tthis.removeStorage(this.getUserId() + '::' + this.account + '::rsa-private');\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic delTokenKey()\r\n\t{\r\n\t\tthis.removeStorage(this.getUserId() + '::' + this.account + '::socketCluster.authToken');\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic getTokenKey()\r\n\t{\r\n\t\tlet token = this.getStorage(this.getUserId() + '::' + this.account + '::socketCluster.authToken');\r\n\r\n\t\tif (token)\r\n\t\t{\r\n\t\t\ttoken = token.replace(/\"/g, '');\r\n\t\t}\r\n\t\treturn token;\r\n\t}\r\n\r\n\r\n\tpublic storeRooms(paRooms: any)\r\n\t{\r\n\t\tthis.store('avaibleRooms', paRooms);\r\n\t}\r\n\r\n\r\n\tgetTextColor(color: any)\r\n\t{\r\n\t\tif (color === '#fff')\r\n\t\t{\r\n\t\t\tcolor = \"#ffffff\";\r\n\t\t}\r\n\t\tlet value;\r\n\r\n\t\tlet colorReturn = \"#000000\";\r\n\r\n\t\tif (color)\r\n\t\t{\r\n\t\t\tcolor = color.replace('#', '');\r\n\r\n\t\t\tvar arrBuff = new ArrayBuffer(4);\r\n\t\t\tvar vw\t\t= new DataView(arrBuff);\r\n\t\t\tvw.setUint32(0, parseInt(color, 16), false);\r\n\t\t\tvar arrByte = new Uint8Array(arrBuff);\r\n\r\n\t\t\t//\t\treturn arrByte[1] + \",\" + arrByte[2] + \",\" + arrByte[3];\r\n\r\n\t\t\tvalue = (arrByte[1] * 299 + arrByte[2] * 587 + arrByte[3] * 114) / 1000;\r\n\r\n\t\t\tif (value < 128)\r\n\t\t\t{\r\n\t\t\t\tcolorReturn = \"#ffffff\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn colorReturn;\r\n\t}\r\n}\r\n\r\n","import { Injectable, EventEmitter, OnDestroy } from '@angular/core';\r\n\r\nimport { WorkspaceData } from './workspace-data';\r\nimport { CandidatService }\t\tfrom '../services/candidat.service';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class VaultData implements OnDestroy\r\n{\r\n\r\n public vaultEmitter: EventEmitter = new EventEmitter();\r\n\r\n public static rootParentId = 'b1bcd800-1dc9-11b2-8080-808080808080';\r\n\r\n private _concours:\t\t\t\tany[]\t= [];\r\n private _nodesById:\t\t\t\tany\t\t= {};\r\n private _candidatsByElement:\tany\t\t= {};\r\n private _candidats:\t\t\t\tany\t\t= {\r\n all: [],\r\n groups: null\r\n\t}\r\n\r\n\tconstructor(public workspaceDate: WorkspaceData, public candidatService: CandidatService)\r\n\t{\r\n\r\n\t}\r\n\r\n\tngOnDestroy()\r\n\t{\r\n\t\tthis.vaultEmitter.unsubscribe();\r\n }\r\n\r\n\tget concours(): any[]\r\n\t{\r\n\t\treturn this._concours;\r\n\t}\r\n\r\n\r\n\tgetConcourByid(psId: string): any[]\r\n\t{\r\n\r\n\t\tlet aReturn;\r\n\t\tfor (const concour of this._concours)\r\n\t\t{\r\n\t\t\tif (concour.id === psId)\r\n\t\t\t{\r\n\t\t\t\taReturn = concour;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn aReturn;\r\n\t}\r\n\r\n\r\n get candidats():\t\t\tany[] { return this._candidats; }\r\n get candidatsByElement():\tany[] { return this._candidatsByElement; }\r\n\r\n\r\n\r\n\tpublic addConcours(concours: any)\r\n\t{\r\n\t\tif (concours && concours.id && this._nodesById[concours.id] === undefined)\r\n\t\t{\r\n\t\t\tconcours.epreuve\t\t= undefined;\r\n\t\t\tconst epreuveAffected\t= this.workspaceDate.getEpreuve(concours.idEpreuve);\r\n\r\n\t\t\tif (epreuveAffected)\r\n\t\t\t{\r\n\t\t\t\tconcours.epreuve = epreuveAffected;\r\n\t\t\t}\r\n\t\t\tif (!concours.datas)\r\n\t\t\t{\r\n\t\t\t\tconcours.datas = {};\r\n\t\t\t}\r\n\t\t\tif (concours.datas.candidats)\r\n\t\t\t{\r\n\t\t\t\ttry{\r\n\t\t\t\t\tconcours.datas.candidats = JSON.parse(concours.datas.candidats);\r\n\t\t\t\t}\r\n\t\t\t\tcatch(e)\r\n\t\t\t\t{}\r\n\t\t\t}\r\n\t\t\tif (concours.datas.specialTime)\r\n\t\t\t{\r\n\t\t\t\ttry{\r\n\t\t\t\t\tconcours.datas.specialTime = JSON.parse(concours.datas.specialTime);\r\n\t\t\t\t}\r\n\t\t\t\tcatch(e)\r\n\t\t\t\t{}\r\n\t\t\t}\r\n\t\t\telse if (!concours.datas || !concours.datas.candidats)\r\n\t\t\t{\r\n\t\t\t\tconcours.datas.candidats = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis._nodesById[concours.id] = concours;\r\n\r\n\t\t\tif (concours.datas && concours.datas.datePassationSend)\r\n\t\t\t{\r\n\t\t\t\tconcours.passationSend = true;\r\n\r\n\t\t\t\tif (concours.datas.mustUpdate && (concours.datas.mustUpdate === true || concours.datas.mustUpdate === 'true'))\r\n\t\t\t\t{\r\n\t\t\t\t\tconcours.mustUpdate = true;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tconcours.mustUpdate = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._concours.push(concours);\r\n\t\t\tthis._concours = _.sortBy(this._concours, 'creationDate');\r\n\t\t\tthis._concours = this.concours.reverse();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\tpublic getNodeById(id: string)\r\n\t{\r\n\t\tlet result = [];\r\n\r\n\t\tif (this._nodesById[id])\r\n\t\t{\r\n\t\t\tresult = this._nodesById[id];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t\r\n\tpublic updateNode(nodeId: string, datasUpdated: any)\r\n\t{\r\n\t\tif (this._nodesById && this._nodesById[nodeId])\r\n\t\t{\r\n\r\n\t\t\tfor (const key in datasUpdated)\r\n\t\t\t{\r\n\t\t\t\tswitch (key)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase 'libelle':\r\n\t\t\t\t\t\tthis._nodesById[nodeId].libelle = datasUpdated[key];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'passationSend':\r\n\t\t\t\t\t\tthis._nodesById[nodeId].passationSend = datasUpdated[key];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'mustUpdate':\r\n\t\t\t\t\t\tthis._nodesById[nodeId].mustUpdate = datasUpdated[key];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'passwordSubjects':\r\n\t\t\t\t\t\tthis._nodesById[nodeId].passwordSubjects = datasUpdated[key];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'datePassationSend':\r\n\t\t\t\t\t\tthis._nodesById[nodeId].datas.datePassationSend = datasUpdated[key];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'update_date':\r\n\t\t\t\t\t\tthis._nodesById[nodeId].updateDate = datasUpdated[key];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'idEpreuve':\r\n\t\t\t\t\t\tthis._nodesById[nodeId].idEpreuve = datasUpdated[key];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'datas':\r\n\t\t\t\t\t\tthis._nodesById[nodeId].datas = datasUpdated[key];\r\n\t\t\t\t\tcase '+datas':\r\n\t\t\t\t\t\tfor (let keyData in datasUpdated[key])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (datasUpdated[key][keyData])\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (keyData === 'baremesMain' || keyData === 'baremesSec')\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (typeof datasUpdated[key][keyData] === 'string')\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis._nodesById[nodeId].datas[keyData] = datasUpdated[key][keyData];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis._nodesById[nodeId].datas[keyData] = JSON.stringify(datasUpdated[key][keyData]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (keyData === 'mustUpdate')\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis._nodesById[nodeId].mustUpdate = datasUpdated[key][keyData];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis._nodesById[nodeId].datas[keyData] = datasUpdated[key][keyData];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic logout()\r\n\t{\r\n\t\tthis._concours \t\t\t\t= [];\r\n\t\tthis._nodesById \t\t\t= {};\r\n\t\tthis._candidatsByElement \t= {};\r\n\t\tthis._candidats \t\t\t=\r\n\t\t{\r\n\t\t\tall: \t[],\r\n\t\t\tgroups: null\r\n\t\t};\r\n\t}\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { GenericData }\t\tfrom './generic-data';\r\n\r\nimport { ChatData }\tfrom './chat-data';\r\nimport { UserData }\tfrom './user-data';\r\n\r\nimport { Router }\tfrom '@angular/router';\r\n\r\nimport { Etablissement }\tfrom '../classes/etablissement.class';\r\nimport { Session }\t\t\tfrom '../classes/session.class';\r\nimport { Examen }\t\t\tfrom '../classes/examen.class';\r\nimport { Matiere }\t\t\tfrom '../classes/matiere.class';\r\nimport { Sujet }\t\t\tfrom '../classes/sujet.class';\r\nimport { Task }\t\t\t\tfrom '../classes/task.class';\r\nimport { File as EFile }\tfrom '../classes/file.class';\r\nimport * as _\t\t\t\tfrom 'underscore';\r\n\r\n// import { Storage } from '@ionic/storage';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * Class UserData\r\n */\r\nexport class WorkspaceData extends GenericData\r\n{\r\n\r\n\t// Selection user\r\n\tprivate _selectedEtablissement:\tEtablissement\t= null;\r\n\tprivate _selectedSession:\t\tSession\t\t\t= null;\r\n\tprivate _selectedExamen:\t\tExamen\t\t\t= null;\r\n\tprivate _selectedMatiere:\t\tMatiere\t\t\t= null;\r\n\tprivate _selectedSujet:\t\t\tSujet\t\t\t= null;\r\n\r\n\r\n\tprivate _selectedHomeEtablissement:\tEtablissement\t= null;\r\n\tprivate _selectedHomeSession:\t\tSession\t\t\t= null;\r\n\tprivate _selectedHomeExamen:\t\tExamen\t\t\t= null;\r\n\tprivate _selectedHomeMatiere:\t\tMatiere\t\t\t= null;\r\n\tprivate _selectedHomeSujet:\t\t\tSujet\t\t\t= null;\r\n\r\n\r\n\tprivate _selectedTask:\t\t\tTask\t\t\t= null;\r\n\tprivate _selectedElement:\t\tany\t\t\t\t= null;\r\n\r\n\t// Les datas\r\n\tprivate _etablissements:\t\t\tEtablissement[] = [];\r\n\tprivate _selectedSegment:\t\t\tstring\t\t\t= null;\r\n\tprivate _epreuveByWorkflowSelected:\tany[]\t\t\t= [];\r\n\r\n\r\n\t/**\r\n\t * Stockage des taches récupérées dans l'appli\r\n\t */\r\n\tprivate _taskDatas:\t\t\t\t\tany\t\t= {};\r\n\tprivate _taskHomeAdmin:\t\t\t\tTask[]\t= [];\r\n\tprivate _taskHomeAdminSave:\t\t\tTask[]\t= [];\r\n\tprivate _taskHomeAdminToValid:\t\tTask[]\t= [];\r\n\tprivate _taskHomeAdminToValidSave:\tTask[]\t= [];\r\n\tprivate _taskHomeAdminExpired:\t\tTask[]\t= [];\r\n\tprivate _taskHomeAdminExpiredSave:\tTask[]\t= [];\r\n\tprivate _epreuveHomeAdmin:\t\t\tany[]\t= [];\r\n\tprivate _epreuveHomeAdminSave:\t\tany[]\t= [];\r\n\tprivate _taskHomeMine:\t\t\t\tTask[]\t= [];\r\n\tprivate _taskHomeMineSave:\t\t\tTask[]\t= [];\r\n\tprivate _globalTask:\t\t\t\tTask[]\t= [];\r\n\r\n\tprivate _historicFromElement: any = {};\r\n\r\n\tprivate _isInfoTaskMineOk:\tboolean\t= false;\r\n\tprivate _isInfoTaskAdminOk:\tboolean\t= false;\r\n\tprivate _isInfoNodeOk:\t\tboolean\t= false;\r\n\tprivate _isInfoSubjectOk:\tboolean\t= false;\r\n\tprivate _isHomeEpreuveOk:\tboolean\t= false;\r\n\tpublic selectedItems:\t\tany[]\t= [];\r\n\r\n\tpublic goToSubject:\t\t\tboolean\t= false;\r\n\r\n\tprivate _statsNode:\t\tany;\r\n\tprivate _statsNode2:\tany;\r\n\tprivate _statsNodeEpr:\tany;\r\n\r\n\tprivate _openedItemsBySearch: any[] = [];\r\n\r\n\tprivate _sujetKey:\tany;\r\n\r\n\tpublic workspaceEmitter: EventEmitter = new EventEmitter();\r\n\r\n\tprivate _fileForEdit: any;\r\n\r\n\tpublic urlCreator = window.URL;\r\n\tpublic taskData: any;\r\n\r\n\tpublic mbisWorkspaceLoading: boolean = false;\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(\r\n\t\t\t\tpublic chatData:\tChatData,\r\n\t\t\t\tpublic router:\t\tRouter,\r\n\t\t\t\tpublic userData:\tUserData\r\n\t\t\t\t)\r\n\t{\r\n\t\tsuper();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param taskData\r\n\t */\r\n\tsetTaskData(taskData: any)\r\n\t{\r\n\t\tthis.taskData = taskData;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget fileForEdit() { return this._fileForEdit; }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedEtablissement(): Etablissement\r\n\t{\r\n\t\tlet oReturn = this._selectedEtablissement;\r\n\t\tif (this._selectedEtablissement === null)\r\n\t\t{\r\n\t\t\tlet etablissementId\t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedEtablissementId');\r\n\t\t\toReturn\t\t\t\t\t\t= this.getEtablissement(etablissementId);\r\n\t\t\tthis._selectedEtablissement = oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedSession():\t\t\tSession\r\n\t{\r\n\t\tlet oReturn = this._selectedSession;\r\n\t\tif (this._selectedSession === null)\r\n\t\t{\r\n\t\t\tlet sessionId \t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedSessionId');\r\n\t\t\toReturn \t\t\t\t= this.getSession(sessionId);\r\n\t\t\tthis._selectedSession \t= oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedExamen():\t\t\tExamen\r\n\t{\r\n\t\tlet oReturn = this._selectedExamen;\r\n\t\tif (this._selectedExamen === null)\r\n\t\t{\r\n\t\t\tlet examenId \t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedExamenId');\r\n\t\t\toReturn \t\t\t\t= this.getExamen(examenId);\r\n\t\t\tthis._selectedExamen \t= oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedMatiere():\t\t\tMatiere\r\n\t{\r\n\t\tlet oReturn = this._selectedMatiere;\r\n\t\tif (this._selectedMatiere === null)\r\n\t\t{\r\n\t\t\tlet matiereId \t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedMatiereId');\r\n\t\t\toReturn \t\t\t\t= this.getEpreuve(matiereId);\r\n\t\t\tthis._selectedMatiere \t= oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedSujet():\t\t\tSujet\r\n\t{\r\n\t\tlet oReturn = this._selectedSujet;\r\n\t\tif (this._selectedSujet === null)\r\n\t\t{\r\n\t\t\tlet subjectId \t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedSubjectId');\r\n\t\t\toReturn \t\t\t= this.getSujet(subjectId);\r\n\t\t\tthis._selectedSujet = oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedTask():\t\t\t Task\r\n\t{\r\n\t\tlet oReturn = this._selectedTask;\r\n\t\tif (this._selectedTask === null)\r\n\t\t{\r\n\t\t\tlet taskId \t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedTaskId');\r\n\t\t\toReturn \t\t\t= this.taskData.getTaskById(taskId);\r\n\t\t\tthis._selectedTask \t= oReturn;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedElement():\t\t\tany\r\n\t{\r\n\t\tlet oReturn = this._selectedElement;\r\n\t\tif (this._selectedElement === null)\r\n\t\t{\r\n\t\t\tlet elementId \t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedElementId');\r\n\t\t\toReturn \t\t\t\t= this.getTreeElement(elementId);\r\n\t\t\tthis._selectedElement \t= oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedSegment():\t\t\tstring\t\t\t{ return this._selectedSegment; }\r\n\tget taskDatas()\t\t\t\t\t\t\t\t\t{ return this._taskDatas; }\r\n\r\n\tget sujetKey()\r\n\t{\r\n\t\tlet oReturn = this._sujetKey;\r\n\t\tif (this._sujetKey === null)\r\n\t\t{\r\n\t\t\toReturn = this.getStorage(this.userData.mail + '::' + this.userData.account + '::sujetKey');\r\n\t\t\tthis._sujetKey = oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tget epreuveByWorkflowSelected()\t\t\t{ return this._epreuveByWorkflowSelected; }\r\n\tget isHomeEpreuveOk()\t\t\t\t\t{ return this._isHomeEpreuveOk; }\r\n\tset isHomeEpreuveOk(isHomeEpreuveOk)\t{ this._isHomeEpreuveOk = isHomeEpreuveOk; }\r\n\r\n\r\n\tget statsNode()\r\n\t{\r\n\t\treturn this._statsNode;\r\n\t}\r\n\r\n\tget statsNodeEpr()\r\n\t{\r\n\t\treturn this._statsNodeEpr;\r\n\t}\r\n\r\n\tget statsNode2()\r\n\t{\r\n\t\treturn this._statsNode2;\r\n\t}\r\n\r\n\tsetEpr(statsNode: any)\r\n\t{\r\n\t\tthis._statsNode = [];\r\n\t\tfor (let key in statsNode)\r\n\t\t{\r\n\t\t\tthis._statsNode.push(statsNode[key]);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tset statsNodeEpr(statsNode)\r\n\t{\r\n\t\tthis._statsNodeEpr = [];\r\n\r\n\t\tfor (let key in statsNode)\r\n\t\t{\r\n\t\t\tlet formatedStatNode: any = {};\r\n\r\n\t\t\t//On récupère les propriétés existantes\r\n\t\t\tfor (let keyStat in statsNode[key])\r\n\t\t\t{\r\n\t\t\t\tformatedStatNode[keyStat] = statsNode[key][keyStat];\r\n\t\t\t}\r\n\r\n\t\t\tformatedStatNode.nomeEpreuve\t= '';\r\n\t\t\tformatedStatNode.nomExamen\t\t= '';\r\n\t\t\tformatedStatNode.nomUser\t\t= '';\r\n\t\t\tformatedStatNode.sCount\t\t\t= '';\r\n\t\t\tformatedStatNode.echeanceLib\t= '';\r\n\t\t\tformatedStatNode.isPrincipal\t= false;\r\n\t\t\tformatedStatNode.isSecondary\t= false;\r\n\t\t\tformatedStatNode.isAccepted\t\t= false;\r\n\r\n\r\n\t\t\tformatedStatNode.sujetLib\t= '';\r\n\r\n\t\t\tlet oEpreuve;\r\n\t\t\t// Récupération du nom de l'épreuve\r\n\t\t\tif (statsNode[key].idEpreuve !== '')\r\n\t\t\t{\r\n\t\t\t\toEpreuve = this.getEpreuve(statsNode[key].idEpreuve);\r\n\r\n\t\t\t\tif (oEpreuve)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomEpreuve = oEpreuve.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(statsNode[key].status)\r\n\t\t\t{\r\n\t\t\t\tswitch (statsNode[key].status)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase 'new':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Non assigné';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'todo':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Assigné';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'inprogress':\r\n\t\t\t\t\t\tformatedStatNode.status = 'En cours';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'review':\r\n\t\t\t\t\t\tformatedStatNode.status = 'A valider';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'done':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Terminé';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (statsNode[key].nomUser === \"undefined\")\r\n\t\t\t{\r\n\t\t\t\tformatedStatNode.nomUser = ' - ';\r\n\t\t\t}\r\n\r\n\t\t\t// Nom de l'examen\r\n\t\t\tif (statsNode[key].idExamen !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oExamen = this.getExamen(statsNode[key].idExamen);\r\n\t\t\t\tif (oExamen !== null)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomExamen = oExamen.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Nom de l'examen\r\n\t\t\tif (statsNode[key].echeance !== '')\r\n\t\t\t{\r\n\t\t\t\tlet date = new Date(statsNode[key].echeance);\r\n\t\t\t\tformatedStatNode.echeanceLib = date.toLocaleDateString();\r\n\t\t\t}\r\n\r\n\t\t\t// Mise en forme des infos utilisateur\r\n\t\t\tif (statsNode[key].assigned_to !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oUser = this.chatData.getUser(statsNode[key].assigned_to);\r\n\t\t\t\tif (oUser)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (oUser.nom !== '' && oUser.nom !== undefined)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.nom + ' ';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (oUser.prenom !== '' && oUser.prenom !== undefined)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.prenom + ' ';\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Si on a rien on met le mail\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomUser = 'utilisateur inconnu';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (oUser)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (statsNode[key].nomUser === '')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomUser = 'utilisateur inconnu';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet oTask;\r\n\t\t\t// Mise en forme info des taches\r\n\r\n\r\n\t\t\tif (statsNode[key].idTask !== '')\r\n\t\t\t{\r\n\t\t\t\toTask = this._globalTask[statsNode[key].idTask];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif (statsNode[key].count !== '')\r\n\t\t\t{\r\n\t\t\t\tlet sCount = [];\r\n\t\t\t\tlet isFind = false;\r\n\r\n\t\t\t\tfor (let key2 in statsNode[key].count)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (key2 === statsNode[key].typeT)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tisFind \t\t\t= true;\r\n\t\t\t\t\t\tlet txtEtape \t= key2;\r\n\r\n\t\t\t\t\t\tif (oEpreuve && oEpreuve.scenario && oEpreuve.scenario.steps)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet step = _.find(oEpreuve.scenario.steps, (step: any) => { return step.id.toString() === key2; });\r\n\r\n\t\t\t\t\t\t\tif (step)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttxtEtape = step.name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (Number(statsNode[key].count[key2]) < 2)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsCount.push(txtEtape);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsCount.push( txtEtape + '(' + statsNode[key].count[key2] + ')');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(!isFind)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet txtEtape \t= 'Création terminée';\r\n\t\t\t\t\tsCount \t\t\t= [];\r\n\r\n\t\t\t\t\tsCount.push(txtEtape);\r\n\t\t\t\t}\r\n\t\t\t\tformatedStatNode.sCount = sCount;\r\n\t\t\t}\r\n\r\n\t\t\tif(statsNode[key].idSujet !== '')\r\n\t\t\t{\r\n\r\n\t\t\t\tlet oSujet = this.getSujet(statsNode[key].idSujet);\r\n\t\t\t\tif (oSujet)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.sujetLib = oSujet.name;\r\n\t\t\t\t\tif (oSujet.datas && oSujet.datas.etat && !formatedStatNode.ps)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.ps = oSujet.datas.etat;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._statsNodeEpr.push(formatedStatNode);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\r\n\t/**\r\n\t * LEs node sauf epreuve\r\n\t */\r\n\tset statsNode(statsNode)\r\n\t{\r\n\t\tthis._statsNode = [];\r\n\t\tfor (let key in statsNode)\r\n\t\t{\r\n\t\t\tlet formatedStatNode: any = {};\r\n\r\n\t\t\t//On récupère les propriétés existantes\r\n\t\t\tfor (let keyStat in statsNode[key])\r\n\t\t\t{\r\n\t\t\t\tformatedStatNode[keyStat] = statsNode[key][keyStat];\r\n\t\t\t}\r\n\r\n\t\t\tformatedStatNode.nomeEpreuve\t= '';\r\n\t\t\tformatedStatNode.nomExamen\t\t= '';\r\n\t\t\tformatedStatNode.nomEtab\t\t= '';\r\n\t\t\tformatedStatNode.nomSession\t\t= '';\r\n\t\t\tformatedStatNode.nomUser\t\t= '';\r\n\t\t\tformatedStatNode.sCount\t\t\t= '';\r\n\t\t\tformatedStatNode.echeanceLib\t= '';\r\n\t\t\tformatedStatNode.isPrincipal\t= false;\r\n\t\t\tformatedStatNode.isSecondary\t= false;\r\n\t\t\tformatedStatNode.isAccepted\t\t= false;\r\n\t\t\tformatedStatNode.sujetLib\t\t= '';\r\n\r\n\t\t\tlet oEpreuve: Matiere;\r\n\r\n\t\t\t// Mise en forme du status\r\n\t\t\tif(statsNode[key].status)\r\n\t\t\t{\r\n\t\t\t\tswitch (statsNode[key].status)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase 'new':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Non assigné';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'todo':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Assigné';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'inprogress':\r\n\t\t\t\t\t\tformatedStatNode.status = 'En cours';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'review':\r\n\t\t\t\t\t\tformatedStatNode.status = 'A valider';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'done':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Terminé';\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// nom de l'user\r\n\t\t\tif (statsNode[key].nomUser === \"undefined\")\r\n\t\t\t{\r\n\t\t\t\tformatedStatNode.nomUser = ' - ';\r\n\t\t\t}\r\n\r\n\t\t\tlet oEpr = this.getEpreuve(key);\r\n\t\t\tif (oEpr)\r\n\t\t\t{\r\n\t\t\t\tformatedStatNode.nomEpreuve = oEpr.name;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let key2 of statsNode[key].parents)\r\n\t\t\t{\r\n\t\t\t\tlet keyArray = key2.split('::');\r\n\r\n\t\t\t\tswitch (keyArray[0])\r\n\t\t\t\t{\r\n\t\t\t\t\tcase '*etab':\r\n\t\t\t\t\t\tlet oEtab = this.getEtablissement(keyArray[1]);\r\n\t\t\t\t\t\tif (oEtab)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tformatedStatNode.nomEtab = oEtab.name;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '*exam':\r\n\t\t\t\t\t\tlet oExam = this.getExamen(keyArray[1]);\r\n\t\t\t\t\t\tif (oExam)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tformatedStatNode.nomExamen = oExam.name;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase '*epr':\r\n\t\t\t\t\t\tlet oEpr = this.getEpreuve(key);\r\n\t\t\t\t\t\tif (oEpr)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tformatedStatNode.nomEpreuve = oEpr.name;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase '*sess':\r\n\t\t\t\t\t\tlet oSess = this.getSession(keyArray[1]);\r\n\t\t\t\t\t\tif (oSess)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tformatedStatNode.nomSession = oSess.name;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Mise en forme des infos utilisateur\r\n\t\t\tif (statsNode[key].assigned_to !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oUser = this.chatData.getUser(statsNode[key].assigned_to);\r\n\t\t\t\tif (oUser)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (oUser.nom !== '' && oUser.nom !== undefined)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.nom + ' ';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (oUser.prenom !== '' && oUser.prenom !== undefined)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.prenom + ' ';\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Si on a rien on met le mail\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomUser = 'utilisateur inconnu';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (oUser)\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tif (statsNode[key].nomUser === '')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomUser = 'utilisateur inconnu';\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlet oTask;\r\n\t\t\t// Mise en forme info des taches\r\n\t\t\tif (statsNode[key].idTask !== '')\r\n\t\t\t{\r\n\t\t\t\toTask = this._globalTask[statsNode[key].idTask];\r\n\t\t\t}\r\n\r\n\t\t\tif (statsNode[key].count !== '')\r\n\t\t\t{\r\n\t\t\t\tlet sCount = [];\r\n\t\t\t\tfor (let key2 in statsNode[key].count)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (key2 === statsNode[key].typeT)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet txtEtape = key2;\r\n\r\n\t\t\t\t\t\tif (oEpreuve && oEpreuve.scenario && oEpreuve.scenario.steps)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet step = _.find(oEpreuve.scenario.steps, (step: any) => { return step.id.toString() === key2; });\r\n\r\n\t\t\t\t\t\t\tif (step)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttxtEtape = step.name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (Number(statsNode[key].count[key2]) < 2)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsCount.push(txtEtape);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsCount.push( txtEtape + '(' + statsNode[key].count[key2] + ')');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tformatedStatNode.sCount = sCount;\r\n\t\t\t}\r\n\r\n\t\t\tif(statsNode[key].idSujet !== '')\r\n\t\t\t{\r\n\r\n\t\t\t\tlet oSujet = this.getSujet(statsNode[key].idSujet);\r\n\t\t\t\tif (oSujet)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.sujetLib = oSujet.name;\r\n\t\t\t\t\tif (oSujet.datas && oSujet.datas.etat && !formatedStatNode.ps)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.ps = oSujet.datas.etat;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._statsNode.push(formatedStatNode);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tset statsNode2(statsNode)\r\n\t{\r\n\r\n\t\tthis._statsNode2 = [];\r\n\t\tfor (let key in statsNode)\r\n\t\t{\r\n\t\t\tlet formatedStatNode: any = {};\r\n\r\n\t\t\t//On récupère les propriétés existantes\r\n\t\t\tfor (let keyStat in statsNode[key])\r\n\t\t\t{\r\n\t\t\t\tformatedStatNode[keyStat] = statsNode[key][keyStat];\r\n\t\t\t}\r\n\r\n\t\t\tformatedStatNode.nomeEpreuve\t= '';\r\n\t\t\tformatedStatNode.nomExamen\t\t= '';\r\n\t\t\tformatedStatNode.nomSession\t\t= '';\r\n\t\t\tformatedStatNode.nomEtab\t\t= '';\r\n\t\t\tformatedStatNode.nomUser\t\t= '';\r\n\t\t\tformatedStatNode.sCount\t\t\t= '';\r\n\t\t\tformatedStatNode.echeanceLib\t= '';\r\n\t\t\tformatedStatNode.isPrincipal\t= false;\r\n\t\t\tformatedStatNode.isSecondary\t= false;\r\n\t\t\tformatedStatNode.isAccepted\t\t= false;\r\n\r\n\r\n\t\t\tformatedStatNode.sujetLib\t= '';\r\n\r\n\t\t\tlet oEpreuve;\r\n\t\t\t// Récupération du nom de l'épreuve\r\n\t\t\tif (statsNode[key].idEpreuve !== '')\r\n\t\t\t{\r\n\t\t\t\toEpreuve = this.getEpreuve(statsNode[key].idEpreuve);\r\n\r\n\t\t\t\tif (oEpreuve)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomEpreuve = oEpreuve.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Nom de l'examen\r\n\t\t\tif (statsNode[key].idExamen !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oExamen = this.getExamen(statsNode[key].idExamen);\r\n\r\n\t\t\t\tif (oExamen)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomExamen = oExamen.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Nom de l'examen\r\n\t\t\tif (statsNode[key].idSession !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oSession = this.getSession(statsNode[key].idSession);\r\n\r\n\t\t\t\tif (oSession)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomSession = oSession.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Nom de l'examen\r\n\t\t\tif (statsNode[key].idEtablissement !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oEtab = this.getExamen(statsNode[key].idEtablissement);\r\n\r\n\t\t\t\tif (oEtab)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.nomEtab = oEtab.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Nom de l'examen\r\n\t\t\tif (statsNode[key].echeance !== '')\r\n\t\t\t{\r\n\t\t\t\tlet date = new Date(statsNode[key].echeance);\r\n\t\t\t\tformatedStatNode.echeanceLib = date.toLocaleDateString();\r\n\t\t\t}\r\n\t\t\tif (statsNode[key].status)\r\n\t\t\t{\r\n\t\t\t\tswitch (statsNode[key].status)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase 'new':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Non assignée';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'todo':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Assignée';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'inprogress':\r\n\t\t\t\t\t\tformatedStatNode.status = 'En cours';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'review':\r\n\t\t\t\t\t\tformatedStatNode.status = 'A valider';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'done':\r\n\t\t\t\t\t\tformatedStatNode.status = 'Terminé';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (statsNode[key].nomUser === \"undefined\")\r\n\t\t\t{\r\n\t\t\t\tformatedStatNode.nomUser = ' - ';\r\n\t\t\t}\r\n\r\n\t\t\t// Mise en forme des infos utilisateur\r\n\t\t\tif (statsNode[key].assigned_to !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oUser = this.chatData.getUser(statsNode[key].assigned_to);\r\n\r\n\t\t\t\tif (oUser)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (oUser.nom !== '' && oUser.nom !== undefined)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.nom + ' ';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (oUser.prenom !== '' && oUser.prenom !== undefined)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.prenom + ' ';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Si on a rien on met le mail\r\n\t\t\t\t\tif (statsNode[key].nomUser === '')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformatedStatNode.nomUser += oUser.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\t// Mise en forme info des taches\r\n\t\t\tif (statsNode[key].idTask !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oTask = this._globalTask[statsNode[key].idTask];\r\n\t\t\t}\r\n\r\n\t\t\tif (statsNode[key].count !== '')\r\n\t\t\t{\r\n\t\t\t\tlet sCount = [];\r\n\t\t\t\tfor (let key2 in statsNode[key].count)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (key2 === statsNode[key].typeT)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet name \t\t= '';\r\n\t\t\t\t\t\tlet txtEtape \t= key2;\r\n\r\n\t\t\t\t\t\tif (oEpreuve && oEpreuve.scenario && oEpreuve.scenario.steps)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet step = _.find(oEpreuve.scenario.steps, (step: any) => { return step.id.toString() === key2; });\r\n\r\n\t\t\t\t\t\t\tif (step)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttxtEtape = step.name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(statsNode[key].count[key2] > 1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsCount.push( txtEtape + '(' + statsNode[key].count[key2] + ')');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsCount.push(txtEtape);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tformatedStatNode.sCount = sCount;\r\n\t\t\t}\r\n\r\n\t\t\tif(statsNode[key].idSujet !== '')\r\n\t\t\t{\r\n\t\t\t\tlet oSujet = this.getSujet(statsNode[key].idSujet);\r\n\t\t\t\tif (oSujet)\r\n\t\t\t\t{\r\n\t\t\t\t\tformatedStatNode.sujetLib = oSujet.name;\r\n\t\t\t\t\tif (oSujet.datas && oSujet.datas.etat)\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tformatedStatNode.ps = oSujet.datas.etat;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._statsNode2.push(formatedStatNode);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tset fileForEdit(fileForEdit) { this._fileForEdit = fileForEdit;}\r\n\r\n\r\n\tset selectedEtablissement(selectedEtablissement)\r\n\t{\r\n\t\tif (selectedEtablissement)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedEtablissementId', selectedEtablissement.id);\r\n\t\t}\r\n\t\tthis._selectedEtablissement\t= selectedEtablissement;\r\n\t}\r\n\r\n\r\n\tset selectedSession(selectedSession)\r\n\t{\r\n\t\tif (selectedSession)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedSessionId', selectedSession.id);\r\n\t\t}\r\n\t\tthis._selectedSession = selectedSession;\r\n\t}\r\n\r\n\r\n\tset selectedExamen(selectedExamen)\r\n\t{\r\n\t\tif (selectedExamen)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedExamenId', selectedExamen.id);\r\n\t\t}\r\n\t\tthis._selectedExamen = selectedExamen;\r\n\t}\r\n\r\n\r\n\tset selectedMatiere(selectedMatiere)\r\n\t{\r\n\t\tif (selectedMatiere)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedMatiereId', selectedMatiere.id);\r\n\t\t}\r\n\t\tthis._selectedMatiere = selectedMatiere;\r\n\t}\r\n\r\n\r\n\tset selectedSujet(selectedSujet)\r\n\t{\r\n\t\tif (selectedSujet)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedSubjectId', selectedSujet.id);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedSubjectId');\r\n\t\t}\r\n\t\tthis._selectedSujet\t= selectedSujet;\r\n\t}\r\n\r\n\r\n\tset selectedTask(selectedTask)\r\n\t{\r\n\t\tif (selectedTask)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedTaskId', selectedTask.id);\r\n\t\t}\r\n\t\tthis._selectedTask = selectedTask;\r\n\t}\r\n\r\n\r\n\tset sujetKey(sujetKey)\r\n\t{\r\n\t\tif (sujetKey)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::sujetKey', sujetKey);\r\n\t\t}\r\n\t\tthis._sujetKey = sujetKey;\r\n\t}\r\n\r\n\r\n\tset selectedElement(selectedElement)\r\n\t{\r\n\t\tif (selectedElement)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedElementId', selectedElement.id);\r\n\t\t}\r\n\t\tthis._selectedElement = selectedElement;\r\n\t}\r\n\r\n\r\n\tset etablissements(etablissements)\r\n\t{\r\n\t\tthis._etablissements = etablissements;\r\n\t}\r\n\r\n\r\n\tresetSelectedEtablissement()\r\n\t{\r\n\t\tthis._selectedEtablissement = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedEtablissementId');\r\n\t}\r\n\r\n\r\n\tresetSelectedSession()\r\n\t{\r\n\t\tthis._selectedSession = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedSessionId');\r\n\t}\r\n\r\n\r\n\tresetSelectedExamen()\r\n\t{\r\n\t\tthis._selectedExamen = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedExamenId');\r\n\t}\r\n\r\n\r\n\tresetSelectedMatiere()\r\n\t{\r\n\t\tthis._selectedMatiere = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedMatiereId');\r\n\t}\r\n\r\n\r\n\tresetSelectedSujet()\r\n\t{\r\n\t\tthis._selectedSujet = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedSubjectId');\r\n\t}\r\n\r\n\r\n\tset selectedSegment(selectedSegment)\t\t\t\t{ this._selectedSegment\t\t\t= selectedSegment;}\r\n\tset taskDatas(taskDatas)\t\t\t\t\t\t\t{ this._taskDatas\t\t\t\t= taskDatas; }\r\n\tset taskHomeAdmin(taskHomeAdmin)\t\t\t\t\t{ this._taskHomeAdmin\t\t\t= taskHomeAdmin; }\r\n\tset taskHomeAdminToValid(taskHomeAdminToValid: any)\t{ this._taskHomeAdminToValid\t= taskHomeAdminToValid; }\r\n\tset taskHomeAdminExpired(taskHomeAdminExpired)\t\t{ this._taskHomeAdminExpired\t= taskHomeAdminExpired; }\r\n\tset taskHomeMine(taskHomeMine)\t\t\t\t\t\t{ this._taskHomeMine\t\t\t= taskHomeMine; }\r\n\tset epreuveHomeAdmin(epreuveHomeAdmin)\t\t\t\t{ this._epreuveHomeAdmin\t\t= epreuveHomeAdmin; }\r\n\tset globalTask(globalTask)\t\t\t\t\t\t\t{ this._globalTask\t\t\t\t= globalTask; }\r\n\r\n\r\n\t/**\r\n\t * Quand on a les data, si les 2 sont ok on precess, a la fin du process haveDatachat = true;\r\n\t */\r\n\tset isInfoTaskMineOk(isOk: any)\r\n\t{\r\n\t\tthis._isInfoTaskMineOk = isOk;\r\n\t\tif ((this._isInfoTaskMineOk === true || this._isInfoTaskAdminOk === true) && this._isInfoNodeOk === true && this._isInfoSubjectOk === true)\r\n\t\t{\r\n\t\t\tthis.processData();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Quand on a les data, si les 2 sont ok on precess, a la fin du process haveDatachat = true;\r\n\t */\r\n\tset isInfoTaskAdminOk(isOk: any)\r\n\t{\r\n\t\tthis._isInfoTaskAdminOk = isOk;\r\n\t\tif ((this._isInfoTaskMineOk === true || this._isInfoTaskAdminOk === true) && this._isInfoNodeOk === true && this._isInfoSubjectOk === true)\r\n\t\t{\r\n\t\t\tthis.processData();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Quand on a les data, si les 2 sont ok on precess, a la fin du process haveDatachat = true;\r\n\t */\r\n\tset isInfoNodeOk(isOk: any)\r\n\t{\r\n\t\tthis._isInfoNodeOk = isOk;\r\n\t\tif ((this._isInfoTaskMineOk === true || this._isInfoTaskAdminOk === true) && this._isInfoNodeOk === true && this._isInfoSubjectOk === true)\r\n\t\t{\r\n\t\t\tthis.processData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Quand les sujets sont chargés on peux mettre à jour les informations des taches\r\n\t * avec les infos des sujets\r\n\t */\r\n\tset isInfoSubjectOk(isOk: any)\r\n\t{\r\n\t\tthis._isInfoSubjectOk = isOk;\r\n\t\tif ((this._isInfoTaskMineOk === true || this._isInfoTaskAdminOk === true) && this._isInfoNodeOk === true && this._isInfoSubjectOk === true)\r\n\t\t{\r\n\t\t\tthis.processData();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tset historic(historic)\r\n\t{\r\n\t\tthis._historicFromElement = historic;\r\n\t}\r\n\r\n\r\n\tget globalTask(): any\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._globalTask)\r\n\t\t{\r\n\t\t\t// On retourne sous cette forme pour que ça soit plus simple de parser coté html\r\n\t\t\toReturn.push(this._globalTask[key]);\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tget historic()\r\n\t{\r\n\t\treturn this._historicFromElement;\r\n\t}\r\n\r\n\r\n\t// ---------------------------------------------------------------------------------------------------------------------\r\n\t// Spécifique\r\n\t// ---------------------------------------------------------------------------------------------------------------------\r\n\tpublic setTaskHomeAdmin(id: any, data: any)\r\n\t{\r\n\t\tthis._taskHomeAdmin[id] = data;\r\n\t}\r\n\r\n\tpublic setTaskHomeExpired(id: any, data: any)\r\n\t{\r\n\t\tthis._taskHomeAdminExpired[id] = data;\r\n\t}\r\n\r\n\r\n\tpublic setTaskHomeAdminToValid(id: any, data: any)\r\n\t{\r\n\t\tthis._taskHomeAdminToValid[id] = data;\r\n\t}\r\n\r\n\r\n\tpublic setTaskHomeAdminExpired(id: any, data: any)\r\n\t{\r\n\t\tthis._taskHomeAdminExpired[id] = data;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t * @param data\r\n\t */\r\n\tpublic setEpreuveHomeAdmin(id: any, data: any)\r\n\t{\r\n\t\tlet epName\t\t\t= '';\r\n\t\tlet ariane\t\t\t= '';\r\n\t\tlet etabName\t\t= '';\r\n\t\tlet sessName\t\t= '';\r\n\t\tlet examName\t\t= '';\r\n\r\n\t\tlet oEpreuve\t= this.getEpreuve( data.id);\r\n\t\tif (oEpreuve)\r\n\t\t{\r\n\t\t\tdata.name = oEpreuve.name;\r\n\t\t}\r\n\r\n\t\tfor (let key of data.parents)\r\n\t\t{\r\n\t\t\tlet keyArray = key.split('::');\r\n\r\n\t\t\tswitch (keyArray[0])\r\n\t\t\t{\r\n\t\t\t\tcase '*etab':\r\n\t\t\t\t\tlet oEtab = this.getEtablissement(keyArray[1]);\r\n\t\t\t\t\tif (oEtab)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tetabName = oEtab.name;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase '*exam':\r\n\t\t\t\t\tlet oExam = this.getExamen(keyArray[1]);\r\n\t\t\t\t\tif (oExam)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\texamName = oExam.name;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase '*sess':\r\n\t\t\t\t\tlet oSess = this.getSession(keyArray[1]);\r\n\t\t\t\t\tif (oSess)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsessName = oSess.name;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tariane\t\t= etabName + '/' + sessName + '/' + examName;\r\n\t\tdata.ariane = ariane;\r\n\r\n\t\tthis._epreuveHomeAdmin[id]\t\t= data;\r\n\t\tthis._epreuveHomeAdminSave[id]\t= data;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param pnIndice\r\n\t */\r\n\tremoveTaskToValid(pnIndice: any)\r\n\t{\r\n\t\tlet aArray:any[]\t\t\t= [];\r\n\t\tlet nIndice\t\t\t\t\t= 0;\r\n//\t\tthis._taskHomeAdminExpired\t= [];\r\n\r\n\t\tfor (let key in this._taskHomeAdminToValid)\r\n\t\t{\r\n\t\t\tif (nIndice !== pnIndice)\r\n\t\t\t{\r\n\t\t\t\taArray[key] = this._taskHomeAdminToValid[key];\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._taskHomeAdminToValid = aArray;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param pnIndice\r\n\t */\r\n\tremoveTaskExpired(pnIndice: any)\r\n\t{\r\n\r\n\t\tlet aArray:any[]\t\t\t= [];\r\n\t\tlet nIndice\t\t\t\t\t= 0;\r\n//\t\tthis._taskHomeAdminExpired\t= [];\r\n\r\n\t\tfor (let key in this._taskHomeAdminExpired)\r\n\t\t{\r\n\t\t\tif (nIndice !== pnIndice)\r\n\t\t\t{\r\n\t\t\t\taArray[key] = this._taskHomeAdminExpired[key];\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._taskHomeAdminExpired = aArray;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param pnIndice\r\n\t */\r\n\tremoveTaskToMine(pnIndice: any)\r\n\t{\r\n\r\n\t\tlet aArray: any[] = [];\r\n\t\t//\t\tthis._taskHomeMine\t= [];\r\n\t\tlet nIndice = 0;\r\n\r\n\t\tfor (let key in this._taskHomeMine)\r\n\t\t{\r\n\t\t\tif (nIndice !== pnIndice)\r\n\t\t\t{\r\n\t\t\t\taArray[key] = this._taskHomeMine[key];\r\n\t\t\t}\r\n\t\t\tnIndice++;\r\n\t\t}\r\n\r\n\t\tthis._taskHomeMine = aArray;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t * @param data\r\n\t */\r\n\tpublic setTaskHomeMine(id: any, data: any)\r\n\t{\r\n\t\tthis._taskHomeMine[id] = data;\r\n//\t\tthis.processData();\r\n\t}\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t * @param data\r\n\t */\r\n\tpublic cleanTaskHomeMine()\r\n\t{\r\n\t\tthis._taskHomeMine = [];\r\n//\t\tthis.processData();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param idTask\r\n\t * @param task\r\n\t */\r\n\tpublic setGlobalTask(idTask: any, task: any)\r\n\t{\r\n\t\tlet indexTask = _.findIndex(this._globalTask, (t: any) =>\r\n\t\t{\r\n\t\t\treturn t.id === idTask;\r\n\t\t});\r\n\r\n\t\tif (indexTask === - 1)\r\n\t\t{\r\n\t\t\tthis._globalTask.push(task);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._globalTask[indexTask] = task;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param idTask\r\n\t */\r\n\tpublic getGlobalTaskById(idTask: any)\r\n\t{\r\n\t\tlet result = undefined;\r\n\r\n\t\tlet indexTask = _.findIndex(this._globalTask, (t: any) =>\r\n\t\t{\r\n\t\t\treturn t.id === idTask;\r\n\t\t});\r\n\r\n\t\tif (indexTask !== -1)\r\n\t\t{\r\n\t\t\tresult = this._globalTask[indexTask];\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\tpublic getEtablissement(id: any): Etablissement { return this._etablissements[id]; }\r\n\tpublic addEtablissement(id: any, data: Etablissement)\r\n\t{\r\n\t\tthis._etablissements[id] \t= data;\r\n\t\t//this._selectedEtablissement = data;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Retourne la liste des établissements\r\n\t */\r\n\tget etablissements(): Etablissement[]\r\n\t{\r\n\t\tlet etabReturn = [];\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\t// On retourne sous cette forme pour que ça soit plus simple de parser coté html\r\n\t\t\tetabReturn.push(this._etablissements[key]);\r\n\t\t}\r\n\t\tetabReturn.sort(function (a, b)\r\n\t\t{\r\n\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\r\n\t\t\tif (nameA < nameB)\r\n\t\t\t{\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif (nameA > nameB)\r\n\t\t\t{\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\t// names must be equal\r\n\t\t\treturn 0;\r\n\t\t});\r\n\t\treturn etabReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Maj d'un établissement\r\n\t */\r\n\tpublic majEtablissement(id: any, data: any)\r\n\t{\r\n\t\t// Msie à jours des éléments en mode GROS bourrin !\r\n\t\t// La maj c'est spécial\r\n\t\tif (data && this._etablissements)\r\n\t\t{\r\n\t\t\tif (this._etablissements[data.id])\r\n\t\t\t{\r\n\t\t\t\tthis._etablissements[data.id].name\t\t\t\t= data.name;\r\n\t\t\t\tthis._etablissements[data.id].description\t\t= data.description;\r\n\t\t\t\tthis._etablissements[data.id].dateModification\t= data.dateModification;\r\n\t\t\t\tthis._etablissements[data.id].dateCreation\t\t= data.dateCreation;\r\n\t\t\t\tthis._etablissements[data.id].author\t\t\t= data.author;\r\n\r\n\r\n\t\t\t\tif (this._selectedEtablissement && data.id === this._selectedEtablissement.id)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Mise à jours des éléments selectionné\r\n\t\t\t\t\tthis._selectedEtablissement.name\t\t\t\t= data.name;\r\n\t\t\t\t\tthis._selectedEtablissement.description\t\t\t= data.description;\r\n\t\t\t\t\tthis._selectedEtablissement.dateModification\t= data.dateModification;\r\n\t\t\t\t\tthis._selectedEtablissement.dateCreation\t\t= data.dateCreation;\r\n\t\t\t\t\tthis._selectedEtablissement.author\t\t\t\t= data.author;\r\n\r\n\r\n\t\t\t\t\tif (this._selectedElement && data.id === this._selectedElement.id)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._selectedElement.name\t\t\t\t\t= data.name;\r\n\t\t\t\t\t\tthis._selectedElement.description\t\t\t= data.description;\r\n\t\t\t\t\t\tthis._selectedElement.dateModification\t\t= data.dateModification;\r\n\t\t\t\t\t\tthis._selectedElement.dateCreation\t\t\t= data.dateCreation;\r\n\t\t\t\t\t\tthis._selectedElement.author\t\t\t\t= data.author;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis._etablissements[data.id]\t= data;\r\n\t//\t\t\tthis._selectedEtablissement\t\t= data;\r\n\t//\t\t\tthis._selectedElement\t\t\t= data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ajoute ou MAJ une session\r\n\t */\r\n\tpublic setSession(id: string, data: Session, idParent: any)\r\n\t{\r\n\t\tlet isFind = false;\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tif (session.id === id)\r\n\t\t\t\t{\r\n\t\t\t\t\tisFind\t\t\t\t\t= true;\r\n\t\t\t\t\tsession.name\t\t\t= data.name;\r\n\t\t\t\t\tsession.description\t\t= data.description;\r\n\t\t\t\t\tsession.dateCreation\t= data.dateCreation;\r\n\r\n\t\t\t\t\tthis._etablissements[key].sessions.sort(function (a, b)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// names must be equal\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Cas ou la session est à ajouter\r\n\t\tif (!isFind)\r\n\t\t{\r\n\t\t\tfor (let key in this._etablissements)\r\n\t\t\t{\r\n\t\t\t\tif (this._etablissements[key].id === idParent)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis._etablissements[key].sessions.push(data);\r\n\t\t\t\t\tthis._etablissements[key].sessions.sort(function (a, b)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\r\n\t\t\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// names must be equal\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic resetSelect()\r\n\t{\r\n\t\tthis._selectedEtablissement = null;\r\n\t\tthis._selectedSession\t\t= null;\r\n\t\tthis._selectedExamen\t\t= null;\r\n\t\tthis._selectedMatiere\t\t= null;\r\n\t\tthis._selectedSujet\t\t\t= null;\r\n\t\tthis._selectedElement\t\t= null;\r\n\t\tthis._sujetKey\t\t\t\t= null;\r\n\t\tthis.selectedItems\t\t\t= [];\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic resetHomeSelect()\r\n\t{\r\n\t\tthis._selectedHomeEtablissement = null;\r\n\t\tthis._selectedHomeSession\t\t= null;\r\n\t\tthis._selectedHomeExamen\t\t= null;\r\n\t\tthis._selectedHomeMatiere\t\t= null;\r\n\t\tthis._selectedHomeSujet\t\t\t= null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ajoute ou MAJ un examen\r\n\t */\r\n\tpublic setExamen(id: string, data: Examen, idParent: any)\r\n\t{\r\n\t\tlet isFind = false;\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (examen.id === id)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tisFind \t\t\t\t= true;\r\n\t\t\t\t\t\texamen.name \t\t= data.name;\r\n\t\t\t\t\t\texamen.description \t= data.description;\r\n\r\n\t\t\t\t\t\tsession.examens.sort(function (a, b)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// names must be equal\r\n\t\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Cas ou la session est à ajouter\r\n\t\tif (!isFind)\r\n\t\t{\r\n\t\t\tfor (let key in this._etablissements)\r\n\t\t\t{\r\n\t\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (session.id === idParent)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsession.examens.push(data);\r\n\t\t\t\t\t\tsession.examens.sort(function (a, b)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// names must be equal\r\n\t\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ajoute ou MAJ une matière\r\n\t */\r\n\tpublic setMatiere(id: string, data: Matiere, idParent: any)\r\n\t{\r\n\t\tlet isFind = false;\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (matiere.id === id)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tisFind\t\t\t\t\t= true;\r\n\t\t\t\t\t\t\tmatiere.name\t\t\t= data.name;\r\n\t\t\t\t\t\t\tmatiere.description\t\t= data.description;\r\n\t\t\t\t\t\t\tmatiere.dateCreation\t= data.dateCreation;\r\n\t\t\t\t\t\t\tmatiere.typeEpreuve\t\t= data.typeEpreuve;\r\n\r\n\t\t\t\t\t\t\texamen.matieres.sort(function (a, b)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// names must be equal\r\n\t\t\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Cas ou la session est à ajouter\r\n\t\tif (!isFind)\r\n\t\t{\r\n\t\t\tfor (let key in this._etablissements)\r\n\t\t\t{\r\n\t\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (examen.id === idParent)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texamen.matieres.push(data);\r\n\t\t\t\t\t\t\texamen.matieres.sort(function (a, b)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvar nameA = a.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\t\t\tvar nameB = b.name.toUpperCase(); // ignore upper and lowercase\r\n\t\t\t\t\t\t\t\tif (nameA < nameB)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (nameA > nameB)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// names must be equal\r\n\t\t\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Retourne vrai si un element possède des élément enfants, retourne faux sinon\r\n\t */\r\n\tpublic hasElementChilds(element: any)\r\n\t{\r\n\t\tlet result: boolean = false;\r\n\r\n\t\tif (element instanceof Etablissement)\r\n\t\t{\r\n\t\t\tif (element.sessions.length > 0)\r\n\t\t\t{\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (element instanceof Session)\r\n\t\t{\r\n\t\t\tif (element.examens.length > 0)\r\n\t\t\t{\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (element instanceof Examen)\r\n\t\t{\r\n\t\t\tif (element.matieres.length > 0)\r\n\t\t\t{\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (element instanceof Matiere)\r\n\t\t{\r\n\t\t\tif (element.sujets.length > 0)\r\n\t\t\t{\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Mise à jours d'une matière après insert d'un sujet\r\n\t */\r\n\tpublic addFile(idSujet: string, data: EFile, ras = false)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (sujet.id === idSujet)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet indexPj = _.findIndex(sujet.pj, {id:data.id});\r\n\r\n\t\t\t\t\t\t\t\tif (indexPj === -1)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tsujet.pj.push(data);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t//Sinon on la met à jour\r\n\t\t\t\t\t\t\t\t\t//On concernve les thumbnails et les clé aes du fichier courant\r\n\t\t\t\t\t\t\t\t\t//si ces données sont présentes\r\n\t\t\t\t\t\t\t\t\t//Si le thumbnail et les clé AES sont également présent dans la\r\n\t\t\t\t\t\t\t\t\t//nouvelle version du fichier, on prend ces donénes en priorité\r\n\t\t\t\t\t\t\t\t\tif (sujet.pj[indexPj].thumbs.length > 0)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (data.thumbs.length === 0)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tdata.thumbs = sujet.pj[indexPj].thumbs;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (sujet.pj[indexPj].encryptedAesKeys.length > 0)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (data.encryptedAesKeys.length === 0)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tdata.encryptedAesKeys = sujet.pj[indexPj].encryptedAesKeys;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tsujet.pj[indexPj] = data;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Mise à jours d'une matière après insert d'un sujet\r\n\t */\r\n\tpublic razFile(idSujet: string)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (sujet.id === idSujet)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsujet.pj = [];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Mise à jour des élements selected\r\n\t\t\t\t\t\t\tif (sujet.id === this.selectedSujet.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.selectedSujet.pj = [];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param idSujet\r\n\t */\r\n\tpublic selectSujetById(idSujet: any)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (sujet.id === idSujet)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.selectedSujet = sujet;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param jsonSujets\r\n\t */\r\n\tpublic _updateSubjectFromJSON(jsonSujets: any[])\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gestion des sujets transmis par socket et enregistrement de ces sujets dans la structure user-data\r\n\t * @param jsonSujets\r\n\t */\r\n\tpublic _addSubjectFromJSON(jsonSujets: any[])\r\n\t{\r\n\t\tconst subjectsAdded: any[] = [];\r\n\t\t//pour chaque sujet récupéré\r\n\t\tfor (let subject of jsonSujets)\r\n\t\t{\r\n\t\t\tlet subjectToAdd : Sujet = Sujet.fromJsonObject(subject);\r\n\r\n\t\t\tif (subjectToAdd.datas.scenario)\r\n\t\t\t{\r\n\t\t\t\tsubjectToAdd.datas.scenario2 = JSON.parse(subjectToAdd.datas.scenario);\r\n\r\n\t\t\t\tfor (let key of subjectToAdd.datas.scenario2.steps)\r\n\t\t\t\t{\r\n\t\t\t\t\t//Si une tache existe on l'affecte sinon il s'agit d'une tache \"fantome\"\r\n\t\t\t\t\tlet existingTask = _.find(this.taskData.globalTaskDatas, (task: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn task.idSujet === subjectToAdd.id && Number(task.type) === Number(key.id);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (existingTask)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\texistingTask.nameSujet = subjectToAdd.name;\r\n\t\t\t\t\t\tsubjectToAdd.fake[key.id] = existingTask;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsubjectToAdd.fake[key.id] = key;\r\n\t\t\t\t\t\tsubjectToAdd.fake[key.id].realTask = false;\r\n\t\t\t\t\t}\r\n\t//\t\t\t\tsubjectToAdd.fake[key.id] = subjectToAdd.datas.scenario2.steps;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//On récupère l'épreuve correspondante\r\n\t\t\tlet epreuve = this.getEpreuve(subjectToAdd.idMatiere);\r\n\r\n\t\t\tif (epreuve)\r\n\t\t\t{\r\n\t\t\t\t//On regarde si le sujet n'éxiste pas déja dans l'épreuve\r\n\t\t\t\tlet indexSujet = _.findIndex(epreuve.sujets, (sujet: any) => { return sujet.id === subjectToAdd.id; });\r\n\t\t\t\tif (indexSujet !== -1)\r\n\t\t\t\t{\r\n\t\t\t\t\t//Si c'est le cas on remplace le sujet\r\n\t\t\t\t\tepreuve.sujets[indexSujet] = subjectToAdd;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t//Sinon on l'ajoute\r\n\t\t\t\t\tepreuve.sujets.push(subjectToAdd);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsubjectsAdded.push(subjectToAdd);\r\n\r\n\t\t\t\t//S'il s'agit du sujet courant on le met à jour\r\n\t\t\t\tif (this.selectedSujet && this.selectedSujet.id === subjectToAdd.id)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.selectedSujet = subjectToAdd;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//On met à jour le nom du sujet dans les tache concernée de l'épreuve\r\n\t\t\t\tlet taskEpr = _.find(epreuve.tasks, (task: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\treturn task.idSujet === subjectToAdd.id;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (taskEpr)\r\n\t\t\t\t{\r\n\t\t\t\t\ttaskEpr.nameSujet = subjectToAdd.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn subjectsAdded;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t */\r\n\tpublic getTreeElementForComment(id: any)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n//\t\t\tif (key === id) { return this._etablissements[key]; }\r\n\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tif (session.id === id) { return session; }\r\n\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (examen.id === id) { return examen; }\r\n\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (matiere.id === id) { return matiere; }\r\n\r\n\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (sujet.id === id) { return sujet; }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t */\r\n\tpublic getBranchFromId(id: any)\r\n\t{\r\n\t\tlet result: any = {};\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tif (key === id)\r\n\t\t\t{\r\n\t\t\t\tresult.etablissement = this._etablissements[key];\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (session.id === id)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresult.etablissement \t= this._etablissements[key];\r\n\t\t\t\t\t\tresult.session \t\t\t= session;\r\n\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (examen.id === id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tresult.etablissement \t= this._etablissements[key];\r\n\t\t\t\t\t\t\t\tresult.session \t\t\t= session;\r\n\t\t\t\t\t\t\t\tresult.examen \t\t\t= examen;\r\n\r\n\t\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (matiere.id === id)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tresult.etablissement \t= this._etablissements[key];\r\n\t\t\t\t\t\t\t\t\t\tresult.session \t\t\t= session;\r\n\t\t\t\t\t\t\t\t\t\tresult.examen \t\t\t= examen;\r\n\t\t\t\t\t\t\t\t\t\tresult.matiere \t\t\t= matiere;\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tif (sujet.id === id)\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tresult.etablissement \t= this._etablissements[key];\r\n\t\t\t\t\t\t\t\t\t\t\t\tresult.session \t\t\t= session;\r\n\t\t\t\t\t\t\t\t\t\t\t\tresult.examen \t\t\t= examen;\r\n\t\t\t\t\t\t\t\t\t\t\t\tresult.matiere \t\t\t= matiere;\r\n\t\t\t\t\t\t\t\t\t\t\t\tresult.sujet \t\t\t= sujet;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfor (let pj of sujet.pj)\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (pj.id === id)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult.etablissement \t= this._etablissements[key];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult.session \t\t\t= session;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult.examen \t\t\t= examen;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult.matiere \t\t\t= matiere;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult.sujet \t\t\t= sujet;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult.pj \t\t\t\t= pj;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// désolé\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param data\r\n\t * @param replace\r\n\t */\r\n\tpublic setTasksBySubject(data: any, replace = false)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\t//\t\t\tif (key === id) { return this._etablissements[key]; }\r\n\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfor (let task of data)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (sujet.id === task.idsujet)\r\n\t\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\t\tlet oTask \t= Task.fromJsonObject(task);\r\n\t\t\t\t\t\t\t\t\toTask \t\t= this.taskData.buildTask(oTask);\r\n\r\n\t\t\t\t\t\t\t\t\tlet idSaouled \t\t\t= parseInt(oTask.type);\r\n\t\t\t\t\t\t\t\t\tsujet.fake[idSaouled] \t= oTask;\r\n\r\n\t\t\t\t\t\t\t\t\tlet indexInSubjectTasks = _.findIndex(sujet.tasks, (taskObj: any) => { return taskObj.id === oTask.id; });\r\n\t\t\t\t\t\t\t\t\tif (indexInSubjectTasks === -1)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tsujet.tasks.push(oTask);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tif (replace === true)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tsujet.tasks[indexInSubjectTasks] = oTask;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t\t// Gestion des scénario ...\r\n\t\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t */\r\n\tpublic getTreeElement(id: any)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tif (key === id) { return this._etablissements[key]; }\r\n\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tif (session.id === id) { return session; }\r\n\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (examen.id === id) { return examen; }\r\n\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (matiere.id === id) { return matiere; }\r\n\r\n\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (sujet.id === id) { return sujet; }\r\n\t\t\t\t\t\t\tfor (let pj of sujet.pj)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (pj.id === id) { return pj; }\r\n\t\t\t\t\t\t\t\t// désolé\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t */\r\n\tpublic getSession(id: any)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tif (session.id === id) { return session; }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t */\r\n\tpublic getExamen(id: any)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (examen.id === id) { return examen; }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t */\r\n\tpublic getEpreuve(id: any)\r\n\t{\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (matiere.id === id) { return matiere; }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param idNode\r\n\t * @param type\r\n\t * @param parents\r\n\t */\r\n\tpublic removeNode(idNode: any, type: string, parents: any[])\r\n\t{\r\n\t\tlet structParents: any = {};\r\n\r\n\t\tfor (let parent of parents)\r\n\t\t{\r\n\t\t\tif (parent.indexOf('*etab::') >= 0)\r\n\t\t\t{\r\n\t\t\t\tstructParents.etab = parent.split('::').pop();\r\n\t\t\t}\r\n\r\n\t\t\tif (parent.indexOf('*sess::') >= 0)\r\n\t\t\t{\r\n\t\t\t\tstructParents.session = parent.split('::').pop();\r\n\t\t\t}\r\n\r\n\t\t\tif (parent.indexOf('*exam::') >= 0)\r\n\t\t\t{\r\n\t\t\t\tstructParents.examen = parent.split('::').pop();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tswitch (type)\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'etablissement':\r\n\r\n\t\t\t\tif (this._etablissements[idNode])\r\n\t\t\t\t{\r\n\t\t\t\t\tdelete this._etablissements[idNode];\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'session':\r\n\t\t\t\tif (parents.length === 2)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (structParents.etab\r\n\t\t\t\t\t\t&& this._etablissements[structParents.etab])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet etab = this._etablissements[structParents.etab];\r\n\r\n\t\t\t\t\t\tlet index = _.findIndex(etab.sessions, (session: any) => {\r\n\t\t\t\t\t\t\treturn session.id === idNode;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (index !== -1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tetab.sessions.splice(index, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'examen':\r\n\t\t\t\tif (parents.length === 3)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (structParents.etab && structParents.session && this._etablissements[structParents.etab])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet etab = this._etablissements[structParents.etab];\r\n\t\t\t\t\t\tlet indexSession = _.findIndex(etab.sessions, (session: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn session.id === structParents.session;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (indexSession !== -1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet session = etab.sessions[indexSession];\r\n\t\t\t\t\t\t\tlet index = _.findIndex(session.examens, (examen: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn examen.id === idNode;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif (index !== -1)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsession.examens.splice(index, 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'epreuve':\r\n\t\t\t\tif (parents.length === 4)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (structParents.etab && structParents.session && structParents.examen && this._etablissements[structParents.etab])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet etab = this._etablissements[structParents.etab];\r\n\r\n\t\t\t\t\t\tlet indexSession = _.findIndex(etab.sessions, (session: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn session.id === structParents.session;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (indexSession !== -1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet session = etab.sessions[indexSession];\r\n\t\t\t\t\t\t\tlet indexExamen = _.findIndex(session.examens, (examen: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn examen.id === structParents.examen;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif (indexExamen !== -1)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet examen = session.examens[indexExamen];\r\n\r\n\t\t\t\t\t\t\t\tlet index = _.findIndex(examen.matieres, (matiere: any) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn matiere.id === idNode;\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\texamen.matieres.splice(index, 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn structParents;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t */\r\n\tpublic getSujet(id: any)\r\n\t{\r\n\t\tfor (const key in this._etablissements)\r\n\t\t{\r\n\t\t\tfor (const session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (const examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (const matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (const sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (sujet.id === id) { return sujet; }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param resultSearch\r\n\t * @param visible\r\n\t * @param textSearch\r\n\t */\r\n\tchangeTreeVisibility(resultSearch: any, visible: boolean, textSearch: string)\r\n\t{\r\n\t\tlet found;\r\n\r\n\t\tfor (let item of this._openedItemsBySearch)\r\n\t\t{\r\n\t\t\titem.show = false;\r\n\t\t}\r\n\r\n\t\tthis._openedItemsBySearch = [];\r\n\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\tif (this._etablissements[key])\r\n\t\t\t{\r\n\t\t\t\tif (resultSearch)\r\n\t\t\t\t{\r\n\t\t\t\t\tfound = _.findWhere(resultSearch, {idEtab: this._etablissements[key].id});\r\n\t\t\t\t\tthis._etablissements[key].visible = (found !== undefined);\r\n\r\n\t\t\t\t\tif (found && textSearch)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif(this._etablissements[key].name.toLowerCase().indexOf(textSearch) === -1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis._etablissements[key].show = true;\r\n\t\t\t\t\t\t\tthis._openedItemsBySearch.push(this._etablissements[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis._etablissements[key].visible = visible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (resultSearch)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfound \t\t\t= _.findWhere(resultSearch, {idSession: session.id});\r\n\t\t\t\t\t\tsession.visible = (found !== undefined);\r\n\r\n\t\t\t\t\t\tif (found && textSearch)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif(session.name.toLowerCase().indexOf(textSearch) === -1)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsession.show = true;\r\n\t\t\t\t\t\t\t\tthis._openedItemsBySearch.push(session);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsession.visible = visible;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (resultSearch)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfound \t\t\t= _.findWhere(resultSearch, {idExamen: examen.id});\r\n\t\t\t\t\t\t\texamen.visible \t= (found !== undefined);\r\n\r\n\t\t\t\t\t\t\tif (found && textSearch)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif(examen.name.toLowerCase().indexOf(textSearch) === -1)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\texamen.show = true;\r\n\t\t\t\t\t\t\t\t\tthis._openedItemsBySearch.push(examen);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texamen.visible = visible;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (resultSearch)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfound = _.findWhere(resultSearch, {idMatiere: matiere.id});\r\n\t\t\t\t\t\t\t\tmatiere.visible = (found !== undefined);\r\n\r\n\t\t\t\t\t\t\t\tif (found && textSearch)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif(matiere.name.toLowerCase().indexOf(textSearch) === -1)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tmatiere.show = true;\r\n\t\t\t\t\t\t\t\t\t\tthis._openedItemsBySearch.push(matiere);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tmatiere.visible = visible;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param idElement\r\n\t * @param values\r\n\t */\r\n\tpublic setHistoric(idElement: any, values: any[])\r\n\t{\r\n\t\tthis._historicFromElement[idElement] = { comments: values };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param idElement\r\n\t */\r\n\tpublic getHistoric(idElement: any)\r\n\t{\r\n\t\tlet result;\r\n\r\n\t\tif (this._historicFromElement && this._historicFromElement[idElement])\r\n\t\t{\r\n\t\t\tresult = this._historicFromElement[idElement];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ajout d'un historic ou un commentaire à un élement donné\r\n\t * @param idElement\r\n\t * @param values\r\n\t */\r\n\tpublic addHistoricToElement(idElement: any, values: any[])\r\n\t{\r\n\t\tif (this._historicFromElement && this._historicFromElement[idElement])\r\n\t\t{\r\n\t\t\tfor (let value of values)\r\n\t\t\t{\r\n\t\t\t\t//On vérifie si le message n'est pas déja présent: vérification sur l'auteur et le dateticks\r\n\t\t\t\tlet existingMessage = _.find(this._historicFromElement[idElement].comments, (message: any) => {\r\n\r\n\t\t\t\t\treturn (\t//filtrage sur les commentaires déja existants\r\n\t\t\t\t\t\t\t\tvalue.idUser && value.dateticks && message.idUser === value.idUser && message.dateticks === value.dateticks\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t||\r\n\t\t\t\t\t\t\t(\t//filtrage sur les historiques déja existants\r\n\t\t\t\t\t\t\t\tvalue.path && value.type && message.path === value.path && message.type === value.type\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t||\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\tvalue.soustitre && value.dateticks && message.soustitre === value.soustitre && message.dateticks === value.dateticks\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!existingMessage)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis._historicFromElement[idElement].comments.push(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis._historicFromElement[idElement] = { comments: values };\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Parse un ensemble d'element de type historique ou de type message\r\n\t * @param data\r\n\t */\r\n\tpublic parseHistoric(data: any)\r\n\t{\r\n\t\tlet result: any[] = [];\r\n\t\tif (data.bucket)\r\n\t\t{\r\n\t\t\tswitch (data.bucket)\r\n\t\t\t{\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'session':\r\n\t\t\t\tcase 'examen':\r\n\t\t\t\tcase 'matiere':\r\n\t\t\t\tcase 'subjects':\r\n\t\t\t\tcase 'files':\r\n\t\t\t\tcase 'tasks':\r\n\t\t\t\t\tlet fileObj: any = this.getTreeElement(data.key);\r\n\r\n\t\t\t\t\tlet versionNum = 1;\r\n\t\t\t\t\tlet arrayHisto = _.toArray(data.messages);\r\n\r\n\t\t\t\t\tlet indice = 0;\r\n\r\n\t\t\t\t\tfor (let key in data.messages)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (data.messages[key] && data.messages[key])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tarrayHisto[indice].key\t\t\t= new Date(data.messages[key].dateticks);\r\n\t\t\t\t\t\t\tarrayHisto[indice].dateticks\t= data.messages[key].dateticks;\r\n\t\t\t\t\t\t\tindice++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (let keyDate of arrayHisto)\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tlet globalDate = keyDate.key;\r\n\r\n\t\t\t\t\t\tif (keyDate)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (keyDate.val && keyDate.who !== null)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet dataHistoric: any\t= {};\r\n\t\t\t\t\t\t\t\tlet values\t\t\t\t= JSON.parse(keyDate.val);\r\n\t\t\t\t\t\t\t\tlet sub\t\t\t\t\t= keyDate.sub;\r\n\r\n\t\t\t\t\t\t\t\tdataHistoric.idUser\t\t\t= keyDate.who;\r\n\t\t\t\t\t\t\t\tdataHistoric.creationDate\t= keyDate.key;\r\n\t\t\t\t\t\t\t\tdataHistoric.dateticks\t\t= keyDate.dateticks;\r\n\r\n\t\t\t\t\t\t\t\tif (sub === 'H')\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tdataHistoric = this.parseHistoricItem(values, dataHistoric);\r\n\t\t\t\t\t\t\t\t\tif (dataHistoric)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tdataHistoric.version = versionNum;\r\n\t\t\t\t\t\t\t\t\t\tversionNum++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tif (sub === 'C')\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tdataHistoric.typeName = 'Message';\r\n\t\t\t\t\t\t\t\t\t\tif (values.comment)\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tdataHistoric.content = values.comment;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (dataHistoric)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tresult.push(dataHistoric);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresult = result.reverse();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Parse un élément de type historique\r\n\t */\r\n\tpublic parseHistoricItem(value: any, objectResult: any)\r\n\t{\r\n\t\tswitch (value.action)\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'update':\r\n\t\t\t\tobjectResult.type\t\t= 'update';\r\n\t\t\t\tobjectResult.typeName\t= 'Mise à jour';\r\n\r\n\t\t\t\tif (value.data && value.data.libelle)\r\n\t\t\t\t{\r\n\t\t\t\t\tobjectResult.soustitre\t= 'à modifié : ';\r\n\t\t\t\t\tobjectResult.content\t= 'Libelle : ' + value.data.libelle;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t//Si il s'agit d'une nouvelle version d'un fichier\r\n\t\t\t\t\tif (value.path)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tobjectResult.typeName\t\t= 'Edition';\r\n\t\t\t\t\t\tobjectResult.soustitrePath\t= 'A édité : ';\r\n\t\t\t\t\t\tobjectResult.path\t\t\t= value.path;\r\n\t\t\t\t\t\tobjectResult.nameFile\t\t= value.name;\r\n\t\t\t\t\t\tobjectResult.typeFile\t\t= value.type;\r\n\t\t\t\t\t\tobjectResult.idFile\t\t\t= value.idFile;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (value.data && value.data.state)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t//objectResult.soustitre = 'à modifié la tache: ';\r\n\t\t\t\t\t\t\tobjectResult.soustitre = '';\r\n\t\t\t\t\t\t\tif (value.data.name)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tobjectResult.soustitre += value.data.name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tswitch (value.data.state)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcase 'new':\r\n\t\t\t\t\t\t\t\t\tobjectResult.content = \"Etat : 'Non assignée'\";\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase 'todo':\r\n\t\t\t\t\t\t\t\t\tobjectResult.content = \"Etat : 'Assignée'\";\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase 'inprogress':\r\n\t\t\t\t\t\t\t\t\tobjectResult.content = \"Etat : 'En cours'\";\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase 'review':\r\n\t\t\t\t\t\t\t\t\tobjectResult.content = \"Etat : 'A valider'\";\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase 'done':\r\n\t\t\t\t\t\t\t\t\tobjectResult.content = \"Etat : 'Terminé'\";\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// objectResult.content = \"à mis une nouvelle version du fichier\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'create':\r\n\r\n\t\t\t\tobjectResult.type \t\t= 'create';\r\n\t\t\t\tobjectResult.typeName \t= 'Création';\r\n\t\t\t\tobjectResult.version \t= 1;\r\n\r\n\t\t\t\tif (value.path)\r\n\t\t\t\t{\r\n\t\t\t\t\tobjectResult.soustitrePath\t= 'A créé : ';\r\n\t\t\t\t\tobjectResult.path\t\t\t= value.path;\r\n\t\t\t\t\tobjectResult.nameFile\t\t= value.name;\r\n\t\t\t\t\tobjectResult.typeFile\t\t= value.type;\r\n\t\t\t\t\tobjectResult.idFile\t\t\t= value.idFile;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (value.name)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tobjectResult.soustitre = 'A créé : ' + value.name;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (value.what && value.id)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet name;\r\n\t\t\t\t\t\t\tswitch(value.what)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcase 'etablissement':\r\n\t\t\t\t\t\t\t\t\tif (value.libelle)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname = value.libelle;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet etab \t= this.getEtablissement(value.id);\r\n\t\t\t\t\t\t\t\t\t\tname\t\t= etab ? etab.name : '';\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tobjectResult.soustitre = 'A créé le classeur : ' + name;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase 'session':\r\n\t\t\t\t\t\t\t\t\tif (value.libelle)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname = value.libelle;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet session = this.getSession(value.id);\r\n\t\t\t\t\t\t\t\t\t\tname \t\t= session ? session.name : '';\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tobjectResult.soustitre = 'A créé la session : ' + name;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase 'examen':\r\n\t\t\t\t\t\t\t\t\tif (value.libelle)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname = value.libelle;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet examen \t= this.getExamen(value.id);\r\n\t\t\t\t\t\t\t\t\t\tname \t\t= examen ? examen.name : '';\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tobjectResult.soustitre = \"A créé l'examen : \" + name;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase 'matiere':\r\n\t\t\t\t\t\t\t\t\tif (value.libelle)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname = value.libelle;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet matiere = this.getEpreuve(value.id);\r\n\t\t\t\t\t\t\t\t\t\tname \t\t= matiere ? matiere.name : '';\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tobjectResult.soustitre = \"A créé l'épreuve : \" + name;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase 'subjects':\r\n\t\t\t\t\t\t\t\t\tif (value.libelle)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname = value.libelle;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet sujet \t= this.getSujet(value.id);\r\n\t\t\t\t\t\t\t\t\t\tname \t\t= sujet ? sujet.name : '';\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tobjectResult.soustitre = 'A créé le sujet : ' + name;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase 'task':\r\n\t\t\t\t\t\t\t\t\tif (value.libelle)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname = value.libelle;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlet task \t= this.taskData.getTaskById(value.id);\r\n\t\t\t\t\t\t\t\t\t\tname \t\t= task ? task.name : '';\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tobjectResult.soustitre = \"A créé l'étape : \" + name;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tobjectResult = undefined;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn objectResult;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Est call une fois que tt les datas sont là pour les merger\r\n\t */\r\n\tpublic processData()\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Là tu vas aller chercher tes infos du node pour les insérer dans l'objet Task\r\n\t\t// ---------------------------------------\r\n\t\tfor(let key in this._taskHomeMine)\r\n\t\t{\r\n\t\t\tif (this._taskHomeMine[key])\r\n\t\t\t{\r\n\t\t\t\tlet etablissement \t= this.getEtablissement(this._taskHomeMine[key].idEtablissement);\r\n\t\t\t\tlet session \t\t= this.getSession(this._taskHomeMine[key].idSession);\r\n\t\t\t\tlet examen \t\t\t= this.getExamen(this._taskHomeMine[key].idExamen);\r\n\t\t\t\tlet epreuve\t\t\t= this.getEpreuve(this._taskHomeMine[key].idEpreuve);\r\n\t\t\t\tlet sujet\t\t\t= this.getSujet(this._taskHomeMine[key].idSujet);\r\n\r\n\t\t\t\tthis._taskHomeMine[key].nameEtablissement \t= etablissement ? etablissement.name \t: '';\r\n\t\t\t\tthis._taskHomeMine[key].nameSession \t\t= session\t\t? session.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeMine[key].nameExamen \t\t\t= examen\t\t? examen.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeMine[key].nameEpreuve \t\t= epreuve\t\t? epreuve.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeMine[key].nameSujet \t\t\t= sujet\t\t\t? sujet.name \t\t\t: '';\r\n\r\n\t\t\t\tthis._taskHomeMineSave[key]\t\t\t\t\t= this._taskHomeMine[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor(let key in this._taskHomeAdmin)\r\n\t\t{\r\n\t\t\tif (this._taskHomeAdmin[key])\r\n\t\t\t{\r\n\t\t\t\tlet etablissement \t= this.getEtablissement(this._taskHomeAdmin[key].idEtablissement);\r\n\t\t\t\tlet session \t\t= this.getSession(this._taskHomeAdmin[key].idSession);\r\n\t\t\t\tlet examen \t\t\t= this.getExamen(this._taskHomeAdmin[key].idExamen);\r\n\t\t\t\tlet epreuve \t\t= this.getEpreuve(this._taskHomeAdmin[key].idEpreuve);\r\n\t\t\t\tlet sujet \t\t\t= this.getSujet(this._taskHomeAdmin[key].idSujet);\r\n\r\n\t\t\t\tthis._taskHomeAdmin[key].nameEtablissement \t= etablissement ? etablissement.name \t: '';\r\n\t\t\t\tthis._taskHomeAdmin[key].nameSession \t\t= session\t\t? session.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdmin[key].nameExamen \t\t= examen\t\t? examen.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdmin[key].nameEpreuve\t\t= epreuve\t\t? epreuve.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdmin[key].nameSujet\t\t\t= sujet\t\t\t? sujet.name \t\t\t: '';\r\n\r\n\t\t\t\tthis._taskHomeAdminSave[key] = this._taskHomeAdmin[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let key in this._taskHomeAdminToValid)\r\n\t\t{\r\n\t\t\tif (this._taskHomeAdminToValid[key])\r\n\t\t\t{\r\n\t\t\t\tlet etablissement \t= this.getEtablissement(this._taskHomeAdminToValid[key].idEtablissement);\r\n\t\t\t\tlet session \t\t= this.getSession(this._taskHomeAdminToValid[key].idSession);\r\n\t\t\t\tlet examen \t\t\t= this.getExamen(this._taskHomeAdminToValid[key].idExamen);\r\n\t\t\t\tlet epreuve \t\t= this.getEpreuve(this._taskHomeAdminToValid[key].idEpreuve);\r\n\t\t\t\tlet sujet \t\t\t= this.getSujet(this._taskHomeAdminToValid[key].idSujet);\r\n\r\n\t\t\t\tthis._taskHomeAdminToValid[key].nameEtablissement \t= etablissement ? etablissement.name \t: '';\r\n\t\t\t\tthis._taskHomeAdminToValid[key].nameSession \t\t= session\t\t? session.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdminToValid[key].nameExamen\t\t\t= examen\t\t? examen.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdminToValid[key].nameEpreuve\t\t\t= epreuve\t\t? epreuve.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdminToValid[key].nameSujet\t\t\t= sujet\t\t\t? sujet.name \t\t\t: '';\r\n\r\n\t\t\t\tthis._taskHomeAdminToValidSave[key] = this._taskHomeAdminToValid[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let key in this._taskHomeAdminExpired)\r\n\t\t{\r\n\t\t\tif (this._taskHomeAdminExpired[key])\r\n\t\t\t{\r\n\t\t\t\tlet etablissement \t= this.getEtablissement(this._taskHomeAdminExpired[key].idEtablissement);\r\n\t\t\t\tlet session \t\t= this.getSession(this._taskHomeAdminExpired[key].idSession);\r\n\t\t\t\tlet examen \t\t\t= this.getExamen(this._taskHomeAdminExpired[key].idExamen);\r\n\t\t\t\tlet epreuve \t\t= this.getEpreuve(this._taskHomeAdminExpired[key].idEpreuve);\r\n\t\t\t\tlet sujet \t\t\t= this.getSujet(this._taskHomeAdminExpired[key].idSujet);\r\n\r\n\t\t\t\tthis._taskHomeAdminExpired[key].nameEtablissement \t= etablissement ? etablissement.name \t: '';\r\n\t\t\t\tthis._taskHomeAdminExpired[key].nameSession \t\t= session\t\t? session.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdminExpired[key].nameExamen \t\t\t= examen\t\t? examen.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdminExpired[key].nameEpreuve\t\t\t= epreuve\t\t? epreuve.name \t\t\t: '';\r\n\t\t\t\tthis._taskHomeAdminExpired[key].nameSujet\t\t\t= sujet\t\t\t? sujet.name \t\t\t: '';\r\n\r\n\t\t\t\tthis._taskHomeAdminExpiredSave[key]\t\t\t\t\t= this._taskHomeAdminExpired[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._globalTask = [];\r\n\t\tthis._globalTask = this._globalTask.concat(this.taskHomeMine);\r\n\t\tthis._globalTask = this._globalTask.concat(this.taskHomeAdmin);\r\n\t\tthis._globalTask = this._globalTask.concat(this.taskHomeAdminExpired);\r\n\t}\r\n\r\n\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic logout()\r\n\t{\r\n\t\tthis._taskHomeAdmin\t\t\t= [];\r\n\t\tthis._taskHomeMine\t\t\t= [];\r\n\t\tthis._taskHomeAdminExpired\t= [];\r\n\t\tthis._taskHomeAdminToValid\t= [];\r\n\t\tthis.epreuveHomeAdmin\t\t= [];\r\n\t\tthis._globalTask\t\t\t= [];\r\n\t\tthis._etablissements\t\t= [];\r\n\t\tthis.selectedItems\t\t\t= [];\r\n\t\tthis._historicFromElement\t= {};\r\n\r\n\t\tthis.resetSelect();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param id\r\n\t */\r\n\tpublic getTaskName(id: any)\r\n\t{\r\n\t\tlet name = '';\r\n\r\n\t\tfor (let task of this._globalTask)\r\n\t\t{\r\n\t\t\tif (task.id === id)\r\n\t\t\t{\r\n\t\t\t\tswitch (task.type)\r\n\t\t\t\t{\r\n\t\t\t\t\tcase 'redaction':\r\n\t\t\t\t\t\tname = 'Rédaction';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'test':\r\n\t\t\t\t\t\tname = 'Test';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'miseEnPage':\r\n\t\t\t\t\t\tname = 'Mise en page';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'verification':\r\n\t\t\t\t\t\tname = 'Vérification finale';\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param sujetId\r\n\t */\r\n\tpublic constructTreeBySubjectId(sujetId: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t//\r\n\t\t// ---------------------------------------\r\n\t\tlet tempEtab:\t\tEtablissement;\r\n\t\tlet tempSession:\tSession;\r\n\t\tlet tempExam:\t\tExamen;\r\n\t\tlet tempMatiere:\tMatiere;\r\n\t\tlet tree = [];\r\n\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\ttempEtab = this._etablissements[key];\r\n\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\ttempSession = session;\r\n\r\n\t\t\t\tfor (let exam of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\ttempExam = exam;\r\n\r\n\t\t\t\t\tfor (let matiere of exam.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempMatiere = matiere;\r\n\r\n\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (sujet.id === sujetId)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttree[0] = tempMatiere.id;\r\n\t\t\t\t\t\t\t\ttree[1] = tempExam.id;\r\n\t\t\t\t\t\t\t\ttree[2] = tempSession.id;\r\n\t\t\t\t\t\t\t\ttree[3] = tempEtab.id;\r\n\t\t\t\t\t\t\t\ttree[4] = sujet.id;\r\n\r\n\t\t\t\t\t\t\t\treturn tree;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param sujetId\r\n\t */\r\n\tpublic constructAutoTreeBySubjectId(sujetId: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t//\r\n\t\t// ---------------------------------------\r\n\t\tlet tempEtab:\t\tEtablissement;\r\n\t\tlet tempSession:\tSession;\r\n\t\tlet tempExam:\t\tExamen;\r\n\t\tlet tempMatiere:\tMatiere;\r\n\t\tlet tree = [];\r\n\r\n\t\tfor (let key in this._etablissements)\r\n\t\t{\r\n\t\t\ttempEtab = this._etablissements[key];\r\n\r\n\t\t\tfor (let session of this._etablissements[key].sessions)\r\n\t\t\t{\r\n\t\t\t\ttempSession = session;\r\n\r\n\t\t\t\tfor (let exam of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\ttempExam = exam;\r\n\r\n\t\t\t\t\tfor (let matiere of exam.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempMatiere = matiere;\r\n\r\n\t\t\t\t\t\tfor (let sujet of matiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (sujet.id === sujetId)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.goToSubject\t\t\t= true;\r\n\t\t\t\t\t\t\t\tthis._selectedMatiere\t\t= tempMatiere;\r\n\t\t\t\t\t\t\t\tthis._selectedElement\t\t= tempMatiere;\r\n\t\t\t\t\t\t\t\tthis._selectedExamen\t\t= tempExam;\r\n\t\t\t\t\t\t\t\tthis._selectedSession\t\t= tempSession;\r\n\t\t\t\t\t\t\t\tthis._selectedEtablissement = tempEtab;\r\n\t\t\t\t\t\t\t\tthis._selectedSujet\t\t\t= sujet;\r\n\r\n\t\t\t\t\t\t\t\tthis.router.navigate(['/workspace']);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Vérifie si le nom est dispo avec un nom à check et un type\r\n\t */\r\n\tpublic isNameFree(psName: string, psType: any)\r\n\t{\r\n\t\tlet xReturn: any = null;\r\n\t\tlet indexFinal = false;\r\n\t\tif (psName)\r\n\t\t{\r\n\t\t\tpsName = psName.toLowerCase();\r\n\r\n\r\n\t\t\tswitch (psType)\r\n\t\t\t{\r\n\t\t\t\tcase 'etablissement':\r\n\r\n\t\t\t\t\tfor (let indice in this._etablissements)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this._etablissements[indice])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet nameToTest: string = this._etablissements[indice].name;\r\n\t\t\t\t\t\t\tif (nameToTest)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnameToTest = nameToTest.toLowerCase();\r\n\t\t\t\t\t\t\t\tif (nameToTest === psName)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tindexFinal = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\tcase 'session':\r\n\r\n\t\t\t\t\tif (this.selectedEtablissement)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let session of this.selectedEtablissement.sessions)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet nameToTest: string = session.name;\r\n\t\t\t\t\t\t\tif (nameToTest)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnameToTest = nameToTest.toLowerCase();\r\n\t\t\t\t\t\t\t\tif (nameToTest === psName)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tindexFinal = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'examen':\r\n\t\t\t\t\tif (this.selectedSession)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let examen of this.selectedSession.examens)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet nameToTest: string = examen.name;\r\n\t\t\t\t\t\t\tif (nameToTest)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnameToTest = nameToTest.toLowerCase();\r\n\t\t\t\t\t\t\t\tif (nameToTest === psName)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tindexFinal = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'matiere':\r\n\t\t\t\t\tif (this.selectedExamen)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let matiere of this.selectedExamen.matieres)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet nameToTest: string = matiere.name;\r\n\t\t\t\t\t\t\tif (nameToTest)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnameToTest = nameToTest.toLowerCase();\r\n\t\t\t\t\t\t\t\tif (nameToTest === psName)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tindexFinal = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'sujet':\r\n\t\t\t\t\tif (this.selectedMatiere)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let sujet of this.selectedMatiere.sujets)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet nameToTest: string = sujet.name;\r\n\t\t\t\t\t\t\tif (nameToTest)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnameToTest = nameToTest.toLowerCase();\r\n\t\t\t\t\t\t\t\tif (nameToTest === psName)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tindexFinal = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'pj':\r\n\t\t\t\t\tif (this.selectedSujet)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let pj of this.selectedSujet.pj)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet nameToTest: string = pj.name;\r\n\t\t\t\t\t\t\tif (nameToTest)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnameToTest = nameToTest.toLowerCase();\r\n\t\t\t\t\t\t\t\tif (nameToTest === psName)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tindexFinal = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (indexFinal)\r\n\t\t\t{\r\n\t\t\t\txReturn = { invalid: true };\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn xReturn;\r\n\t}\r\n\r\n\r\n\t// ---------------------------------------------------------------------------------------------------------------------------------------------------------\r\n\t// Home\r\n\t// ---------------------------------------------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param paArray\r\n\t * @param psId\r\n\t * @param psType\r\n\t */\r\n\tpublic findItem(paArray: any[], psId: string, psType ='etab')\r\n\t{\r\n\t\t// Partie à valider\r\n\t\tlet tempObj1 = [];\r\n\t\tlet paReturn = [];\r\n\t\tfor (let key in paArray)\r\n\t\t{\r\n\t\t\tswitch (psType)\r\n\t\t\t{\r\n\t\t\t\tcase 'etab':\r\n\t\t\t\t\tif (paArray[key].idEtablissement === psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'sess':\r\n\t\t\t\t\tif (paArray[key].idSession === psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'exam':\r\n\t\t\t\t\tif (paArray[key].idExamen === psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'matiere':\r\n\t\t\t\t\tif (paArray[key].idEpreuve === psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'suj':\r\n\t\t\t\t\tif (paArray[key].idSujet === psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\tpaReturn = tempObj1;\r\n\r\n\t\treturn paReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param paArray\r\n\t * @param psId\r\n\t * @param psType\r\n\t */\r\n\tpublic findItemEpreuve(paArray: any[], psId: string, psType ='etab')\r\n\t{\r\n\t\t// Partie à valider\r\n\t\tlet tempObj1 = [];\r\n\t\tlet paReturn = [];\r\n\r\n\r\n\t\tfor (let key in paArray)\r\n\t\t{\r\n\r\n\t\t\tswitch (psType)\r\n\t\t\t{\r\n\t\t\t\tcase 'etab':\r\n\t\t\t\t\tif (paArray[key].parents[0] === \"*etab::\"+psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'sess':\r\n\t\t\t\t\tif (paArray[key].parents[3] === \"*sess::\"+psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'exam':\r\n\t\t\t\t\tif (paArray[key].parents[1] === \"*exam::\"+psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'matiere':\r\n\t\t\t\t\tif (paArray[key].id === psId)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttempObj1.push(paArray[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\tpaReturn = tempObj1;\r\n\r\n\t\treturn paReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Trie des éléments sur la home\r\n\t */\r\n\tpublic filterHomeTasks(typeOfFilter: any, id: any = null)\r\n\t{\r\n\t\tlet resultDatasAdminToValid:\tany[] = [];\r\n\t\tlet resultDatasAdmin:\t\t\tany[] = [];\r\n\t\tlet resultDatasAdminExpired:\tany[] = [];\r\n\t\tlet resultDatasMine:\t\t\tany[] = [];\r\n\t\tlet resultDatasEpreuve:\t\t\tany[] = [];\r\n\r\n\t\tif (id)\r\n\t\t{\r\n\t\t\t// Raz des data, si on veut trier sur étab2 et que seulement les etab1 sont dispo ça va pas le faire\r\n\t\t\tresultDatasAdminToValid\t\t= this._taskHomeAdminToValidSave;\r\n\t\t\tresultDatasAdmin\t\t\t= this._taskHomeAdminSave;\r\n\t\t\tresultDatasAdminExpired\t\t= this._taskHomeAdminExpiredSave;\r\n\t\t\tresultDatasMine\t\t\t\t= this._taskHomeMineSave;\r\n\t\t\tresultDatasEpreuve\t\t\t= this._epreuveHomeAdminSave;\r\n\r\n\t\t\tswitch (typeOfFilter)\r\n\t\t\t{\r\n\t\t\t\tcase 'etab':\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdmin,\t\t\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tid, typeOfFilter);\r\n\r\n\t\t\t\t\tresultDatasEpreuve = this.findItemEpreuve(resultDatasEpreuve, id, typeOfFilter);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'sess':\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdmin,\t\t\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tid, typeOfFilter);\r\n\r\n\t\t\t\t\tresultDatasEpreuve = this.findItemEpreuve(resultDatasEpreuve, id, typeOfFilter);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'exam':\r\n//\t\t\t\t\tresultDatasAdminToValid = _.filter(resultDatasAdminToValid, (step: any) => { return step.idExamen === id; });\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdmin,\t\t\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tid, typeOfFilter);\r\n\r\n\t\t\t\t\tresultDatasEpreuve = this.findItemEpreuve(resultDatasEpreuve, id, typeOfFilter);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'matiere':\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdminToValid,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tid, typeOfFilter);\r\n\r\n\t\t\t\t\tresultDatasEpreuve\t\t= this.findItemEpreuve(resultDatasEpreuve,\t\t\tid, typeOfFilter);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'suj':\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdmin,\t\t\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tid, typeOfFilter);\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tid, typeOfFilter);\r\n\r\n\r\n\t\t\t\t\tlet sujet = this.getSujet(id);\r\n\t\t\t\t\tresultDatasEpreuve = this.findItemEpreuve(resultDatasEpreuve, sujet.idMatiere, 'matiere');\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresultDatasAdminToValid = this._taskHomeAdminToValidSave;\r\n\t\t\t\t\tresultDatasAdmin\t\t= this._taskHomeAdminSave;\r\n\t\t\t\t\tresultDatasAdminExpired = this._taskHomeAdminExpiredSave;\r\n\t\t\t\t\tresultDatasMine\t\t\t= this._taskHomeMineSave;\r\n\t\t\t\t\tresultDatasEpreuve\t\t= this._epreuveHomeAdminSave;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Cas aucun => on filtre l'étape d'avant si elle est selectionnée\r\n\t\t\t// ---------------------------------------\r\n\t\t\tresultDatasAdminToValid\t\t= this._taskHomeAdminToValidSave;\r\n\t\t\tresultDatasAdmin\t\t\t= this._taskHomeAdminSave;\r\n\t\t\tresultDatasAdminExpired\t\t= this._taskHomeAdminExpiredSave;\r\n\t\t\tresultDatasMine\t\t\t\t= this._taskHomeMineSave;\r\n\t\t\tresultDatasEpreuve\t\t\t= this._epreuveHomeAdminSave;\r\n\r\n\t\t\tlet filterId: any;\r\n\r\n\t\t\tswitch (typeOfFilter)\r\n\t\t\t{\r\n\t\t\t\tcase 'etab':\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'sess':\r\n\t\t\t\t\tfilterId = this.selectedHomeEtablissement.id;\r\n\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tfilterId, 'etab');\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdmin,\t\t\tfilterId, 'etab');\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tfilterId, 'etab');\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tfilterId, 'etab');\r\n\r\n\t\t\t\t\tresultDatasEpreuve = this.findItemEpreuve(resultDatasEpreuve, filterId, 'etab');\r\n\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\tcase 'exam':\r\n\t\t\t\t\tfilterId = this.selectedHomeSession.id;\r\n\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tfilterId, 'sess');\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdmin,\t\t\tfilterId, 'sess');\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tfilterId, 'sess');\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tfilterId, 'sess');\r\n\r\n\t\t\t\t\tresultDatasEpreuve = this.findItemEpreuve(resultDatasEpreuve, filterId, 'sess');\r\n\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\tcase 'matiere':\r\n\t\t\t\t\tfilterId = this.selectedHomeExamen.id;\r\n\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tfilterId, 'exam');\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdmin,\t\t\tfilterId, 'exam');\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tfilterId, 'exam');\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tfilterId, 'exam');\r\n\r\n\t\t\t\t\tresultDatasEpreuve = this.findItemEpreuve(resultDatasEpreuve, filterId, 'exam');\r\n\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\tcase 'suj':\r\n\t\t\t\t\tfilterId = this.selectedHomeMatiere.id;\r\n\r\n\t\t\t\t\tresultDatasAdminToValid = this.findItem(resultDatasAdminToValid,\tfilterId, 'matiere');\r\n\t\t\t\t\tresultDatasAdmin\t\t= this.findItem(resultDatasAdmin,\t\t\tfilterId, 'matiere');\r\n\t\t\t\t\tresultDatasAdminExpired = this.findItem(resultDatasAdminExpired,\tfilterId, 'matiere');\r\n\t\t\t\t\tresultDatasMine\t\t\t= this.findItem(resultDatasMine,\t\t\tfilterId, 'matiere');\r\n\r\n\t\t\t\t\tresultDatasEpreuve = this.findItemEpreuve(resultDatasEpreuve, filterId, 'matiere');\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._taskHomeAdminToValid\t= resultDatasAdminToValid;\r\n\t\tthis._taskHomeAdmin\t\t\t= resultDatasAdmin;\r\n\t\tthis._taskHomeAdminExpired\t= resultDatasAdminExpired;\r\n\t\tthis._taskHomeMine\t\t\t= resultDatasMine;\r\n\t\tthis._epreuveHomeAdmin\t\t= resultDatasEpreuve;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedHomeEtablissement(): Etablissement\r\n\t{\r\n\t\tlet oReturn = this._selectedHomeEtablissement;\r\n\t\tif (this._selectedHomeEtablissement === null)\r\n\t\t{\r\n\t\t\tlet etablissementId\t\t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedHomeEtablissementId');\r\n\t\t\toReturn\t\t\t\t\t\t\t= this.getEtablissement(etablissementId);\r\n\t\t\tthis._selectedHomeEtablissement = oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedHomeSession():\t\t\tSession\r\n\t{\r\n\t\tlet oReturn = this._selectedHomeSession;\r\n\r\n\t\tif (this._selectedHomeSession === null)\r\n\t\t{\r\n\t\t\tlet sessionId\t\t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedHomeSessionId');\r\n\t\t\toReturn\t\t\t\t\t\t= this.getSession(sessionId);\r\n\t\t\tthis._selectedHomeSession\t= oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedHomeExamen():\t\t\tExamen\r\n\t{\r\n\t\tlet oReturn = this._selectedHomeExamen;\r\n\r\n\t\tif (this._selectedHomeExamen === null)\r\n\t\t{\r\n\t\t\tlet examenId\t\t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedHomeExamenId');\r\n\t\t\toReturn\t\t\t\t\t\t= this.getExamen(examenId);\r\n\t\t\tthis._selectedHomeExamen\t= oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedHomeMatiere():\t\t\tMatiere\r\n\t{\r\n\t\tlet oReturn = this._selectedHomeMatiere;\r\n\r\n\t\tif (this._selectedHomeMatiere === null)\r\n\t\t{\r\n\t\t\tlet matiereId\t\t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedHomeMatiereId');\r\n\t\t\toReturn\t\t\t\t\t\t= this.getEpreuve(matiereId);\r\n\t\t\tthis._selectedHomeMatiere\t= oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tget selectedHomeSujet():\t\t\tSujet\r\n\t{\r\n\t\tlet oReturn = this._selectedHomeSujet;\r\n\t\tif (this._selectedHomeSujet === null)\r\n\t\t{\r\n\t\t\tlet subjectId\t\t\t= this.getStorage(this.userData.mail + '::' + this.userData.account + '::selectedHomeSubjectId');\r\n\t\t\toReturn\t\t\t\t\t= this.getSujet(subjectId);\r\n\t\t\tthis._selectedHomeSujet = oReturn;\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tset selectedHomeEtablissement(selectedEtablissement)\r\n\t{\r\n\t\tif (selectedEtablissement)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeEtablissementId', selectedEtablissement.id);\r\n\t\t}\r\n\t\tthis._selectedHomeEtablissement\t= selectedEtablissement;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tset selectedHomeSession(selectedSession)\r\n\t{\r\n\t\tif (selectedSession)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeSessionId', selectedSession.id);\r\n\t\t}\r\n\t\tthis._selectedHomeSession = selectedSession;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tset selectedHomeExamen(selectedExamen)\r\n\t{\r\n\t\tif (selectedExamen)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeExamenId', selectedExamen.id);\r\n\t\t}\r\n\t\tthis._selectedHomeExamen = selectedExamen;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tset selectedHomeMatiere(selectedMatiere)\r\n\t{\r\n\t\tif (selectedMatiere)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeMatiereId', selectedMatiere.id);\r\n\t\t}\r\n\t\tthis._selectedHomeMatiere = selectedMatiere;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tset selectedHomeSujet(selectedSujet)\r\n\t{\r\n\t\tif (selectedSujet)\r\n\t\t{\r\n\t\t\tlocalStorage.setItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeSubjectId', selectedSujet.id);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeSubjectId');\r\n\t\t}\r\n\t\tthis._selectedHomeSujet\t= selectedSujet;\r\n\t}\r\n\r\n\r\n\tresetSelectedHomeEtablissement()\r\n\t{\r\n\t\tthis._selectedHomeEtablissement = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeEtablissementId');\r\n\t}\r\n\r\n\r\n\tresetSelectedHomeSession()\r\n\t{\r\n\t\tthis._selectedHomeSession = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeSessionId');\r\n\t}\r\n\r\n\r\n\tresetSelectedHomeExamen()\r\n\t{\r\n\t\tthis._selectedHomeExamen = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeExamenId');\r\n\t}\r\n\r\n\r\n\tresetSelectedHomeMatiere()\r\n\t{\r\n\t\tthis._selectedHomeMatiere = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeMatiereId');\r\n\t}\r\n\r\n\r\n\tresetSelectedHomeSujet()\r\n\t{\r\n\t\tthis._selectedHomeSujet = null;\r\n\t\tlocalStorage.removeItem(this.userData.mail + '::' + this.userData.account + '::selectedHomeSubjectId');\r\n\t}\r\n\r\n\r\n\tget epreuveHomeAdmin()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._epreuveHomeAdmin)\r\n\t\t{\r\n\t\t\t// On retourne sous cette forme pour que ça soit plus simple de parser coté html\r\n\t\t\toReturn.push(this._epreuveHomeAdmin[key]);\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tget taskHomeAdmin()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._taskHomeAdmin)\r\n\t\t{\r\n\t\t\toReturn.push(this._taskHomeAdmin[key]);\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tget taskHomeAdminToValid()\r\n\t{\r\n\t\treturn this._taskHomeAdminToValid;\r\n\t}\r\n\r\n\r\n\tgeTaskHomeAdminToValid()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._taskHomeAdminToValid)\r\n\t\t{\r\n\t\t\toReturn.push(this._taskHomeAdminToValid[key]);\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tgetTaskHomeMine()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._taskHomeMine)\r\n\t\t{\r\n\t\t\tif (this._taskHomeMine[key].name)\r\n\t\t\t{\r\n\t\t\t\toReturn.push(this._taskHomeMine[key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tgetTaskHomeAdminExpired()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._taskHomeAdminExpired)\r\n\t\t{\r\n\t\t\t// On retourne sous cette forme pour que ça soit plus simple de parser coté html\r\n\t\t\toReturn.push(this._taskHomeAdminExpired[key]);\r\n\t\t}\r\n\r\n\r\n\t\treturn oReturn;\r\n\t}\r\n\r\n\r\n\tgetTaskHomeMineLength()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._taskHomeMine)\r\n\t\t{\r\n\t\t\tif (this._taskHomeMine[key].name)\r\n\t\t\t{\r\n\t\t\t\toReturn.push(this._taskHomeMine[key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn oReturn.length;\r\n\t}\r\n\r\n\tgetTaskHomeExpiredLength()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._taskHomeAdminExpired)\r\n\t\t{\r\n\t\t\toReturn.push(this._taskHomeAdminExpired[key]);\r\n\t\t}\r\n\r\n\t\treturn oReturn.length;\r\n\t}\r\n\r\n\r\n\tgeTaskHomeAdminToValidLenght()\r\n\t{\r\n\t\tlet oReturn = [];\r\n\t\tfor (let key in this._taskHomeAdminToValid)\r\n\t\t{\r\n\t\t\toReturn.push(this._taskHomeAdminToValid[key]);\r\n\t\t}\r\n\r\n\t\treturn oReturn.length;\r\n\t}\r\n\r\n\r\n\tget taskHomeAdminExpired()\r\n\t{\r\n\t\treturn this._taskHomeAdminExpired;\r\n\t}\r\n\r\n\r\n\tget taskHomeMine()\r\n\t{\r\n\t\treturn this._taskHomeMine;\r\n\t}\r\n\r\n\r\n\tpublic deleteTaskNodeById(psId: string)\r\n\t{\r\n\r\n\t\tfor (let etablissement of this.etablissements)\r\n\t\t{\r\n\t\t\tfor (let session of etablissement.sessions)\r\n\t\t\t{\r\n\t\t\t\tfor (let examen of session.examens)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let matiere of examen.matieres)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (matiere.tasks)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet nIndice \t= 0;\r\n\t\t\t\t\t\t\tlet arrayTask \t= [];\r\n\r\n\t\t\t\t\t\t\tfor (let task of matiere.tasks)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// On a la meme id de tache mais pas pour la meme personne, on l'enlève donc\r\n\t\t\t\t\t\t\t\tif (psId !== task.id)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tarrayTask.push(task);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tnIndice++;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tmatiere.tasks = arrayTask;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic deleteStatsNodeByIndice(pnIndice: number)\r\n\t{\r\n\r\n\t\tthis.statsNode2 = undefined;\r\n\r\n\t}\r\n}\r\n","// Angular\r\nimport { Injectable }\tfrom '@angular/core';\r\nimport { Http }\t\t\tfrom '@angular/http';\r\nimport {Observable} from 'rxjs/Rx';\r\n// Other\r\nimport { UserData }\t\tfrom './user-data';\r\nimport { EtablissementService } from '../services/etablissement.service';\r\nimport { SujetService } from '../services/sujet.service';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * Manage the datas for the workspace component\r\n */\r\nexport class WorkspaceDataService\r\n{\r\n\t_data: any;\r\n _dataReturn: any;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(public http: Http, public user: UserData,\r\n\t\t\t\tpublic etablissementService: EtablissementService,\r\n\t\t\t\tpublic sujetService: SujetService)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\tpublic get data()\r\n\t{\r\n\t\treturn this._dataReturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n processSujet(data: any = null, sujet: any = null)\r\n {\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n filterSujet(sujet: any, queryWords: any, excludeTracks: any, segment: any)\r\n {\r\n\r\n }\r\n\r\n}","import { Injectable }\t\tfrom '@angular/core';\r\nimport { SocketService } from './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } from '../providers/user-data';\r\n\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\n\r\n@Injectable()\r\nexport class AdminService\r\n{\r\n\r\n constructor(private socketService: SocketService,\r\n private userData: UserData)\r\n {\r\n\r\n }\r\n\r\n /**\r\n * Récupération de l'ensemble des paramètres d'administration\r\n */\r\n public getAllAdminParameters()\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'adminParameters',\r\n\t\t\t\t\t'args': {}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\r\n /**\r\n * Mise à jour des paramètres principaux dans l'interface d'administration\r\n * @param datasParameters\r\n */\r\n public updateAdminParameters(datasParameters: any)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'adminParameters',\r\n\t\t\t\t\t'args': {\r\n\t\t\t\t\t\t'datas': datasParameters\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Mise à jour des midèles de mails dans l'administration\r\n\t */\r\n\tpublic updateAdminMailsTemplates(mailsTemplates: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'adminMailsTemplates',\r\n\t\t\t\t\t'args': {\r\n\t\t\t\t\t\t'datas': mailsTemplates\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic deleteScenario(idScenario: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'deleteScenario',\r\n\t\t\t\t\t'args': {\r\n\t\t\t\t\t\t'idScenario': idScenario\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('delete', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable }\t\tfrom '@angular/core';\r\nimport { AuthHttpService }\tfrom './http/authHttp.service';\r\nimport { SocketService }\tfrom './socket.service';\r\nimport { UserData }\t\t\tfrom '../providers/user-data';\r\n\r\nimport { SCClientSocket, SCChannel } from 'socketcluster-client';\r\n\r\nimport {Observable} from 'rxjs/Rx';\r\nimport { ChatService } from './chat.service';\r\n\r\n//declare var SCSocket: any;\r\n@Injectable()\r\n\r\n//\r\n/**\r\n *\r\n */\r\nexport class AuthService\r\n{\r\n\r\n\tprivate static autoRefreshInterval: any = undefined;\r\n\tprivate static nextPing\t\t\t\t\t= 0;\r\n\tprivate static pingInterval\t\t\t\t= 0;\r\n\tprivate static currentSocket: \t\tany;\r\n\tprivate static roomsAvailable: \t\tany;\r\n\r\n\tprivate static mainRooms = \r\n\t[\r\n\t\t'*user::mailuser',\r\n\t\t'*soft::all::creation'\r\n\t];\r\n\r\n\tpublic userToken: string;\r\n\tpublic currentUser: any;\r\n\r\n\t/**\r\n\t * Arret du service de gestion des rooms\r\n\t * Cette fonction est appelé lorsqu'on se déconnecte de l'application\r\n\t */\r\n\tpublic static stopGestionRooms()\r\n\t{\r\n\t\tif (AuthService.autoRefreshInterval)\r\n\t\t{\r\n\t\t\tclearInterval(AuthService.autoRefreshInterval);\r\n\t\t\tAuthService.autoRefreshInterval = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(private authHttpService: \tAuthHttpService,\r\n\t\t\t\tprivate userData: \t\t\tUserData,\r\n\t\t\t\tprivate socketService: \t\tSocketService\r\n\t)\r\n\t{\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Get un socket et verifie si le token est valide (par http si besoin)\r\n\t */\r\n\tpublic checkTokenWsHttp(): Observable\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (!AuthService.autoRefreshInterval)\r\n\t\t{\r\n\t\t\tAuthService.autoRefreshInterval = setInterval(() => { this.gestionSockets(); }, 200);\r\n\t\t}\r\n\r\n\t\tlet observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\t// get du socket\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t\t{\r\n\t\t\t\tAuthService.currentSocket = socket;\r\n\r\n\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// ToComment\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tif (!this.isCurrentSocketValid())\r\n\t\t\t\t{\r\n\t\t\t\t\tlet token = this.userData.getTokenKey();\r\n\t\t\t\t\t//si token\r\n\t\t\t\t\tif (token)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet base64js = this.getTokenJSON(token);\r\n\r\n\t\t\t\t\t\tif (base64js && base64js.exp)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t//token expiré\r\n\t\t\t\t\t\t\tif (base64js.exp < Date.now())\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tobserver.next(false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// on le checke en htttp\r\n\t\t\t\t\t\tthis.refreshToken(token).subscribe(res =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet body = JSON.parse(res.text());\r\n\t\t\t\t\t\t\tif (body.err === false && body.data && body.data.token)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\tthis.userData.setTokenKey(body.data.token);\r\n\t\t\t\t\t\t\t\t// je peux ajouter mes canaux utilisateurs si pas déjà fait\r\n\t\t\t\t\t\t\t\tthis.addRoomForToken(this.getTokenJSON(token));\r\n\t\t\t\t\t\t\t\tobserver.next(true);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t\tobserver.next(false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t// ToComment\r\n\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\tobserver.next(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tif (socket.authState === SCClientSocket.AUTHENTICATED)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// je peux ajouter mes canaux utilisateurs si pas déjà fait depuis authToken du socket\r\n\t\t\t\t\t\tif (this.socketService.roomsAGerer)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.addRoomForToken(socket.authToken);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tobserver.next(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tobserver.next(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\tprivate addRoomForToken(tokenJS: any)\r\n\t{\r\n\t\tif (tokenJS)\r\n\t\t{\r\n\t\t\tif (this.socketService.roomsAGerer)\r\n\t\t\t{\r\n\t\t\t\t// Canal spécifique à l'user (multimachine)\r\n\t\t\t\tif (tokenJS.idUser)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet room = '*user::' + tokenJS.idUser;\r\n\t\t\t\t\tlet value = this.socketService.findRoomAGerer(room);\r\n\t\t\t\t\tif (value < 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socketService.roomsAGerer.push({ name: room, state: 'nosub', watch: true, fct: this.socketService.watchUser.bind(this.socketService), channel: undefined })\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\t// Canal pour la machine\r\n\t\t\t\tif (tokenJS.fp)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet room = '*machine::' + tokenJS.fp;\r\n\t\t\t\t\tlet value = this.socketService.findRoomAGerer(room);\r\n\t\t\t\t\tif (value < 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socketService.roomsAGerer.push({ name: room, state: 'nosub', watch: true, fct: this.socketService.watchMachine.bind(this.socketService), channel: undefined })\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\t// Canal pour le compte + soft/compte\r\n\t\t\t\tif (tokenJS.acc)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet room = '*cpt::' + tokenJS.acc;\r\n\t\t\t\t\tlet value = this.socketService.findRoomAGerer(room);\r\n\t\t\t\t\tif (value < 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socketService.roomsAGerer.push({ name: room, state: 'nosub', watch: true, fct: this.socketService.watchAccount.bind(this.socketService), channel: undefined })\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (tokenJS.idUser)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet room2 = '*soft::' + tokenJS.acc + '::creation';\r\n\t\t\t\t\t\tvalue = this.socketService.findRoomAGerer(room2);\r\n\t\t\t\t\t\tif (value < 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.socketService.roomsAGerer.push({ name: room2, state: 'nosub', watch: true, fct: this.socketService.watchAccountUpdates.bind(this.socketService), channel: undefined })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate getTokenJSON(token: any): any\r\n\t{\r\n\t\tif (token)\r\n\t\t{\r\n\t\t\t//decodage token\r\n\t\t\tlet splitToken: string[] = token.split('.');\r\n\t\t\tif (splitToken.length > 2)\r\n\t\t\t{\r\n\t\t\t\treturn JSON.parse(window.atob(splitToken[1]));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\r\n\t */\r\n\tpublic doLogin(username: any, password: any, fingerprint: any = '')\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\treturn this.authHttpService.doLogin(username, password, fingerprint).share();\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param token\r\n\t */\r\n\tpublic refreshToken(token: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\treturn this.authHttpService.refreshToken(token).share();\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic doLoginWithToken(token: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\treturn this.authHttpService.doLoginWithToken(token).share();\r\n\t}\r\n\r\n\t/**\r\n\t * Check if current socket is in a valid state\r\n\t * SI c'est IS => ça retourne true ou false, là c'est un get\r\n\t */\r\n\tprivate isCurrentSocketValid()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\treturn AuthService.currentSocket && AuthService.currentSocket.state && AuthService.currentSocket.state === SCClientSocket.OPEN;\r\n\t}\r\n\r\n\r\n\tprivate isCurrentSocketAuth()\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\treturn AuthService.currentSocket && AuthService.currentSocket.authState && AuthService.currentSocket.authState == SCClientSocket.AUTHENTICATED;\r\n\t}\r\n\r\n\tprivate ping(token: any)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tthis.refreshToken(token).subscribe(res =>\r\n\t\t{\r\n\t\t\tlet body = JSON.parse(res.text());\r\n\t\t\tif (body.err === false && body.data && body.data.token)\r\n\t\t\t{\r\n\t\t\t\tthis.userData.setTokenKey(body.data.token);\r\n\t\t\t\tAuthService.nextPing = Date.now() + AuthService.pingInterval;;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tAuthService.nextPing = 0;\r\n\t\t\t\tthis.userData.delTokenKey();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Intervalle pour vérifier les connexions et les relancer si elles sont tombées\r\n\t */\r\n\tprivate gestionSockets()\r\n\t{\r\n\t\t//si connection socket valide\r\n\t\tif (!this.isCurrentSocketValid())\r\n\t\t{\r\n\t\t\t//sinon on verifie si on a un token et la variable nextping\r\n\t\t\tlet token = this.userData.getTokenKey();\r\n\r\n\t\t\tif (token)\r\n\t\t\t{\r\n\t\t\t\t//si nextping =0, on lui affecte now+ 20 *1000\r\n\t\t\t\tif (AuthService.nextPing === 0)\r\n\t\t\t\t{\r\n\t\t\t\t\t//decodage token\r\n\t\t\t\t\tlet splitToken: string[] = token.split('.');\r\n\t\t\t\t\tif (splitToken.length > 2)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet base64js = JSON.parse(window.atob(splitToken[1]));\r\n\r\n\t\t\t\t\t\tif (base64js.iat && base64js.exp)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t//si token deja expiré on le supprime\r\n\t\t\t\t\t\t\tif (base64js.exp < (Date.now() / 1000))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.userData.delTokenKey();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet msec = (base64js.exp - base64js.iat) / 0.003;\r\n\t\t\t\t\t\t\t\t//calcul du prochain ping\r\n\t\t\t\t\t\t\t\tif (msec < 5000)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tAuthService.pingInterval = 5 * 1000;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tAuthService.pingInterval = msec;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tAuthService.nextPing = Date.now() + AuthService.pingInterval;\r\n\t\t\t\t\t\t\t\tlet mSec = base64js.exp * 1000;\r\n\t\t\t\t\t\t\t\t// si deja (presque) expiré\r\n\t\t\t\t\t\t\t\tif (AuthService.nextPing > mSec)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tAuthService.nextPing = mSec;\r\n\t\t\t\t\t\t\t\t\tthis.ping(token);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tAuthService.nextPing = Date.now() + (20 * 1000);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tAuthService.nextPing = Date.now() + (20 * 1000);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t//si now > nextping, on reaffecte nextping + appel refresh (ping)\r\n\t\t\t\t\tif (AuthService.nextPing < Date.now())\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tAuthService.nextPing = Date.now() + (5 * 1000);\r\n\t\t\t\t\t\tthis.ping(token);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t//Soket valide\r\n\t\t\tif(this.isCurrentSocketAuth())\r\n\t\t\t{\r\n\t\t\t\tthis.socketService.GererRoom();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SocketService } from './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } \t\t\t\tfrom '../providers/user-data';\r\n\r\n@Injectable()\r\n\r\n/**\r\n *\r\n */\r\nexport class BaremeService\r\n{\r\n constructor(private socketService: SocketService,\r\n private userData: UserData)\r\n {\r\n\r\n }\r\n\r\n\r\n public createBareme(pjDatas: any)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'bareme',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tdatas:\t\t\tpjDatas\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic getBaremes()\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'allBaremes',\r\n\t\t\t\t\t'args': { }\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\r\n\r\n\r\n\t/**\r\n\t * Update epreuve in database from Matiere object given in parameter\r\n\t * @param dataEpreuve\r\n\t */\r\n\tpublic editBareme(psId: string, dataEpreuve: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'bareme',\r\n\t\t\t\t\t'args': {\r\n\t\t\t\t\t\tdatasToUpdate: {\r\n\t\t\t\t\t\t\tdatas: dataEpreuve\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tbaremeId: psId\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n//\t/**\r\n//\t * Update epreuve in database from Matiere object given in parameter\r\n//\t * @param dataEpreuve\r\n//\t */\r\n//\tpublic associateBareme(psBaremeId: string, psEpreuveId: string, psActivePart: string, psActiveQuestion: string, psSubjectType: string)\r\n//\t{\r\n//\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n//\t\t{\r\n//\t\t\tif (socket)\r\n//\t\t\t{\r\n//\t\t\t\tlet data: ISocketData =\r\n//\t\t\t\t\t{\r\n//\t\t\t\t\t\t'iam': 'c-c',\r\n//\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n//\t\t\t\t\t\t'what': SocketWhat.info,\r\n//\t\t\t\t\t\t'cmd': 'baremeToQuestion',\r\n//\t\t\t\t\t\t'args':\r\n//\t\t\t\t\t\t{\r\n//\t\t\t\t\t\t\tdatasToUpdate:\r\n//\t\t\t\t\t\t\t{\r\n//\t\t\t\t\t\t\t\tepreuveId:\t\tpsEpreuveId,\r\n//\t\t\t\t\t\t\t\tactivePart:\t\tpsActivePart,\r\n//\t\t\t\t\t\t\t\tactiveQuestion: psActiveQuestion,\r\n//\t\t\t\t\t\t\t\tsubjectType: psSubjectType,\r\n//\t\t\t\t\t\t\t},\r\n//\t\t\t\t\t\t\tbaremeId: psBaremeId\r\n//\t\t\t\t\t\t}\r\n//\t\t\t\t\t};\r\n//\t\t\t\tsocket.emit('create', data);\r\n//\t\t\t}\r\n//\t\t});\r\n//\t}\r\n\r\n}\r\n\r\n","\r\nimport { Injectable } \t\t\t\tfrom '@angular/core';\r\nimport { SocketService } \t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } \t\t\t\tfrom '../providers/user-data';\r\n\r\n@Injectable()\r\n/**\r\n *\r\n */\r\nexport class CandidatService\r\n{\r\n constructor(private socketService: \tSocketService,\r\n private userData: \t\tUserData)\r\n {\r\n\r\n }\r\n\r\n\r\n public createCandidats(datas: any)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'candidats',\r\n\t\t\t\t\t'args': datas\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\r\n public getCandidatsByParent(idParent: any)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'candidatByParent',\r\n\t\t\t\t\t'args': { idParent: idParent }\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n }\r\n}\r\n\r\n","// Angular\r\nimport { Injectable } \t\t\t\tfrom '@angular/core';\r\nimport {Observable} \t\t\t\tfrom 'rxjs/Rx';\r\nimport { SocketService } \t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat } \tfrom '../models/message.model';\r\n\r\nimport { File as FileItem } from '../classes/file.class';\r\nimport { Sujet } \t\t\tfrom '../classes/sujet.class';\r\n\r\nimport { WorkspaceData } \tfrom '../providers/workspace-data';\r\nimport { UserData } \t\tfrom '../providers/user-data';\r\ndeclare var require: any;\r\n\r\nlet fileSaver = require('file-saver');\r\n\r\nimport { Buffer } \tfrom 'buffer';\r\nimport * as _ \t\tfrom 'underscore';\r\n\r\n@Injectable()\r\nexport class EncryptService\r\n{\r\n\tconstructor(private userData: \tUserData,\r\n\t\tprivate workspaceData:\t\tWorkspaceData,\r\n\t\tprivate socketService: \t\tSocketService)\r\n\t{\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Encryptage des clés AES associées à un ou plusieurs fichiers donnés avec la clé publique d'un utilisateur\r\n\t * donné en paramètre. Envoie de la clé AES encodée au serveur pour enregistrement en base de données\r\n\t * @param files\r\n\t * @param userId\r\n\t */\r\n\tpublic encryptFilesForUSer(files: any[], userId: string, currentSubject: Sujet)\r\n\t{\r\n\t\tconst user = this.userData.getUser(userId);\r\n\r\n\t\t//On vérifie que l'on possède bien la clé RSA publique de l'utilisateur concerné\r\n\t\tif (user && user.publics && user.publics.rsaPublicKey && user.publics.rsaPublicKey !== '')\r\n\t\t{\r\n\t\t\tconst userRsaPublicKey = user.publics.rsaPublicKey;\r\n\r\n\t\t\tif (currentSubject)\r\n\t\t\t{\r\n\t\t\t\tconst filesObj = _.filter(currentSubject.pj, (pj: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\treturn _.contains(files, pj.id);\r\n\t\t\t\t});\r\n\t\t\t\t//Pour chaque fichier dont on souhaite transmettre les droits, on vérifie que l'on possède\r\n\t\t\t\t//la clé AES et on l'envoie au serveur afin que cette clé soit associée au client\r\n\r\n\t\t\t\tfor (const fileToSend of filesObj)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (fileToSend.encryptedAesKeys && fileToSend.encryptedAesKeys.length > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst aesKeyEncoded = fileToSend.encryptedAesKeys[0];\r\n\r\n\t\t\t\t\t\tif (aesKeyEncoded.val && aesKeyEncoded.val !== '' && aesKeyEncoded.version_min)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t//On décrypte la clé AES avec la clé privée de l'utilisateur courant\r\n\t\t\t\t\t\t\tthis.decryptData(aesKeyEncoded.val).then((aesDecoded: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t//On encrypte la clé AES décryptée avec la clé publique de l'utilisateur affecté\r\n\t\t\t\t\t\t\t\tthis.encryptData(aesDecoded, userRsaPublicKey).then((encryptedAes: any) =>\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.sendAesKey(userId, fileToSend.id, encryptedAes, aesKeyEncoded.version_min);\r\n\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t}).catch(error =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t} \r\n\r\n\r\n\t/**\r\n\t * Génération d'une clé RSA publique et d'une clé RSA privée associée\r\n\t */\r\n\tpublic generateRsaKeyPair(): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tlet subtle = this._getSubtleCryptoInstance();\r\n\r\n\t\t\tif (subtle)\r\n\t\t\t{\r\n\t\t\t\tsubtle.generateKey({\r\n\t\t\t\t\tname: \t\t\t\t\"RSA-OAEP\",\r\n\t\t\t\t\tmodulusLength: \t\t4096,\r\n\t\t\t\t\tpublicExponent: \tnew Uint8Array([0x01, 0x00, 0x01]),\r\n\t\t\t\t\thash: \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: \"SHA-1\"\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\t[\"encrypt\", \"decrypt\"]\r\n\t\t\t\t).then((key: any) =>\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tlet promises: PromiseLike[] = [];\r\n\t\t\t\t\tpromises.push(subtle.exportKey('spki', key.publicKey));\r\n\t\t\t\t\tpromises.push(subtle.exportKey('pkcs8', key.privateKey));\r\n\r\n\t\t\t\t\tPromise.all(promises).then(rsaResult =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (rsaResult && rsaResult.length === 2)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet publicKeyBuffer\t\t= rsaResult[0];\r\n\t\t\t\t\t\t\tlet privateKeyBuffer\t= rsaResult[1];\r\n\r\n\t\t\t\t\t\t\tlet result: any =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tpublicKey:\tthis.convertBinaryToPem(publicKeyBuffer, \t'PUBLIC KEY'),\r\n\t\t\t\t\t\t\t\t\tprivateKey: this.convertBinaryToPem(privateKeyBuffer, \t'RSA PRIVATE KEY')\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tresolve(result);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treject(null);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treject(null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Formatage d'une clé RSA\r\n\t * @param binaryData\r\n\t * @param label\r\n\t */\r\n\tpublic convertBinaryToPem(binaryData: any, label: any)\r\n\t{\r\n\r\n\t\tlet base64Cert \t= this.arrayBufferToBase64String(binaryData);\r\n\t\tlet pemCert \t= \"-----BEGIN \" + label + \"-----\\r\\n\";\r\n\t\tlet nextIndex \t= 0;\r\n\r\n\t\tlet lineLength;\r\n\r\n\t\twhile (nextIndex < base64Cert.length)\r\n\t\t{\r\n\t\t\tif (nextIndex + 64 <= base64Cert.length)\r\n\t\t\t{\r\n\t\t\t\tpemCert += base64Cert.substr(nextIndex, 64) + \"\\r\\n\";\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tpemCert += base64Cert.substr(nextIndex) + \"\\r\\n\";\r\n\t\t\t}\r\n\t\t\tnextIndex += 64;\r\n\t\t}\r\n\t\tpemCert += \"-----END \" + label + \"-----\\r\\n\";\r\n\t\treturn pemCert;\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Conversion d'un ArrayBuffer vers une chaine encodée en base64\r\n\t * @param arrayBuffer\r\n\t */\r\n\tpublic arrayBufferToBase64String(arrayBuffer: any)\r\n\t{\r\n\r\n\t\tlet byteArray\t= new Uint8Array(arrayBuffer)\r\n\t\tlet byteString\t= '';\r\n\r\n\t\tfor (var i = 0; i < byteArray.byteLength; i++)\r\n\t\t{\r\n\t\t\tbyteString += String.fromCharCode(byteArray[i]);\r\n\t\t}\r\n\t\treturn btoa(byteString);\r\n\t}\r\n\r\n\r\n\t/**\r\n * Envoie une ou plusieurs clé aes pour un utilisateur donné\r\n * @param publicKey\r\n */\r\n\tsendAesKey(userId: any, fileId: any, aesKey: string, aesKeyVersionMin: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'userFileKey',\r\n\t\t\t\t\t\targs:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tuserId:\t\t\t\tuserId,\r\n\t\t\t\t\t\t\tfileId:\t\t\t\tfileId,\r\n\t\t\t\t\t\t\taesKey:\t\t\t\taesKey,\r\n\t\t\t\t\t\t\taesKeyVersionMin:\taesKeyVersionMin\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Suppression de la clé fichier pour un utilisateur et un fichier donné\r\n\t * @param userId\r\n\t * @param fileId\r\n\t */\r\n\tdeleteAesKey(userId: any, fileId: any)\r\n\t{\r\n\t\t// On vérifie si l'utilisateur dont on souhaite supprimer des clés de fichiers\r\n\t\t// n'est pas un super utilisateur ou un administrateur\r\n\t\tconst isAdmin = this.userData.isUserAdmin(userId);\r\n\t\tconst isSuper = this.userData.isUserSuperviseur(userId);\r\n\r\n\t\tif (isAdmin === false && isSuper === false)\r\n\t\t{\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t'cmd': 'userFileKey',\r\n\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tuserId: userId,\r\n\t\t\t\t\t\t\t\tfileId: fileId\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('delete', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n /**\r\n * Envoie la clé publique sur le serveur pour que cette dernière soit enregistrée en base de donnée\r\n * @param publicKey\r\n */\r\n\tsendRsaPublic(publicKey: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'userPublicKey',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpublicKey: publicKey\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tencryptData(datas: any, publicRsaKey: any)\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tlet subtle = this._getSubtleCryptoInstance();\r\n\r\n\t\t\tif (subtle)\r\n\t\t\t{\r\n\t\t\t\tlet algorithmImport =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: \"RSA-OAEP\",\r\n\t\t\t\t\t\thash:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: \"SHA-1\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsubtle.importKey(\"spki\", this.convertPemToBinary(publicRsaKey), algorithmImport, true, ['encrypt']).then((publicCryptoKey: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet testBuffer\t\t\t= Buffer.from(datas, 'ascii');\r\n\t\t\t\t\tlet algorithmEncrypt\t=\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: 'RSA-OAEP'\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsubtle.encrypt(algorithmEncrypt, publicCryptoKey, testBuffer).then((encrypted: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet hexDataEncrypted = this.bufferToHex(encrypted);\r\n\t\t\t\t\t\tresolve(hexDataEncrypted);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treject(null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Decrypt data encrypted using private RSA key\r\n\t * @param datas\r\n\t */\r\n\tdecryptData(datas: any, rsaPRivate: any = undefined): Promise\r\n\t{\r\n\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tlet subtle = this._getSubtleCryptoInstance();\r\n\t\t\tif (subtle)\r\n\t\t\t{\r\n\t\t\t\tlet rsaPrivate = rsaPRivate || this.userData.getRSAPrivate();\r\n\t\t\t\tif (rsaPrivate)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet dataToDecrypt = new Uint8Array(datas.match(/[\\da-f]{2}/gi).map((h: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn parseInt(h, 16);\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t\tlet algorithmImport =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: \"RSA-OAEP\",\r\n\t\t\t\t\t\t\thash:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tname: \"SHA-1\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsubtle.importKey(\"pkcs8\", this.convertPemToBinary(rsaPrivate), algorithmImport, true, ['decrypt'])\r\n\t\t\t\t\t\t.then((privateCryptoKey: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet algorithmDecrypt =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tname: 'RSA-OAEP',\r\n\t\t\t\t\t\t\t\t\thash:\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: \"SHA-1\"\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tsubtle.decrypt(algorithmDecrypt, privateCryptoKey, dataToDecrypt).then((decrypted: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet strDecoded = String.fromCharCode.apply(null, new Uint8Array(decrypted));\r\n\t\t\t\t\t\t\t\tresolve(strDecoded);\r\n\r\n\r\n\t\t\t\t\t\t\t}).catch((err: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t}).catch((err: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t} \r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\treject(null);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treject(null);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Déchiffrement d'un fichier en utilisant une clé et vecteur AES 256\r\n\t */\r\n\tdecryptAesFile(blob: Blob, mimeType: string, sharedkey: string, vectorkey: string): Promise\r\n\t{\r\n\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tconst subtle = this._getSubtleCryptoInstance();\r\n\r\n\t\t\tif (subtle)\r\n\t\t\t{\r\n\t\t\t\tconst reader = new FileReader();\r\n\r\n\t\t\t\t// Attente du chargement du blob\r\n\t\t\t\treader.onload = () =>\r\n\t\t\t\t{\r\n\t\t\t\t\t// Chargment de la clé dans SUBTLE\r\n\t\t\t\t\tsubtle.importKey(\r\n\r\n\t\t\t\t\t\t// hex transformé en Array8\r\n\t\t\t\t\t\t'raw', this.hexStringToByte(sharedkey),\r\n\t\t\t\t\t\t{ // this is the algorithm options\r\n\r\n\t\t\t\t\t\t\tname: 'AES-CBC',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t['encrypt', 'decrypt']\r\n\t\t\t\t\t).then((key: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// Déchiffrement\r\n\t\t\t\t\t\tsubtle.decrypt(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tname: 'AES-CBC',\r\n\t\t\t\t\t\t\t\tiv: this.hexStringToByte(vectorkey)\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tkey,\r\n\t\t\t\t\t\t\treader.result // ArrayBuffer\r\n\t\t\t\t\t\t).then((decrypted: ArrayBuffer) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// le blob veut un talbeau et pas un array buffer\r\n\t\t\t\t\t\t\tresolve(new Blob([decrypted],\r\n\t\t\t\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\t\t\t\ttype: mimeType\r\n\t\t\t\t\t\t\t\t}));\r\n\r\n\t\t\t\t\t\t}).catch((error: Error) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treject(null);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}).catch((error: Error) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treject(null);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t\treader.readAsArrayBuffer(blob);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treject(null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * convertion d'une chaine encodée en base64 vers on tableau d'octets\r\n\t * @param base64\r\n\t */\r\n\tpublic b64ToArray(base64: any)\r\n\t{\r\n\r\n\t\tlet binary_string \t= window.atob(base64);\r\n\t\tlet len \t\t\t= binary_string.length;\r\n\t\tlet bytes \t\t\t= new Uint8Array(len);\r\n\r\n\t\tfor (let i = 0; i < len; i++)\r\n\t\t{\r\n\t\t\tbytes[i] = binary_string.charCodeAt(i);\r\n\t\t}\r\n\r\n\t\treturn bytes.buffer;\r\n\t}\r\n\r\n\r\n\tbufferToHex(buffer: any)\r\n\t{\r\n//\t\tlet sVarTest:any;\r\n\t\treturn Array.prototype.map.call(new Uint8Array(buffer), (sVarTest:any) => ('00' + sVarTest.toString(16)).slice(-2)).join('');\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Retourne une string hex depuis un tableau de byte\r\n\t */\r\n\tbyteToHexString(uint8arr: Uint8Array): string\r\n\t{\r\n\t\tif (!uint8arr)\r\n\t\t{\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tvar hexStr = '';\r\n\t\tfor (var i = 0; i < uint8arr.length; i++)\r\n\t\t{\r\n\t\t\tvar hex = (uint8arr[i] & 0xff).toString(16);\r\n\t\t\thex \t= (hex.length === 1) ? '0' + hex : hex;\r\n\t\t\thexStr += hex;\r\n\t\t}\r\n\r\n\t\treturn hexStr.toUpperCase();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Retourne un tableau de byte depuis une chaine hexa\r\n\t */\r\n\tpublic hexStringToByte(str: string): Uint8Array\r\n\t{\r\n\t\tif (!str)\r\n\t\t{\r\n\t\t\treturn new Uint8Array(0);\r\n\t\t}\r\n\r\n\t\tvar a = [];\r\n\t\tfor (var i = 0, len = str.length; i < len; i += 2)\r\n\t\t{\r\n\t\t\ta.push(parseInt(str.substr(i, 2), 16));\r\n\t\t}\r\n\r\n\t\treturn new Uint8Array(a);\r\n\t}\r\n\r\n\r\n\tpublic arrayBufferToBase64(arrayBuffer: any)\r\n\t{\r\n\r\n\t\tlet binary\t= '';\r\n\t\tlet bytes\t= new Uint8Array(arrayBuffer);\r\n\t\tlet len \t= bytes.byteLength;\r\n\r\n\t\tfor (let i = 0; i < len; i++)\r\n\t\t{\r\n\t\t\tbinary += String.fromCharCode(bytes[i]);\r\n\t\t}\r\n\t\treturn window.btoa(binary);\r\n\t}\r\n\r\n\r\n\tpublic stringToArrayBuffer(strDatas: string)\r\n\t{\r\n\t\tlet buf \t= new ArrayBuffer(strDatas.length * 2);\r\n\t\tlet bufView = new Uint8Array(buf);\r\n\r\n\t\tfor (let i = 0, strLen = strDatas.length; i < strLen; i++)\r\n\t\t{\r\n\t\t\tbufView[i] = strDatas.charCodeAt(i);\r\n\t\t}\r\n\t\treturn buf;\r\n\t}\r\n\r\n\t\r\n\t/**\r\n\t * Convertion d'une clé RSA formatée pem en clé RSA binaire\r\n\t * @param pem\r\n\t */\r\n\tpublic convertPemToBinary(pem: any)\r\n\t{\r\n\t\tlet lines = pem.split('\\n');\r\n\t\tlet encoded = '';\r\n\t\tfor (let i = 0; i < lines.length; i++)\r\n\t\t{\r\n\t\t\tif (lines[i].trim().length > 0 &&\r\n\t\t\t\tlines[i].indexOf('-----BEGIN RSA PRIVATE KEY-----') < 0 &&\r\n\t\t\t\tlines[i].indexOf('-----BEGIN RSA PUBLIC KEY-----') < 0 &&\r\n\t\t\t\tlines[i].indexOf('-----BEGIN PUBLIC KEY-----') < 0 &&\r\n\t\t\t\tlines[i].indexOf('-----END PUBLIC KEY-----') < 0 &&\r\n\t\t\t\tlines[i].indexOf('-----BEGIN PRIVATE KEY-----') < 0 &&\r\n\t\t\t\tlines[i].indexOf('-----END PRIVATE KEY-----') < 0 &&\r\n\t\t\t\tlines[i].indexOf('-----END RSA PRIVATE KEY-----') < 0 &&\r\n\t\t\t\tlines[i].indexOf('-----END RSA PUBLIC KEY-----') < 0)\r\n\t\t\t{\r\n\r\n\t\t\t\tencoded += lines[i].trim();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.b64ToArray(encoded);\r\n\t}\r\n\r\n\r\n\tprivate _getSubtleCryptoInstance()\r\n\t{\r\n\t\tlet instance: any;\r\n\t\tif (window.crypto.subtle !== undefined)\r\n\t\t{\r\n\t\t\tinstance = window.crypto.subtle;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (crypto.subtle !== undefined)\r\n\t\t\t{\r\n\t\t\t\tinstance = crypto.subtle;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t//Compatibilité Safari\r\n//\t\t\t\tif (crypto['webkitSubtle'] !== undefined)\r\n//\t\t\t\t{\r\n//\t\t\t\t\tinstance = crypto['webkitSubtle'];\r\n//\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\treturn instance;\r\n\t}\r\n}\r\n","// Angular\r\nimport { Injectable }\t \t\t\tfrom '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n// Other\r\nimport { EpreuveHttpService } \t\tfrom './http/epreuveHttp.service';\r\nimport { Matiere } \t\t\t\t\tfrom '../classes/matiere.class';\r\nimport { Comment }\t\t\t\t\tfrom '../classes/comment.class';\r\nimport { SocketService } \t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } \t\t\t\tfrom '../providers/user-data';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class EpreuveService\r\n{\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n constructor(private epreuveHttpService: EpreuveHttpService,\r\n\t\t\t\tpublic socketService: SocketService,\r\n\t\t\t\tprivate userData: UserData)\r\n {\r\n\r\n }\r\n\r\n\r\n /**\r\n * Add new epreuve in database from Matiere object given in parameter\r\n * Parents ids are given by the parentPath parameter\r\n */\r\n public addEpreuve(epreuve: Matiere, parentPath: any[] = [])\r\n {\r\n\t\tlet datas \t\t= epreuve.toJson();\r\n\t\tdatas.idparents = parentPath;\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: 'epreuve',\r\n\t\t\t\t\t\t\tnode: datas\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\r\n\r\n\t/**\r\n\t * Update epreuve in database from Matiere object given in parameter\r\n\t * @param dataEpreuve\r\n\t */\r\n\tpublic editEpreuve(dataEpreuve: Matiere)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: 'epreuve',\r\n\t\t\t\t\t\t\tnode: dataEpreuve.toJson()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Get all epreuves in database relative to user account and parameters given:\r\n *\r\n * -idEpreuve: if this parameter is defined, return the Matiere object corresponding to the value id\r\n * -idExamen: if this parameter is defined (and if the parameter idEpreuve is not), return the Matiere\r\n * objects wich the examen parent matches the value id.\r\n *\r\n * Return a list of Matiere objects\r\n */\r\n\tpublic getEpreuves(idEpreuve: string, idExamen: string): Observable\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.epreuveHttpService.getEpreuves(idEpreuve, idExamen).subscribe(res =>\r\n\t\t\t{\r\n\t\t\t\tlet resJson\t\t\t\t= res.json();\r\n\t\t\t\tlet examens: Matiere[]\t= [];\r\n\r\n\t\t\t\tif (resJson.data && resJson.data.rows)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let row of resJson.data.rows)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (row)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\texamens.push(Matiere.fromJsonObject(row));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tobserver.next(examens);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n}\r\n\r\n\r\n","// Angular\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n// Other\r\nimport { EtablissementHttpService } from './http/etablissementHttp.service';\r\nimport { Etablissement }\t\t\tfrom '../classes/etablissement.class';\r\nimport { SocketService }\t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData }\t\t\t\t\tfrom '../providers/user-data';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class EtablissementService\r\n{\r\n\r\n\r\n\tprivate socket: any = undefined;\r\n\t/**\r\n\t *\r\n\t */\r\n\r\n\r\n\tconstructor(private etablissementHttpService:\tEtablissementHttpService,\r\n\t\t\t\tpublic\tsocketService:\t\t\t\tSocketService,\r\n\t\t\t\tprivate userData:\t\t\t\t\tUserData)\r\n\t{\r\n\t\tthis.socket = socketService.getSocketConnection();\r\n\t}\r\n\r\n\r\n /**\r\n * Add new etablissement in database from Etablissement object given in parameter\r\n */\r\n\tpublic addEtablissement(dataEtab: Etablissement)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype:\t'etablissement',\r\n\t\t\t\t\t\t\tnode:\tdataEtab.toJson()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Update etablissement in database from Etablissement object given in parameter\r\n */\r\n\tpublic editEtablissement(dataEtab: Etablissement)\r\n\t{\r\n\t\treturn this.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t\t'args': \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: 'etablissement',\r\n\t\t\t\t\t\t\t\tnode: dataEtab.toJson()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Get all etablissements in database from the user account\r\n * Return a list of Etablissement object\r\n */\r\n\tpublic getEtablissementsAvailable()\r\n\t{\r\n\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t{\r\n\t\t\tthis.socketService.on('read', this._onRessourcesReturned.bind(this));\r\n\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t'ressources',\r\n\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tlet tasksAvailable\t= this.userData.getTasksHomeForMe();\r\n\t\t\tlet sUserId\t\t\t= this.userData.getUserId();\r\n\t\t\tlet eSocketWhat: SocketWhat.request;\r\n\t\t\tlet arrayEpreuves = _.map(tasksAvailable, (task: any) => { return task.idepreuve; });\r\n\r\n\t\t\t//On effectue un appel socket pour récupérer l'épreuve associé à la tache\r\n\t\t\t//ainsi que tous ses parents\r\n\t\t\tif (sUserId && arrayEpreuves.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\t\t\tlet data: ISocketData = \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t'name': sUserId,\r\n\t\t\t\t\t\t\t\t'what': eSocketWhat,\r\n\t\t\t\t\t\t\t\t'cmd': 'node.info',\r\n\t\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tnodeOption:\t'wp',\r\n\t\t\t\t\t\t\t\t\tnodes:\t\tarrayEpreuves\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Suppression d'un noeud du système et de le'ensemble des noeuds enfants, des sujets, des taches et des fichiers\r\n\t * @param element\r\n\t */\r\n\tpublic removeElement(element: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\tlet data: ISocketData = \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tnodeId: element.id\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('delete', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Fonction appelée automatiquement à la récupération de ressources\r\n\t */\r\n\tprivate _onRessourcesReturned(datas: any)\r\n\t{\r\n\r\n\t\tif (datas.cmd && datas.cmd === 'ressources')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.data && datas.args.data.ressources)\r\n\t\t\t{\r\n\t\t\t\tlet nodes = _.keys(datas.args.data.ressources);\r\n\t\t\t\tthis.userData.setRessources(nodes);\r\n\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t'cmd': 'node.info',\r\n\t\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnodes:\t\tnodes,\r\n\t\t\t\t\t\t\t\tnodeOption: 'wc',\r\n\t\t\t\t\t\t\t\tdepth:\t\t-1\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","// Angular\r\nimport { Injectable }\t \t\t\tfrom '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n// Other\r\nimport { EpreuveHttpService } \t\tfrom './http/epreuveHttp.service';\r\nimport { Event }\t\t\t\t\tfrom '../classes/event.class';\r\nimport { SocketService } \t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } \t\t\t\tfrom '../providers/user-data';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class EventService\r\n{\r\n\t\r\n\t/**\r\n\t * \r\n\t */\r\n constructor(private epreuveHttpService: EpreuveHttpService,\r\n\t\t\t\tpublic socketService: SocketService,\r\n\t\t\t\tprivate userData: UserData)\r\n {\r\n\r\n }\r\n\r\n\r\n /**\r\n * Add new epreuve in database from Matiere object given in parameter\r\n * Parents ids are given by the parentPath parameter\r\n */\r\n public addEvent(event: Event)\r\n {\r\n\t\tlet datas = event.toJson();\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'calendar',\r\n\t\t\t\t\t\t'args': \r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tnode: datas\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\r\n\r\n\t/** \r\n\t * Update epreuve in database from Matiere object given in parameter\r\n\t * @param dataEpreuve \r\n\t */\r\n\tpublic editEvent(event: Event)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'calendar',\r\n\t\t\t\t\t'args': \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tnode:\tevent.toJson()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Get all epreuves in database relative to user account and parameters given:\r\n * \r\n * -idEpreuve: if this parameter is defined, return the Matiere object corresponding to the value id\r\n * -idExamen: if this parameter is defined (and if the parameter idEpreuve is not), return the Matiere\r\n * objects wich the examen parent matches the value id.\r\n *\r\n * Return a list of Matiere objects\r\n */\r\n\tpublic getEvents(idNode: string)\r\n\t{\r\n\t\t\t\t\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'calendar',\r\n\t\t\t\t\t'args': \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tnode: idNode\r\n\t\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n\r\n","// Angular\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n// Other\r\nimport { ExamenHttpService }\t\tfrom './http/examenHttp.service';\r\nimport { Examen }\t\t\t\t\tfrom '../classes/examen.class';\r\nimport { Comment }\t\t\t\t\tfrom '../classes/comment.class';\r\nimport { SocketService } \t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } \t\t\t\tfrom '../providers/user-data';\r\n\r\n@Injectable()\r\nexport class ExamenService\r\n{\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(private examenHttpService: \tExamenHttpService,\r\n\t\t\t\tpublic socketService: \t\tSocketService,\r\n\t\t\t\tprivate userData: \t\t\tUserData)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n /**\r\n * Add new examen in database from Examen object given in parameter\r\n * Parents ids are given by the parentPath parameter\r\n */\r\n\tpublic addExamen(examen: Examen, parentPath: any[] = [])\r\n\t{\r\n\t\tlet datas \t\t= examen.toJson();\r\n\t\tdatas.idparents = parentPath;\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t\t'args': \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: 'examen',\r\n\t\t\t\t\t\t\tnode: datas\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n * Update examen in database from Examen object given in parameter\r\n */\r\n\tpublic editExamen(dataExamen: Examen)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t'args': \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: 'examen',\r\n\t\t\t\t\t\tnode:\tdataExamen.toJson()\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Get all examens in database relative to user account and parameters given:\r\n *\r\n * -cascade: if false, return only examens objects, if true return Examens object with childs\r\n * (epreuves) in each objects\r\n * -idExamen: if this parameter is defined, return the Examen object corresponding to the value id\r\n * -idSession: if this parameter is defined (and if the parameter idExamen is not), return the Examen\r\n * objects wich the session parent matches the value id.\r\n *\r\n * Return a list of Examen objects\r\n */\r\n\tpublic getExamens(cascade: boolean, idExamen: string, idSession: string, callback: (result: any) => void)\r\n\t{\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'node.info',\r\n\t\t\t\t\t'args': \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnode: \t\tidSession,\r\n\t\t\t\t\t\tnodeOption: 'wc',\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.examenHttpService.getExamens(cascade, idExamen, idSession).subscribe(res =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet resJson\t\t\t\t= res.json();\r\n\t\t\t\t\tlet examens: Examen[]\t= [];\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tif (resJson.data && resJson.data.rows)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let row of resJson.data.rows)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (row)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\texamens.push(Examen.fromJsonObject(row));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcallback(examens);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n\r\n","// Angular\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport { File } from '../classes/file.class';\r\nimport { Comment } from '../classes/comment.class';\r\nimport { Note } from '../classes/note.class';\r\n\r\nimport { FileHttpService }\t\t\tfrom './http/fileHttp.service';\r\nimport { SocketService }\t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } \t\t\t\tfrom '../providers/user-data';\r\nimport { VaultData }\t\t\t\tfrom '../providers/vault-data';\r\nimport { WorkspaceData } \t\t\tfrom '../providers/workspace-data';\r\n\r\nimport { EncryptService } from '../services/encrypt.service';\r\ndeclare const require: any;\r\n\r\n\r\nlet fileSaver = require('file-saver');\r\nlet JSZip\t\t= require('jszip');\r\n\r\nimport {Buffer}\t\tfrom 'buffer/';\r\nimport * as _\t\tfrom 'underscore';\r\nimport * as crypto\tfrom \"crypto-browserify\";\r\n\r\n//let fileSaver: any;\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class FileService\r\n{\r\n private socket: any = undefined;\r\n\r\n private listExtensionsFileSelector = '.jpeg, .jpg, .gif, .png, .bmp, .tga, .txt, .doc, .docx, .xls, .xlsx, .odt, .pdf, .html, .csv, .json, .zip, .tar, .rar, .7z, .xml, .tex, .ctx, .ltx, .tif, .tiff';\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n constructor(private fileHttpService:\tFileHttpService,\r\n private socketService:\t\tSocketService,\r\n private workspaceData:\t\tWorkspaceData,\r\n private encryptService:\t\tEncryptService,\r\n\t\t\t\tprivate userData:\t\t\tUserData,\r\n\t\t\t\tprivate vaultData:\t\t\tVaultData)\r\n\t{\r\n\t\tthis.socket = socketService.getSocketConnection();\r\n\t}\r\n\r\n\r\n /**\r\n * Add file in database indexed by given id\r\n */\r\n public addFile(file: File)\r\n {\r\n return this.fileHttpService.addFile(file).share();\r\n }\r\n\r\n\r\n /**\r\n * Get all files wich belong to a subject given by his id\r\n *\r\n * @param subjectId\r\n */\r\n\tpublic getFiles(subjectId: string)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t'files',\r\n\t\t\t\t\t\t'args': { idSubject: subjectId }\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Get detailed file from infos in the file object given\r\n *\r\n * @param file\r\n */\r\n\tpublic getDetailsFile(file: File)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'files',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tidSubject:\tfile.idSubject,\r\n\t\t\t\t\t\t\tid:\t\t\tfile.id,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\r\n\t\t\t\tlet dataHistoric: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'history',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbucket:\t\t'files',\r\n\t\t\t\t\t\t\tkey:\t\tfile.id,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', dataHistoric);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Get detailed file from infos in the file object given\r\n *\r\n * @param file\r\n */\r\n\tpublic getHistoricFile(file: File)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\r\n\t\t\t\tlet dataHistoric: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'history',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbucket:\t'files',\r\n\t\t\t\t\t\t\tkey:\tfile.id,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', dataHistoric);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Remove file in database indexed by given id\r\n */\r\n public removeFile(file: File)\r\n {\r\n return this.fileHttpService.removeFile(file).share();\r\n }\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic updateFile(fileJson: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'file',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfile: fileJson\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic deleteFile(file: any, definitive: boolean = false)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'file',\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfileId:\t\t\tfile.id,\r\n\t\t\t\t\t\tepreuveId:\t\tfile.idEpreuve,\r\n\t\t\t\t\t\tsubjectId:\t\tfile.idSubject,\r\n\t\t\t\t\t\tdefinitive:\t\tdefinitive\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('delete', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic restoreFile(file: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'restoreFile',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileId:\t\tfile.id,\r\n\t\t\t\t\t\t\tepreuveId:\tfile.idEpreuve,\r\n\t\t\t\t\t\t\tsubjectId:\tfile.idSubject\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic addFileNote(file: File, note: Note)\r\n\t{\r\n\t\treturn this.fileHttpService.addFileNote(file, note);\r\n\t}\r\n\r\n\r\n\tpublic addFileVersion(file: File)\r\n\t{\r\n\t\treturn this.fileHttpService.addFileVersion(file);\r\n\t}\r\n\r\n\r\n\tpublic downloadContentFile(file: any, typeFile: string = 'file'): Observable\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupère le contenu d'un fichier\r\n\t\t// ---------------------------------------\r\n\t\tconst observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.fileHttpService.downloadFile(file, typeFile).subscribe((res) =>\r\n\t\t\t{\r\n\t\t\t\tobserver.next(res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic saveForEdit(file: File, mustDecrypt: boolean = true): Observable\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupère le contenu d'un fichier et le télécharge\r\n\t\t// sur le navigateur du client\r\n\t\t// ---------------------------------------\r\n\r\n\t\tconst observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.downloadContentFile(file).subscribe((res) =>\r\n\t\t\t{\r\n\t\t\t\tconst body = ( res)._body;\r\n\r\n\t\t\t\tif (body)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst mimeType \t\t= body.type || this._getMimeType(file.extension);\r\n\t\t\t\t\tconst blob: Blob \t= new Blob([body], { type: mimeType });\r\n\t\t\t\t\t// Cas spécifique: l'extension n'est pas ajoutée automatiquement\r\n\t\t\t\t\t// dans le cas d'un fichier tex\r\n\t\t\t\t\tswitch (mimeType)\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tcase 'application/x-tex':\r\n\t\t\t\t\t\t\tconst nameExtension: any = file.name.split('.').pop();\r\n\t\t\t\t\t\t\tif (nameExtension !== 'ltx' && nameExtension !== 'tex')\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfile.name += '.ltx';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (mustDecrypt === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.decryptFileWithAES(file, blob, mimeType).then((blobResult) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.workspaceData.fileForEdit = blobResult;\r\n\t\t\t\t\t\t\tobserver.next(true);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.fileForEdit = blob;\r\n\t\t\t\t\t\tobserver.next(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic downloadFile(file: File, mustDecrypt: boolean = true): Observable\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupère le contenu d'un fichier et le télécharge\r\n\t\t// sur le navigateur du client\r\n\t\t// ---------------------------------------\r\n\r\n\t\t// On réinitialise l'objet global URL au cas ou si ce dernier aurait été écrasé (MacGiver)\r\n\t\twindow.URL = this.workspaceData.urlCreator;\r\n\r\n\t\tlet observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tfile.isDownloading = true;\r\n\r\n\t\t\tthis.downloadContentFile(file).subscribe((res) =>\r\n\t\t\t{\r\n\r\n\t\t\t\tlet body = ( res)._body;\r\n\r\n\t\t\t\tif (body)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet mimeType \t= body.type || this._getMimeType(file.extension);\r\n\t\t\t\t\tlet blob: Blob \t= new Blob([body], { type: mimeType });\r\n\r\n\t\t\t\t\tif (mustDecrypt === true)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.decryptFileWithAES(file, blob, mimeType).then((blobResult) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileSaver.saveAs(blobResult, file.name);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfileSaver.saveAs(blob, file.name);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tfile.isDownloading = false;\r\n\t\t\t\tobserver.next(true);\r\n\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\tpublic downloadContentFileFromId(id: any): Observable\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupère le contenu d'un fichier\r\n\t\t// ---------------------------------------\r\n\t\tlet observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.fileHttpService.downloadFromId(id).subscribe((res) =>\r\n\t\t\t{\r\n\t\t\t\tobserver.next(res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n /**\r\n * Suppression d'un fichier à partir de son identifiant dans le système de stockage\r\n * @param id\r\n */\r\n\tpublic deleteFromId(id: any): Observable\r\n\t{\r\n\t\tlet observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.fileHttpService.deleteFromId(id).subscribe((res) =>\r\n\t\t\t{\r\n\t\t\t\tobserver.next(res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\tpublic downloadFromId(path: any, idFile: any, name: string, type: string, mustDecrypt: boolean = true)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// Récupère le contenu d'un fichier et le télécharge\r\n\t\t// sur le navigateur du client\r\n\t\t// ---------------------------------------\r\n\t\twindow.URL = this.workspaceData.urlCreator;\r\n\r\n\t\tif (idFile)\r\n\t\t{\r\n\t\t\tlet file: any = this.workspaceData.getTreeElement(idFile);\r\n\r\n\t\t\tif (file && file['encryptedAesKeys'] && file['encryptedAesKeys'].length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.fileHttpService.downloadFromId(path).subscribe((res) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet body = ( res)._body;\r\n\r\n\t\t\t\t\tif (body)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet blob: Blob = new Blob([body], { type: type });\r\n\r\n\t\t\t\t\t\tif (mustDecrypt === true)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.decryptFileWithAES(file, blob, type).then((blobResult) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tfileSaver.saveAs(blobResult, name);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileSaver.saveAs(blob, name);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n /**\r\n * Download in blob objects all thumbnails for a given file\r\n */\r\n\tpublic downloadThumbnail(file: File, mustDecrypt: boolean = true): Observable\r\n\t{\r\n\t\tconst observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.fileHttpService.downloadFile(file, 'thumbnail').subscribe((res) =>\r\n\t\t\t{\r\n\t\t\t\tconst mimeType \t\t\t= 'image/jpeg';\r\n\t\t\t\tconst blobThumb: Blob \t= new Blob([( res)._body], { type: mimeType });\r\n\r\n\t\t\t\tlet thumbDatas: any;\r\n\t\t\t\tconst urlCreator = this.workspaceData.urlCreator;\r\n\r\n\t\t\t\tif (mustDecrypt === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.decryptFileWithAES(file, blobThumb, mimeType).then((blobResult) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthumbDatas =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tblob: \tblobResult,\r\n\t\t\t\t\t\t\turl: \turlCreator.createObjectURL(blobResult)\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tobserver.next(thumbDatas);\r\n\t\t\t\t\t}).catch((error) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tobserver.next();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthumbDatas =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tblob: blobThumb,\r\n\t\t\t\t\t\t\turl: urlCreator.createObjectURL(blobThumb)\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\tobserver.next(thumbDatas);\r\n\t\t\t\t}\r\n\t\t\t}, (err) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tobserver.next();\r\n\t\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic downloadFiles(files: File[], nameArchive: string, password: string = null): Observable\r\n\t{\r\n\t\twindow.URL = this.workspaceData.urlCreator;\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tconst observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.fileHttpService.downloadFiles(files, password).subscribe((res) =>\r\n\t\t\t{\r\n\t\t\t\tconst mimeType: any\t= this._getMimeType('zip');\r\n\t\t\t\tconst blob: Blob\t= new Blob([( res)._body], { type: mimeType });\r\n\r\n\t\t\t\tfileSaver.saveAs(blob, nameArchive);\r\n\t\t\t\tobserver.next(true);\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\tpublic decryptFileWithAES(file: any, blobInput: Blob, type: string): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tthis.getDecryptedAESKey(file).then((aesFileKey =>\r\n\t\t\t{\r\n\t\t\t\tif (aesFileKey)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst objAesKey = JSON.parse(aesFileKey);\r\n\r\n\t\t\t\t\tthis.encryptService.decryptAesFile(blobInput, type, objAesKey.sharedkey, objAesKey.vectorkey).then((blobResult) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresolve(blobResult);\r\n\r\n\t\t\t\t\t}).catch((error) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t})).catch((error) =>\r\n\t\t\t{\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic createArchivePassation(passationStruct: any, subjectsToAdd: any[]): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tconst subjectsInfos: any[] = [];\r\n\r\n\t\t\tfor (const subject of subjectsToAdd)\r\n\t\t\t{\r\n\t\t\t\tconst newSubject: any \t= {};\r\n\t\t\t\tnewSubject.id \t\t\t= subject.id;\r\n\r\n\t\t\t\tif (subject.datas)\r\n\t\t\t\t{\r\n\t\t\t\t\tnewSubject.type = subject.datas.etat;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewSubject.name = subject.name;\r\n\t\t\t\tnewSubject.pj\t= [];\r\n\r\n\t\t\t\tlet nameMainFile;\r\n\r\n\t\t\t\tif (subject.pj)\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tfor (let pj of subject.pj)\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tconst newPj: any = {};\r\n\r\n\t\t\t\t\t\tnewPj.id\t\t= pj.id;\r\n\t\t\t\t\t\tnewPj.idSubject = pj.idSubject;\r\n\t\t\t\t\t\tnewPj.name\t\t= pj.name;\r\n\r\n\t\t\t\t\t\tconst compoName: any = pj.name.split('.');\r\n\t\t\t\t\t\tif (compoName.length > 1 && compoName[1] === 'json')\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tnameMainFile = pj.name;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tnewSubject.pj.push(newPj);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewSubject.nameMainFile = nameMainFile;\r\n\r\n\t\t\t\tsubjectsInfos.push(newSubject);\r\n\t\t\t}\r\n\r\n\t\t\tconst structIndex: any =\r\n\t\t\t\t{\r\n\t\t\t\t\tidpassation:\t\tpassationStruct.id,\r\n\t\t\t\t\tnomPassation:\t\tpassationStruct.libelle,\r\n\t\t\t\t\tdatePassation:\t\tpassationStruct.datas.date,\r\n\t\t\t\t\tlocationPassation:\tpassationStruct.datas.location,\r\n\t\t\t\t\tsubjects:\t\t\tsubjectsInfos\r\n\t\t\t\t};\r\n\r\n\t\t\tlet candidats = [];\r\n\r\n\t\t\tif (passationStruct.datas.candidats)\r\n\t\t\t{\r\n\t\t\t\tcandidats = passationStruct.datas.candidats;\r\n\t\t\t}\r\n\r\n\t\t\tlet zip = new JSZip();\r\n\r\n\t\t\tzip.file('index.json', JSON.stringify(structIndex));\r\n\t\t\tzip.file('candidats.json', JSON.stringify(candidats));\r\n\r\n\t\t\tconst sujetsFolder = zip.folder('sujets');\r\n\t\t\tlet cptFileToDownload = 0;\r\n\r\n\t\t\tfor (let index = 0; index < subjectsToAdd.length; index++)\r\n\t\t\t{\r\n\r\n\t\t\t\tconst sujet: \tany\t= subjectsToAdd[index];\r\n\t\t\t\tconst name: \tany\t= index === 0 ? 'principal' : 'secondaire';\r\n\r\n\t\t\t\tconst sujetFolder = sujetsFolder.folder(name);\r\n\r\n\t\t\t\tsujetFolder.file('correction.json', '');\r\n\t\t\t\tsujetFolder.file('bareme.json', '');\r\n\r\n\t\t\t\tfor (const file of sujet.pj)\r\n\t\t\t\t{\r\n\t\t\t\t\tcptFileToDownload++;\r\n\r\n\t\t\t\t\tconst pathJson = JSON.parse(file.path);\r\n\r\n\t\t\t\t\tthis.downloadContentFileFromId(pathJson.main).subscribe((res) =>\r\n\t\t\t\t\t{\r\n\r\n\t\t\t\t\t\tsujetFolder.file(file.name, res._body);\r\n\t\t\t\t\t\tcptFileToDownload--;\r\n\r\n\t\t\t\t\t\tif (cptFileToDownload === 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tzip.generateAsync({ type: 'blob' }).then((blob: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tresolve(blob);\r\n\r\n\t\t\t\t\t\t\t}).catch((error: any) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n\t * Retourne si le format du fichier est accépté, retourne faux sinon\r\n\t * @param file\r\n\t */\r\n\tpublic isAcceptedFile(file: any, isNumericEpreuve: boolean = false)\r\n\t{\r\n\t\tlet result = false;\r\n\t\t// ---------------------------------------\r\n\t\t// Todo: Remplacer ce test par un call via BDD\r\n\t\t// ---------------------------------------\r\n\t\tlet supportedFileTypes: string[] =\r\n\t\t[\r\n\t\t\t'text/plain',\r\n\t\t\t'text/html',\r\n\t\t\t'text/csv',\r\n\t\t\t'application/x-abiword',\r\n\t\t\t'application/pdf',\r\n\t\t\t'application/msword',\r\n\t\t\t'application/json',\r\n\t\t\t'application/x-bzip',\r\n\t\t\t'application/x-bzip2',\r\n\t\t\t'application/x-rar-compressed',\r\n\t\t\t'application/x-tar',\r\n\t\t\t'application/x-7z-compressed',\r\n\t\t\t'application/x-zip-compressed',\r\n\t\t\t'application/x-gzip',\r\n\t\t\t'application/zip',\r\n\t\t\t'application/xml',\r\n\t\t\t'application/x-tex',\r\n\t\t\t'application/vnd.oasis.opendocument.text',\r\n\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n\t\t\t'application/vnd.ms-excel',\r\n\t\t\t'image/png',\r\n\t\t\t'image/bmp',\r\n\t\t\t'image/jpeg',\r\n\t\t\t'image/tiff'];\r\n\r\n\r\n\t\tif (isNumericEpreuve === true)\r\n\t\t{\r\n\t\t\tsupportedFileTypes.push('audio/mp3');\r\n\t\t\tsupportedFileTypes.push('video/mp4');\r\n\t\t\tsupportedFileTypes.push('video/avi');\r\n\t\t\tsupportedFileTypes.push('video/x-matroska');\r\n\t\t}\r\n\r\n\t\tif (file && file.type)\r\n\t\t{\r\n\t\t\tresult = _.contains(supportedFileTypes, file.type);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// S'il n'y a pas de mimetype on regarde l'extension\r\n\r\n\t\t\t// On récupère les extentions accéptées\r\n\t\t\tlet arrayExtentions = this.listExtensionsFileSelector.split(',');\r\n\t\t\tarrayExtentions \t= _.map(arrayExtentions, (ext: any) => { return ext.trim(); });\r\n\r\n\t\t\t// On récupère l'extention du fichier\r\n\t\t\tconst fileNameParts = file.name.split('.');\r\n\t\t\tif (fileNameParts.length > 1)\r\n\t\t\t{\r\n\t\t\t\tconst extention = '.' + fileNameParts[1];\r\n\t\t\t\tresult \t\t\t= _.contains(arrayExtentions, extention);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\tpublic getDecryptedAESKey(file: any): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tif (file.encryptedAesKeys && file.encryptedAesKeys.length > 0)\r\n\t\t\t{\r\n\t\t\t\tlet encryptedKey\t= file.encryptedAesKeys[0];\r\n\t\t\t\tencryptedKey\t\t= encryptedKey.val;\r\n\t\t\t\treturn this.encryptService.decryptData(encryptedKey).then(decoded =>\r\n\t\t\t\t{\r\n\t\t\t\t\tresolve(decoded);\r\n\t\t\t\t}).catch(error =>\r\n\t\t\t\t{\r\n\t\t\t\t\treject(null);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treject(null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprivate _getMimeType(extension: string)\r\n\t{\r\n\t\tlet oReturn: any;\r\n\t\tswitch (extension)\r\n\t\t{\r\n\t\t\tcase 'jpg':\r\n\t\t\t\toReturn = 'image/jpeg';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'zip':\r\n\t\t\t\toReturn = 'application/zip';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\toReturn = 'application/octet-stream';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn oReturn;\r\n\t}\r\n}\r\n","import { CreationHttpService }\tfrom './creationHttp.service';\r\n\r\nimport { Injectable }\t\tfrom '@angular/core';\r\nimport { Http, Headers }\tfrom '@angular/http';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\n@Injectable()\r\n\r\n/**\r\n * Todo: commenter\r\n */\r\nexport class AuthHttpService\r\n{\r\n\r\n\t/**\r\n\t * Todo: commenter\r\n\t */\r\n\tconstructor(private http: Http)\r\n\t{\r\n\t}\r\n\r\n\t/**\r\n\t * Todo: commenter\r\n\t */\r\n\tpublic doLogin(username: string, password: string, fingerprint: string): Observable\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Création d'un post pour demander un login.\r\n\t\t// Todo: mise en place programmation defensive!\r\n\t\t// ---------------------------------------\r\n\t\tlet credentials =\r\n\t\t{\r\n\t\t\tusername:\t\tusername,\r\n\t\t\tpassword:\t\tpassword,\r\n\t\t\tfingerprint:\tfingerprint\r\n\t\t};\r\n\r\n\r\n\t\tlet apiUrl\t\t\t= CreationHttpService.getAPIUrl();\r\n\t\tlet path\t\t\t= CreationHttpService.getPathByWebServiceName('auth');\r\n\t\tlet jSonCredential\t= JSON.stringify(credentials);\r\n\t\tlet absolutePath\t= CreationHttpService.absolute(apiUrl,path);\r\n\r\n\r\n\t\t// Todo : passer en socker\r\n\t\treturn this.http.post(absolutePath, jSonCredential, { headers: headers });\r\n\t}\r\n\r\n\r\n\tpublic refreshToken(token: any): Observable\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + token);\r\n\r\n\t\tlet credentials = {};\r\n\r\n return this.http.post(CreationHttpService.absolute(CreationHttpService.getAPIUrl(),CreationHttpService.getPathByWebServiceName('refresh'))\r\n\t\t\t, JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n\r\n\r\n\tpublic doLoginWithToken(token: any): Observable\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + token);\r\n\r\n\t\tlet credentials =\r\n\t\t\t{\r\n\t\t\t\ttoken: token\r\n\t\t\t};\r\n\r\n\r\n\t\t// Sale\r\n return this.http.post(CreationHttpService.absolute(CreationHttpService.getAPIUrl(), CreationHttpService.getPathByWebServiceName('auth'))\r\n\t\t\t, JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n}\r\n"," import { Injectable }\t from '@angular/core';\r\nimport { Http, Headers, URLSearchParams } from '@angular/http';\r\n\r\nimport { DataHttpService }\t\tfrom './dataHttp.service';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { Piece }\t\t\t\tfrom '../../classes/piece.class';\r\n\r\n\r\n@Injectable()\r\nexport class ChatHttpService extends DataHttpService\r\n{\r\n constructor(public http: Http, public userData: UserData)\r\n\t{\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('chat'));\r\n\t}\r\n\r\n\r\n /**\r\n * Get rooms available for given user\r\n */\r\n\tpublic getUserRooms(userId: any)\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type',\t'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet params: URLSearchParams = new URLSearchParams();\r\n\t\tparams.set('userid', userId);\r\n\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\treturn this.http.get(this.getUrl() + 'getUserRooms', { headers: headers, search: params });\r\n\t}\r\n\r\n\r\n\tpublic setRoom(newRoom: Piece)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet credentials = \r\n\t\t\t{\r\n\t\t\t\tdata:\tnewRoom.toJson()\r\n\t\t\t};\r\n\r\n\t\treturn this.http.post(this.getUrl() + 'addRoom', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n\r\n /**\r\n * Get room by ids\r\n */\r\n public getRooms(roomsIds: any[])\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let headers = new Headers();\r\n\t\theaders.append('Content-Type',\t'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n let params: URLSearchParams = new URLSearchParams();\r\n params.set('ids', roomsIds.join());\r\n\r\n return this.http.get(this.getUrl() + 'getRooms', { headers: headers, search: params });\r\n }\r\n\r\n\r\n /**\r\n * Get messages by room id\r\n */\r\n public getMessages(roomId: any)\r\n {\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let headers = new Headers();\r\n\t\theaders.append('Content-Type',\t'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n let params: URLSearchParams = new URLSearchParams();\r\n params.set('roomid', roomId);\r\n\r\n return this.http.get(this.getUrl() + 'getMessages', { headers: headers, search: params });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Http }\tfrom '@angular/http';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\nexport class CreationHttpService\r\n{\r\n\r\n\tprivate static useApiUrl:\t\tboolean = undefined; // l'api ce trouve, sur le serveur de connexion, a part si vrai si dessous\r\n\tprivate static useChatUrl:\t\tboolean = undefined; // idem on peut deporter le chat\r\n\tprivate static chatSecure:\t\tboolean = undefined; // http ou https (si pas automatique)\r\n\tprivate static apiBehindProxy:\tboolean = undefined; // proxy = rajouter un chemin\r\n\tprivate static chatBehindProxy: boolean = undefined; // proxy = rajouter un chemin\r\n\tprivate static apiUrl:\t\t\tstring\t= undefined; // http ou https, url de l'api et port si besoin'\r\n\tprivate static apiPath:\t\t\tstring\t= undefined;\r\n\tprivate static chatUrl:\t\t\tstring\t= undefined;\r\n\tprivate static chatPath:\t\tstring\t= undefined;\r\n\tprivate static chatPort:\t\tstring\t= undefined;\r\n\r\n\tpublic static initConfigs(http: Http): Promise\r\n\t{ \r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\t const jsonFile \t= 'assets/configprod.json';\r\n\t\t\t// const jsonFile \t= 'assets/configpreprod.json';\r\n\t\t\t// const jsonFile \t\t= 'assets/configlocal.json';\r\n\t\t\t\r\n\t\t\thttp.get(jsonFile).toPromise().then((res: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (res && res._body)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst configsJson: any = JSON.parse(res._body);\r\n\r\n\t\t\t\t\tCreationHttpService.useApiUrl \t\t= configsJson.useApiUrl \t\t=== 'true' ? true : false;\r\n\t\t\t\t\tCreationHttpService.useChatUrl \t\t= configsJson.useChatUrl \t\t=== 'true' ? true : false;\r\n\t\t\t\t\tCreationHttpService.chatSecure \t\t= configsJson.chatSecure \t\t=== 'true' ? true : false;\r\n\t\t\t\t\tCreationHttpService.apiBehindProxy \t= configsJson.apiBehindProxy \t=== 'true' ? true : false;\r\n\t\t\t\t\tCreationHttpService.chatBehindProxy = configsJson.chatBehindProxy \t=== 'true' ? true : false; \r\n\t\t\t\t\tCreationHttpService.apiUrl \t\t\t= configsJson.apiUrl;\r\n\t\t\t\t\tCreationHttpService.apiPath \t\t= configsJson.apiPath;\r\n\t\t\t\t\tCreationHttpService.chatUrl \t\t= configsJson.chatUrl;\r\n\t\t\t\t\tCreationHttpService.chatPath \t\t= configsJson.chatPath;\r\n\t\t\t\t\tCreationHttpService.chatPort \t\t= configsJson.chatPort;\r\n\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t} \r\n\t\t\t\telse \r\n\t\t\t\t{\r\n\t\t\t\t\treject();\r\n\t\t\t\t} \r\n\r\n\t\t\t}).catch(err =>\r\n\t\t\t{\r\n\t\t\t\treject();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Retourne l'url de l'api (normalement sur le meme serveur que le serveur http)\r\n\t */\r\n\tpublic static getAPIUrl(): string\r\n\t{\r\n\t\tif (CreationHttpService.useApiUrl)\r\n\t\t{\r\n\t\t\tif (CreationHttpService.apiBehindProxy)\r\n\t\t\t{\r\n\t\t\t\treturn CreationHttpService.absolute(CreationHttpService.apiUrl, CreationHttpService.apiPath);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treturn CreationHttpService.apiUrl;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (CreationHttpService.apiBehindProxy)\r\n\t\t\t{\r\n\t\t\t\treturn CreationHttpService.absolute(window.location.origin, CreationHttpService.apiPath);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treturn window.location.origin;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n /**\r\n\t * Retourne l'url du chat (normalement sur le meme serveur que le serveur http)\r\n\t */\r\n\tpublic static getChatUrl(): string\r\n\t{\r\n\t\tif (CreationHttpService.useChatUrl)\r\n\t\t{\r\n\t\t\treturn CreationHttpService.chatUrl;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn window.location.hostname;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic static getChatPort(): string\r\n\t{\r\n\t\tif (CreationHttpService.useChatUrl)\r\n\t\t{\r\n\t\t\treturn CreationHttpService.chatPort;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn window.location.port;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic static getChatSecure(): boolean\r\n\t{\r\n\t\tlet bReturn;\r\n\t\tif (CreationHttpService.useChatUrl)\r\n\t\t{\r\n\t\t\tbReturn = CreationHttpService.chatSecure;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tbReturn = window.location.protocol === 'https:';\r\n\t\t}\r\n\t\treturn bReturn;\r\n\t}\r\n\r\n\r\n\tpublic static getChatPath(): string\r\n\t{\r\n\t\tif (CreationHttpService.chatBehindProxy)\r\n\t\t{\r\n\t\t\treturn CreationHttpService.chatPath;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t}\r\n\r\n\r\n /**\r\n * Ajoute une url a l'adresse en gérant le /\r\n * @param base\r\n * @param relative\r\n */\r\n\tpublic static absolute(...args: string[]): string\r\n\t{\r\n\t\tlet join = [].slice.call(args, 0).join('/');\r\n\t\treturn CreationHttpService.normalize(join);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Retourne l'url du service dans l'api\r\n\t */\r\n\tpublic static getPathByWebServiceName(name: string)\r\n\t{\r\n\t\tlet sReturn = '';\r\n\r\n\t\t// Si c'est en prod on va avoir besoin du suffixe\r\n\t\t// sReturn = '/creation';\r\n\r\n\t\t// Et encore on pourrait ajouter le \"name\" à la suite sans passer par le switch ... mais au cas ou je laisse\r\n\t\tswitch (name)\r\n\t\t{\r\n\t\t\tcase 'auth':\r\n\t\t\t\tsReturn += '/api/v1/auth/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'refresh':\r\n\t\t\t\tsReturn += '/api/v1/auth/refresh';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'chat':\r\n\t\t\t\tsReturn += '/api/v1/chat/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'epreuve':\r\n\t\t\t\tsReturn += '/api/v1/epreuve/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'etablissement':\r\n\t\t\t\tsReturn += '/api/v1/etablissement/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'examen':\r\n\t\t\t\tsReturn += '/api/v1/examen/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'file':\r\n\t\t\t\tsReturn += '/api/v1/file/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'filesend':\r\n\t\t\t\tsReturn += '/api/v1/file/send/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'filesendforpreview':\r\n\t\t\t\tsReturn += '/api/v1/file/sendForPreview/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'filesendToConvert':\r\n\t\t\t\tsReturn += '/api/v1/file/sendToConvert/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'session':\r\n\t\t\t\tsReturn += '/api/v1/session/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'sujet':\r\n\t\t\t\tsReturn += '/api/v1/sujet/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'task':\r\n\t\t\t\tsReturn += '/api/v1/task/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'user':\r\n\t\t\t\tsReturn += '/api/v1/user/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn sReturn;\r\n\t}\r\n\r\n\r\n /**\r\n * Fonction interne pour normaliser une url\r\n * @param str\r\n * @pzaram searchString\r\n */\r\n\tprivate static startsWith(str: string, searchString: string): boolean\r\n\t{\r\n\t\treturn str.substr(0, searchString.length) === searchString;\r\n\t}\r\n\r\n\r\n /**\r\n * Normalise une url\r\n * @param str\r\n */\r\n\tprivate static normalize(str: string): string\r\n\t{\r\n\r\n\t\tif (CreationHttpService.startsWith(str, 'file://'))\r\n\t\t{\r\n\t\t\t// 3 slash pour file protocol\r\n\t\t\tstr = str.replace(/(\\/{0,3})\\/*/g, '$1');\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// au minimum 2 apres le protocole\r\n\t\t\tstr = str.replace(/:\\//g, '://');\r\n\r\n\t\t\t// enlever les slash en trop\r\n\t\t\tstr = str.replace(/([^:\\s\\%\\3\\A])\\/+/g, '$1/');\r\n\t\t}\r\n\r\n\t\t// enlever les slash de fin avant param\r\n\t\tstr = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\r\n\r\n\t\t// remplace ? par &\r\n\t\tstr = str.replace(/(\\?.+)\\?/g, '$1&');\r\n\r\n\t\treturn str;\r\n\t}\r\n}\r\n","import { CreationHttpService }\t\t\t\tfrom './creationHttp.service';\r\nimport { Injectable }\t\t\t\t\t\tfrom '@angular/core';\r\nimport { Http, Headers, URLSearchParams }\tfrom '@angular/http';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport { Matiere }\tfrom '../../classes/matiere.class';\r\nimport { UserData } from '../../providers/user-data';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class DataHttpService\r\n{\r\n\tprotected sUrl:\t\t\t\tstring;\r\n\tprotected sUrlExtention:\tstring;\r\n\tprotected sToken:\t\t\tstring;\r\n\tprotected sParentToken:\t\tstring;\r\n\tprotected jOptionToken: any;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(protected http: Http, protected userData: UserData, urlExtention: string= '')\r\n\t{\r\n\t\tthis.sUrlExtention\t= urlExtention;\r\n this.sUrl \t\t\t= CreationHttpService.absolute(CreationHttpService.getAPIUrl(), this.sUrlExtention);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprotected add(pxData: any, path: any[] = [], data: any = undefined): Observable\r\n\t{\r\n\t\tlet jData;\r\n\r\n\t\tif (data)\r\n\t\t{\r\n\t\t\tjData = data;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tjData =\r\n\t\t\t\t{\r\n\t\t\t\t\tname: pxData.name,\r\n\t\t\t\t\tpath: path\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet credentials =\r\n\t\t\t{\r\n\t\t\t\tdata:\tjData,\r\n\t\t\t\ttoken:\tthis.userData.getTokenKey()\r\n\t\t\t};\r\n\r\n\t\treturn this.http.post(this.getUrl() + 'create', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n\r\n\r\n\tprotected edit(pxData: any, path: any[] = [], data: any = undefined): Observable\r\n\t{\r\n\t\tlet jData;\r\n\r\n\t\tif (data)\r\n\t\t{\r\n\t\t\tjData = data;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tjData = \r\n\t\t\t\t{\r\n\t\t\t\t\tname: pxData.name,\r\n\t\t\t\t\tpath: path\r\n\t\t\t\t};\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tconst headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tconst credentials =\r\n\t\t\t{\r\n\t\t\t\tdata:\tjData,\r\n\t\t\t\ttoken:\tthis.userData.getTokenKey()\r\n\t\t\t};\r\n\r\n\t\treturn this.http.post(this.getUrl() + 'create', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprotected get(id: string = '', idParent: string = ''): Observable\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tconst headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tconst params: URLSearchParams = new URLSearchParams();\r\n\r\n\t\tif (id && this.sToken)\r\n\t\t{\r\n\t\t\tparams.set(this.sToken, id);\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (idParent && this.sParentToken)\r\n\t\t{\r\n\t\t\tparams.set(this.sParentToken, idParent);\r\n\t\t}\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tif (this.jOptionToken)\r\n\t\t{\r\n\t\t\tfor (let key in this.jOptionToken)\r\n\t\t\t{\r\n\t\t\t\tvar value: any = this.jOptionToken[key];\r\n\t\t\t\tparams.set(key, this.jOptionToken[key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\treturn this.http.get(this.getUrl() + 'get', { headers: headers, search: params });\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprotected getById(data: any)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprotected getByForeignKey(data: any)\r\n\t{\r\n\r\n\t}\r\n\r\n\tprotected getUrl()\r\n\t{\r\n\t\tconst result = CreationHttpService.absolute(CreationHttpService.getAPIUrl(), this.sUrlExtention);\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tprotected delet(data: any)\r\n\t{\r\n\r\n\t}\r\n}\r\n","import { Injectable }\tfrom '@angular/core';\r\nimport { Http }\t\t\tfrom '@angular/http';\r\n\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { DataHttpService }\t\tfrom './dataHttp.service';\r\nimport { Matiere }\t\t\t\tfrom '../../classes/matiere.class';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class EpreuveHttpService extends DataHttpService\r\n{\r\n\tprotected sToken:\t\t\tstring = 'idepreuve';\r\n\tprotected sParentToken:\t\tstring = 'idexamen';\r\n\t\r\n\t\r\n\tconstructor(protected http: Http, protected userData: UserData)\r\n\t{\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('epreuve'));\r\n\t}\r\n\r\n\r\n /**\r\n * add new epreuve in database from Matiere object given in parameter\r\n */\r\n\tpublic addEpreuve(epreuve: any, parentPath: any[] = [])\r\n\t{\r\n\t\tepreuve.dateDebut\t= epreuve.redactionStart;\r\n\t\tepreuve.dateFin\t\t= epreuve.redactionEnd;\r\n\t\tepreuve.path\t\t= parentPath;\r\n\r\n\t\treturn this.add(null, parentPath, epreuve);\r\n\t}\r\n\r\n\r\n /**\r\n * Get all epreuves in database relative to user account and parameters given:\r\n * \r\n * -idEpreuve: if this parameter is defined, return the Matiere object corresponding to the value id\r\n * -idExamen: if this parameter is defined (and if the parameter idEpreuve is not), return the Matiere\r\n * objects wich the examen parent matches the value id.\r\n * \r\n * Return a list of Matiere objects\r\n */\r\n\tpublic getEpreuves(idEpreuve: string, idExamen: string)\r\n\t{\r\n\t\treturn this.get(idEpreuve, idExamen);\r\n\t}\r\n}\r\n\r\n","import { Injectable }\tfrom '@angular/core';\r\nimport { Http }\t\t\tfrom '@angular/http';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport { DataHttpService }\tfrom './dataHttp.service';\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { Etablissement } from '../../classes/etablissement.class';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class EtablissementHttpService extends DataHttpService\r\n{\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tconstructor(protected http: Http, protected userData: UserData)\r\n\t{\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('etablissement'));\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic addEtablissement(dataEtab: any): Observable\r\n\t{\r\n\t\tdataEtab.path = [];\r\n\t\treturn this.add(null, [], dataEtab);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic editEtablissement(dataEtab: any): Observable\r\n\t{\r\n\t\treturn this.edit(dataEtab);\r\n\t\t\r\n\t\t\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic getAllEtablissements(): Observable\r\n\t{\r\n\t\tthis.jOptionToken = \r\n\t\t\t{\r\n\t\t\t\tnodes:\tthis.userData.getRessources()\r\n\t\t\t};\r\n\t\treturn this.get();\r\n\t}\r\n\r\n\r\n}\r\n","import { Injectable }\tfrom '@angular/core';\r\nimport { Http }\t\t\tfrom '@angular/http';\r\n\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { DataHttpService }\tfrom './dataHttp.service';\r\nimport { Examen }\t\t\tfrom '../../classes/examen.class';\r\nimport { UserData }\t\t\tfrom '../../providers/user-data';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\nexport class ExamenHttpService extends DataHttpService\r\n{\r\n\tprotected sToken:\t\t\tstring = 'idexamen';\r\n\tprotected sParentToken:\t\tstring = 'idsession';\r\n\t\r\n\t\r\n constructor(protected http: Http, protected userData: UserData)\r\n {\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('examen'));\r\n }\r\n\r\n\r\n /**\r\n * Add new examen in database from Examen object given in parameter\r\n */\r\n public addExamen(examen: any, parentPath: any[] = [])\r\n {\r\n examen.path = parentPath;\r\n return this.add(null, [], examen);\r\n }\r\n\r\n\r\n /**\r\n * Get all examens in database relative to user account and parameters given:\r\n * \r\n * -cascade: if false, return only examens objects, if true return Examens object with childs \r\n * (epreuves) in each objects\r\n * -idExamen: if this parameter is defined, return the Examen object corresponding to the value id\r\n * -idSession: if this parameter is defined (and if the parameter idExamen is not), return the Examen\r\n * objects wich the session parent matches the value id.\r\n *\r\n * Return a list of Examen objects\r\n */\r\n\tpublic getExamens(cascade: boolean, idExamen: string, idSession: string)\r\n\t{\r\n\r\n\t\tlet cascadeStr\t\t= cascade ? (cascade === true ? 'true' : 'false') : 'false';\r\n\t\tthis.jOptionToken\t= { \"cascade\": cascadeStr };\r\n\r\n\t\treturn this.get(idExamen, idSession);\r\n\t}\r\n\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Http, Headers, RequestOptions, ResponseContentType, URLSearchParams } from '@angular/http';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport { Comment } \tfrom '../../classes/comment.class';\r\nimport { Note } \tfrom '../../classes/note.class';\r\nimport { File } \tfrom '../../classes/file.class';\r\n\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { DataHttpService }\t\tfrom './dataHttp.service';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\n\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable()\r\n\r\n\r\nexport class FileHttpService extends DataHttpService\r\n{\r\n\r\n /**\r\n\t *\r\n\t */\r\n\tconstructor(protected http: Http, protected userData: UserData)\r\n\t{\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('file'));\r\n\t}\r\n\r\n /**\r\n *\r\n */\r\n public addFile(file: File): Observable\r\n {\r\n\t\tlet data = \r\n\t\t\t{\r\n\t\t\t\tfile: file.toJson()\r\n\t\t\t};\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// Ajouter la vérification de l'extention\r\n\t\t// ---------------------------------------\r\n\t\t// Ajoute la vérif du poids\r\n\t\t// ---------------------------------------\r\n\t\t// Thumbnail\r\n\t\t// ---------------------------------------\r\n\r\n return this.add(undefined, undefined, data);\r\n }\r\n\r\n\r\n /**\r\n *\r\n */\r\n public getFiles(subjectId: string = undefined, fileId: string = undefined): Observable\r\n {\r\n\t\tthis.jOptionToken = \r\n\t\t\t{\r\n\t\t\t\tidsubject:\tsubjectId,\r\n\t\t\t\tidfile:\t\tfileId\r\n\t\t\t};\r\n\r\n return this.get();\r\n }\r\n\r\n /**\r\n *\r\n * @param fileId\r\n */\r\n public removeFile(file: File): Observable\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n let params: URLSearchParams = new URLSearchParams();\r\n params.set('files', JSON.stringify(file.toJson()));\r\n\r\n return this.http.get(this.getUrl() + 'delete', { headers: headers, search: params });\r\n }\r\n\r\n\r\n public updateFile(file: File, datas: any)\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet data = \r\n\t\t{\r\n file:\tfile.toJson(),\r\n datas:\tdatas\r\n };\r\n\r\n\t\tlet credentials = \r\n\t\t{\r\n\t\t\tdata:\tdata\r\n\t\t};\r\n\r\n return this.http.post(this.getUrl() + 'update', JSON.stringify(credentials), { headers: headers });\r\n }\r\n\r\n\r\n public addFileNote(file: File, note: Note)\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet datas = \r\n\t\t{\r\n file: file.toJson(),\r\n note: note.toJson()\r\n };\r\n\r\n\t\tlet credentials = \r\n\t\t{\r\n\t\t\tdata:\tdatas\r\n\t\t};\r\n\r\n return this.http.post(this.getUrl() + 'addNote', JSON.stringify(credentials), { headers: headers });\r\n }\r\n\r\n\r\n public addFileVersion(file: any)\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet datas =\r\n\t\t\t{\r\n\t\t\t\tfile: file.toJson()\r\n\t\t\t};\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet credentials =\r\n\t\t\t{\r\n\t\t\t\tdata: datas\r\n\t\t\t};\r\n\r\n return this.http.post(this.getUrl() + 'addVersion', JSON.stringify(credentials), { headers: headers });\r\n }\r\n\r\n\r\n public downloadFile(file: File, typeFile: string = 'file')\r\n {\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n const headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tconst fileJson: any =\r\n\t\t{\r\n\t\t\tidsubject:\tfile.idSubject,\r\n\t\t\tid:\t\t\tfile.id\r\n\t\t};\r\n\r\n const params: URLSearchParams = new URLSearchParams();\r\n params.set('file', JSON.stringify(fileJson));\r\n params.set('type', typeFile);\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n const options = new RequestOptions(\r\n\t\t{\r\n\t\t\tsearch:\t\t\t\tparams,\r\n\t\t\theaders:\t\t\theaders,\r\n\t\t\twithCredentials:\ttrue,\r\n\t\t\tresponseType:\t\tResponseContentType.Blob\r\n\t\t});\r\n\r\n return this.http.get(this.getUrl() + 'download', options);\r\n }\r\n\r\n /**\r\n * Téléchargement d'un fichier à partir de son identifiant dans le système de stockage\r\n * du serveur\r\n * @param path\r\n */\r\n\tpublic downloadFromId(path: any)\r\n\t{\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet params: URLSearchParams = new URLSearchParams();\r\n\t\tparams.set('path', path);\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet options = new RequestOptions({\r\n\t\t\tsearch:\t\t\t\tparams,\r\n\t\t\theaders:\t\t\theaders,\r\n\t\t\twithCredentials:\ttrue,\r\n\t\t\tresponseType:\t\tResponseContentType.Blob\r\n\t\t});\r\n\r\n\t\treturn this.http.get(this.getUrl() + 'downloadFromId', options);\r\n\t}\r\n\r\n /**\r\n * Suppression d'un fichier à partir de son identifiant dans le système de stockage\r\n * du serveur\r\n * @param path\r\n */\r\n\tpublic deleteFromId(path: any)\r\n\t{\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet params: URLSearchParams = new URLSearchParams();\r\n\t\tparams.set('path', path);\r\n\r\n\t\tlet options = new RequestOptions(\r\n\t\t\t{\r\n\t\t\t\tsearch:\t\t\t\tparams,\r\n\t\t\t\theaders:\t\t\theaders,\r\n\t\t\t\twithCredentials:\ttrue,\r\n\t\t\t\tresponseType:\t\tResponseContentType.Blob\r\n\t\t\t});\r\n\r\n\t\treturn this.http.get(this.getUrl() + 'deleteFromId', options);\r\n\t}\r\n\r\n\r\n public downloadFiles(files: File[], password: string = null)\r\n {\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n headers.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet filesJson = _.map(files, function(file: any)\r\n\t\t\t{\r\n\t\t\t\treturn file.toJson();\r\n\t\t\t});\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let params: URLSearchParams = new URLSearchParams();\r\n params.set('files', JSON.stringify(filesJson));\r\n\r\n if (password)\r\n {\r\n params.set('password', password);\r\n }\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n let options = new RequestOptions({search: params, headers: headers, responseType: ResponseContentType.Blob });\r\n\r\n return this.http.get(this.getUrl() + 'downloadFiles', options);\r\n }\r\n}\r\n","import { Injectable }\tfrom '@angular/core';\r\nimport { Http }\t\t\tfrom '@angular/http';\r\n\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { DataHttpService }\t\tfrom './dataHttp.service';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\nimport { Session }\t\t\t\tfrom '../../classes/session.class';\r\n\r\n@Injectable()\r\nexport class SessionHttpService extends DataHttpService\r\n{\r\n\tprotected sToken:\t\tstring = 'idsession';\r\n\tprotected sParentToken:\tstring = 'idetab';\r\n\r\n\tconstructor(protected http: Http, protected userData: UserData)\r\n\t{\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('session'));\r\n\t}\r\n\r\n\r\n /**\r\n * Add new session in database from Session object given in parameter\r\n\t * Parents ids are given by the path parameter\r\n */\r\n\tpublic addSession(session: any, parentPath: any[] = [])\r\n\t{\r\n\t\tsession.path = parentPath;\r\n return this.add(null, [], session);\r\n\t}\r\n\r\n\r\n /**\r\n * Get all sessions in database relative to user account and parameters given:\r\n * \r\n * -cascade: if false, return only Sessions objects, if true return Sessions object with childs \r\n * (examens and epreuves) in each objects\r\n * -idSession: if this parameter is defined, return the Session object corresponding to the value id\r\n * -idEtab: if this parameter is defined (and if the parameter idSession is not), return the Sessions\r\n * objects wich the etablissement parent matches the value id.\r\n * \r\n * Return a list of Session objects\r\n */\r\n\tpublic getSessions(cascade: boolean, idSession: string, idEtab: string)\r\n\t{\r\n\t\tlet cascadeStr\t\t= cascade ? (cascade === true ? 'true' : 'false') : 'false';\r\n\t\tthis.jOptionToken\t= { \"cascade\": cascadeStr };\r\n\r\n\t\treturn this.get(idSession, idEtab);\r\n\t}\r\n\r\n\r\n}\r\n\r\n","import { Sujet }\t\tfrom '../../classes/sujet.class';\r\nimport { Comment } from '../../classes/comment.class';\r\nimport { Injectable }\tfrom '@angular/core';\r\nimport { Http, Headers }from '@angular/http';\r\n\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { DataHttpService }\t\tfrom './dataHttp.service';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class SujetHttpService extends DataHttpService\r\n{\r\n\tprotected sToken:\t\t\tstring = 'idsubject';\r\n\tprotected sParentToken:\t\tstring = 'idepreuve';\r\n\r\n\tconstructor(protected http: Http, protected userData: UserData)\r\n\t{\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('sujet'));\r\n\r\n\t}\r\n\r\n\r\n /**\r\n * Add new sujet in database from Sujet object given in parameter\r\n */\r\n\tpublic addSujet(sujet: Sujet)\r\n\t{\r\n\t\tlet data =\r\n\t\t\t{\r\n\t\t\t\tname:\t\tsujet.name,\r\n\t\t\t\tidepreuve:\tsujet.idMatiere,\r\n\t\t\t\ttype:\t\tsujet.type,\r\n\t\t\t\tnote:\t\tsujet.note,\r\n\t\t\t\tpath:\t\t['']\r\n\t\t\t};\r\n\r\n\t\treturn this.add(sujet, undefined, data);\r\n\t}\r\n\r\n\r\n /**\r\n * Get all subjects in database relative to user account and parameters given:\r\n *\r\n * -idSujet: if this parameter is defined, return the Sujet object corresponding to the value id\r\n * -idEpreuve: if this parameter is defined (and if the parameter idSujet is not), return the Sujet\r\n * objects wich the epreuve parent matches the value id.\r\n *\r\n * Return a list of Sujet objects\r\n */\r\n\tpublic getSujets(idSujet: string, idEpreuve: string)\r\n\t{\r\n\t\treturn this.get(idSujet, idEpreuve);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Add new comment to subject in database.\r\n\t *\r\n\t * @param sujet: Sujet object in wich the comment will be added\r\n\t * @param comment: Comment object corresponding to the comment to add in database\r\n\t */\r\n\tpublic addCommentToSujet(sujet: Sujet, comment: Comment)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\tlet datas = \r\n\t\t\t{\r\n\t\t\t\tsubject: sujet.toJson(),\r\n\t\t\t\tcomment: comment.toJson()\r\n\t\t\t};\r\n\r\n\t\tlet credentials = \r\n\t\t\t{\r\n\t\t\t\tdata:\tdatas\r\n\t\t\t};\r\n\r\n\t\treturn this.http.post(this.getUrl() + 'addComment', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n\r\n\t/**\r\n\t * Add note to subject in database\r\n\t *\r\n\t * @param sujet: Sujet object in wich the note will be added\r\n\t * @param note: note wich will be added in database to given subject\r\n\t */\r\n\tpublic addNoteToSujet(sujet: Sujet, note: string)\r\n\t{\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet datas = \r\n\t\t\t{\r\n\t\t\t\tsubject:\tsujet.toJson(),\r\n\t\t\t\tnote:\t\tnote\r\n\t\t\t};\r\n\t\tlet credentials = \r\n\t\t\t{\r\n\t\t\t\tdata:\tdatas\r\n\t\t\t};\r\n\r\n\t\treturn this.http.post(this.getUrl() + 'addNote', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Http, Headers, RequestOptions, ResponseContentType, URLSearchParams } from '@angular/http';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { Task } \t\t\t\tfrom '../../classes/task.class';\r\nimport { Comment } \t\t\t\tfrom '../../classes/comment.class';\r\nimport { DataHttpService }\t\tfrom './dataHttp.service';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\n\r\n@Injectable()\r\nexport class TaskHttpService extends DataHttpService\r\n{\r\n\r\n /**\r\n\t *\r\n\t */\r\n\tconstructor(protected http: Http, protected userData: UserData)\r\n\t{\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('task'));\r\n\t}\r\n\r\n\tpublic getTask(sessionId: string, examenId: string = '', epreuveId: string = '')\r\n\t{\r\n\t\tthis.jOptionToken = \r\n\t\t{\r\n\t\t\tsessionId:\tsessionId,\r\n\t\t\texamenId:\texamenId,\r\n\t\t\tepreuveId:\tepreuveId\r\n\t\t};\r\n\r\n\t\treturn this.get();\r\n\t}\r\n\r\n\r\n\r\n\tpublic addTask(task: Task)\r\n\t{\r\n\t\tlet data = \r\n\t\t{\r\n\t\t\ttask: task.toJson()\r\n\t\t};\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\treturn this.add(undefined, undefined, data);\r\n\t}\r\n\r\n\r\n\tpublic deleteTask(task: Task)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet params: URLSearchParams = new URLSearchParams();\r\n\t\tparams.set('task', JSON.stringify(task.toJson()));\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet options = new RequestOptions({ search: params, headers: headers });\r\n\r\n\t\treturn this.http.get(this.getUrl() + 'delete', options);\r\n\t}\r\n\t\r\n\r\n\tpublic updateTask(task: Task, newDatas: any)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet data = \r\n\t\t{\r\n\t\t\ttask:\ttask.toJson(),\r\n\t\t\tdatas:\tnewDatas\r\n\t\t};\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet credentials = \r\n\t\t{\r\n\t\t\tdata:\tdata\r\n\t\t};\r\n\r\n\t\treturn this.http.post(this.getUrl() + 'update', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n\r\n\tpublic addTaskComment(task: Task, newComment: Comment)\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet data = \r\n\t\t{\r\n\t\t\ttask:\t\ttask.toJson(),\r\n\t\t\tcomment: \tnewComment.toJson()\r\n\t\t};\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\r\n\t\tlet credentials = \r\n\t\t{\r\n\t\t\tdata:\tdata\r\n\t\t};\r\n\r\n\t\treturn this.http.post(this.getUrl() + 'addComment', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n}\r\n","import { Injectable }\t\tfrom '@angular/core';\r\nimport { Http, Headers }\tfrom '@angular/http';\r\n\r\nimport { CreationHttpService }\tfrom './creationHttp.service';\r\nimport { DataHttpService }\t\tfrom './dataHttp.service';\r\nimport { UserData }\t\t\t\tfrom '../../providers/user-data';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class UserHttpService extends DataHttpService\r\n{\r\n\tprotected sToken:\t\t\tstring = 'idsubject';\r\n\tprotected sParentToken:\t\tstring = 'idepreuve';\r\n \r\n\r\n\tconstructor(protected http: Http, protected userData: UserData)\r\n\t{\r\n\t\tsuper(http, userData, CreationHttpService.getPathByWebServiceName('user'));\r\n\t}\r\n\r\n\r\n /**\r\n * Get all users in the creation app server and their rights\r\n */\r\n\tpublic getAllUsers(): Observable\r\n\t{\r\n\t\treturn this.get();\r\n\t}\r\n\r\n\r\n /**\r\n * Update informations and rights for a set of users given\r\n */\r\n\tpublic updateUser(dataUser: any): Observable\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\t\tlet credentials = \r\n\t\t{\r\n\t\t\tdata: dataUser\r\n\t\t};\r\n\t\t// Sale\r\n\t\treturn this.http.post(this.getUrl() + 'update', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Get current user datas from database\r\n\t */\r\n\tpublic getCurrentUser(): Observable\r\n\t{\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\r\n\t\treturn this.http.get(this.getUrl() + 'getCurrent', { headers: headers });\r\n\t}\r\n\r\n /**\r\n * Update informations and rights for a set of users given\r\n */\r\n\tpublic updateCurrentUser(dataUser: any): Observable\r\n\t{\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet headers = new Headers();\r\n\t\theaders.append('Content-Type', 'application/json');\r\n\t\theaders.append('Authorization', 'Bearer ' + this.userData.getTokenKey());\r\n\t\tlet credentials = \r\n\t\t{\r\n\t\t\tdata: dataUser\r\n\t\t};\r\n\t\t// Sale\r\n\t\treturn this.http.post(this.getUrl() + 'updatecurrent', JSON.stringify(credentials), { headers: headers });\r\n\t}\r\n\r\n\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\n\r\nexport class VaultHttpService\r\n{\r\n\r\n\r\n/* Local*/\r\n\r\n\r\n/*\r\nprivate static useApiUrl = true; // l'api ce trouve, sur le serveur de connexion, a part si vrai si dessous\r\nprivate static useChatUrl = true; // idem on peut deporter le chat\r\nprivate static chatSecure = false; // http ou https (si pas automatique)\r\nprivate static apiBehindProxy = false; // proxy = rajouter un chemin\r\nprivate static chatBehindProxy = false;\t // proxy = rajouter un chemin\r\nprivate static apiUrl = 'http://192.168.0.21:8002'; // http ou https, url de l'api et port si besoin'\r\nprivate static apiPath = '';\r\nprivate static chatUrl = '192.168.0.21';\r\nprivate static chatPath = '/creation/socketcluster/';\r\nprivate static chatPort = '8002';\r\n*/\r\n//\tprivate static useApiUrl:\t\tboolean = true; // l'api ce trouve, sur le serveur de connexion, a part si vrai si dessous\r\n//\tprivate static useChatUrl:\t\tboolean = true; // idem on peut deporter le chat\r\n//\tprivate static chatSecure:\t\tboolean = true; // http ou https (si pas automatique)\r\n//\tprivate static apiBehindProxy:\tboolean = true; // proxy = rajouter un chemin\r\n//\tprivate static chatBehindProxy: boolean = true;\t // proxy = rajouter un chemin\r\n//\tprivate static apiUrl:\t\t\tstring\t= \"https://vault.viatique.com\"; // http ou https, url de l'api et port si besoin'\r\n//\tprivate static apiPath:\t\t\tstring\t= \"\";\r\n//\tprivate static chatUrl:\t\t\tstring\t= 'vault.viatique.com';\r\n//\tprivate static chatPath:\t\t\tstring\t= \"/socketcluster/\";\r\n// private static chatPort:\t\t\tstring\t= \"443\";\r\n\r\n\r\n\t/* Prod*/\r\n\tprivate static useApiUrl:\t\tboolean = true; // l'api ce trouve, sur le serveur de connexion, a part si vrai si dessous\r\n\tprivate static useChatUrl:\t\tboolean = false; // idem on peut deporter le chat\r\n\tprivate static chatSecure:\t\tboolean = false; // http ou https (si pas automatique)\r\n\tprivate static apiBehindProxy:\tboolean = true; // proxy = rajouter un chemin\r\n\tprivate static chatBehindProxy: boolean = true;\t // proxy = rajouter un chemin\r\n\tprivate static apiUrl:\t\t\tstring\t= \"https://vault.viatique.com\"; // http ou https, url de l'api et port si besoin'\r\n\tprivate static apiPath:\t\t\tstring\t= \"\";\r\n\tprivate static chatUrl:\t\t\tstring\t= 'vault.viatique.com';\r\n\tprivate static chatPath:\t\tstring\t= \"/socketcluster/\";\r\n\tprivate static chatPort:\t\tstring\t= \"443\";\r\n\r\n\t/* Confirugation sur machine isolée*/\r\n\t/*\r\n\tprivate static useApiUrl:\t\tboolean = true; // l'api ce trouve, sur le serveur de connexion, a part si vrai si dessous\r\n\tprivate static useChatUrl:\t\tboolean = false; // idem on peut deporter le chat\r\n\tprivate static chatSecure:\t\tboolean = false; // http ou https (si pas automatique)\r\n\tprivate static apiBehindProxy:\tboolean = true; // proxy = rajouter un chemin\r\n\tprivate static chatBehindProxy: boolean = true;\t // proxy = rajouter un chemin\r\n\tprivate static apiUrl:\t\t\tstring\t= \"http://vault.exatique.lan\"; // http ou https, url de l'api et port si besoin'\r\n\tprivate static apiPath:\t\t\tstring\t= \"\";\r\n\tprivate static chatUrl:\t\t\tstring\t= 'vault.viatique.com';\r\n\tprivate static chatPath:\t\tstring\t= \"/socketcluster/\";\r\n\tprivate static chatPort:\t\tstring\t= \"443\";\r\n\t*/\r\n\r\n /**\r\n\t * Retourne l'url de l'api (normalement sur le meme serveur que le serveur http)\r\n\t */\r\n\tpublic static getAPIUrl(): string\r\n\t{\r\n\t\tif (VaultHttpService.useApiUrl)\r\n\t\t{\r\n\t\t\tif (VaultHttpService.apiBehindProxy)\r\n\t\t\t{\t\t\t\t\r\n\t\t\t\treturn VaultHttpService.absolute(VaultHttpService.apiUrl, VaultHttpService.apiPath);\r\n\t\t\t}\t\t\t\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treturn VaultHttpService.apiUrl;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (VaultHttpService.apiBehindProxy)\r\n\t\t\t{\r\n\t\t\t\treturn VaultHttpService.absolute(window.location.origin, VaultHttpService.apiPath);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treturn window.location.origin;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n\r\n /**\r\n\t * Retourne l'url du chat (normalement sur le meme serveur que le serveur http)\r\n\t */\r\n\tpublic static getChatUrl(): string\r\n\t{\r\n\t\tif (VaultHttpService.useChatUrl)\r\n\t\t{\r\n\t\t\treturn VaultHttpService.chatUrl;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn window.location.hostname;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic static getChatPort(): string\r\n\t{\r\n\t\tif (VaultHttpService.useChatUrl)\r\n\t\t{\r\n\t\t\treturn VaultHttpService.chatPort;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn window.location.port;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic static getChatSecure(): boolean\r\n\t{\r\n\t\tlet bReturn;\r\n\t\tif (VaultHttpService.useChatUrl)\r\n\t\t{\r\n\t\t\tbReturn = VaultHttpService.chatSecure;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tbReturn = window.location.protocol === 'https:';\r\n\t\t}\r\n\t\treturn bReturn;\r\n }\r\n\r\n\r\n public static getChatPath(): string\r\n\t{\r\n\t\tif (VaultHttpService.chatBehindProxy)\r\n\t\t{\r\n\t\t\treturn VaultHttpService.chatPath;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn '/socketcluster/';\r\n\t\t}\r\n\t}\r\n\r\n\r\n /**\r\n * Ajoute une url a l'adresse en gérant le /\r\n * @param base\r\n * @param relative\r\n */\r\n\tpublic static absolute(...args: string[]): string\r\n\t{\r\n\t\tlet join = [].slice.call(args, 0).join('/');\r\n\t\treturn VaultHttpService.normalize(join);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Retourne l'url du service dans l'api\r\n\t */\r\n\tpublic static getPathByWebServiceName(name: string)\r\n\t{\r\n\t\tlet sReturn = '';\r\n\r\n\t\t// Si c'est en prod on va avoir besoin du suffixe\r\n\t\t//sReturn = '/creation';\r\n\r\n\t\t// Et encore on pourrait ajouter le \"name\" à la suite sans passer par le switch ... mais au cas ou je laisse\r\n\t\tswitch (name)\r\n\t\t{\r\n\t\t\tcase 'auth':\r\n\t\t\t\tsReturn += '/api/v1/auth/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'refresh':\r\n\t\t\t\tsReturn += '/api/v1/auth/refresh';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'chat':\r\n\t\t\t\tsReturn += '/api/v1/chat/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'epreuve':\r\n\t\t\t\tsReturn += '/api/v1/epreuve/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'etablissement':\r\n\t\t\t\tsReturn += '/api/v1/etablissement/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'examen':\r\n\t\t\t\tsReturn += '/api/v1/examen/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'file':\r\n\t\t\t\tsReturn += '/api/v1/file/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'filesend':\r\n\t\t\t\tsReturn += '/api/v1/file/send/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'filesendforpreview':\r\n\t\t\t\tsReturn += '/api/v1/file/sendForPreview/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'sendToConvert':\r\n\t\t\t\tsReturn += '/api/v1/file/sendToConvert/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'session':\r\n\t\t\t\tsReturn += '/api/v1/session/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'sujet':\r\n\t\t\t\tsReturn += '/api/v1/sujet/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'task':\r\n\t\t\t\tsReturn += '/api/v1/task/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'user':\r\n\t\t\t\tsReturn += '/api/v1/user/';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn sReturn;\r\n }\r\n\r\n /**\r\n * Fonction interne pour normaliser une url\r\n * @param str\r\n * @pzaram searchString\r\n */\r\n\tprivate static startsWith(str: string, searchString: string): boolean\r\n\t{\r\n\t\treturn str.substr(0, searchString.length) === searchString;\r\n\t}\r\n\r\n\r\n /**\r\n * Normalise une url\r\n * @param str\r\n */\r\n\tprivate static normalize(str: string): string\r\n\t{\r\n\r\n\t\tif (VaultHttpService.startsWith(str, 'file://'))\r\n\t\t{\r\n\t\t\t// 3 slash pour file protocol\r\n\t\t\tstr = str.replace(/(\\/{0,3})\\/*/g, '$1');\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// au minimum 2 apres le protocole\r\n\t\t\tstr = str.replace(/:\\//g, '://');\r\n\r\n\t\t\t// enlever les slash en trop\r\n\t\t\tstr = str.replace(/([^:\\s\\%\\3\\A])\\/+/g, '$1/');\r\n\t\t}\r\n\r\n\t\t// enlever les slash de fin avant param\r\n\t\tstr = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\r\n\r\n\t\t// remplace ? par &\r\n\t\tstr = str.replace(/(\\?.+)\\?/g, '$1&');\r\n\r\n\t\treturn str;\r\n\t}\r\n\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport { SocketService }\t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData }\t\t\t\t\tfrom '../providers/user-data';\r\n\r\n@Injectable()\r\n/**\r\n *\r\n */\r\nexport class MessagesService\r\n{\r\n private socket: any = undefined;\r\n\r\n\r\n /**\r\n\t *\r\n\t */\r\n constructor(private socketService:\tSocketService,\r\n\t\t\t\tprivate userData:\t\tUserData)\r\n {\r\n this.socket = socketService.getSocketConnection();\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @param idElement\r\n * @param bucket\r\n */\r\n public getMessages(idElement: any, bucket: string)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n {\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'messages',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey:\tidElement,\r\n\t\t\t\t\t\t\tbucket: bucket\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Requete permettant dz récupéré les commentaires lus par l'utilisateur\r\n * pour un élément donné (tache, fichier, sujet ou noeud)\r\n * @param idElement\r\n */\r\n\tpublic getReadedMessages(idElement: string, bucket: string)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\tcmd: 'messages.readed',\r\n\t\t\t\t\t\targs:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey:\tidElement,\r\n\t\t\t\t\t\t\tbucket: idElement\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Récupère les messages appartenant à un élément non lu\r\n * A utiliser plutôt qu'un count\r\n * @param idElement\r\n * @param bucket\r\n * @param dateMessageFrom\r\n * @param limite\r\n */\r\n public getLastUnread(idElement: string, bucket: string, dateMessageFrom: any, limite: number)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n {\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tiam: 'c-c',\r\n\t\t\t\t\t\tname: this.userData.getUserId(),\r\n\t\t\t\t\t\twhat: SocketWhat.info,\r\n\t\t\t\t\t\tcmd: 'messages',\r\n\t\t\t\t\t\targs:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey:\t\tidElement,\r\n\t\t\t\t\t\t\tbucket:\t\tidElement,\r\n\t\t\t\t\t\t\tfromDate:\tdateMessageFrom,\r\n\t\t\t\t\t\t\tlimit:\t\tlimite\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Flague le commentaire comme lu\r\n * @param idElement\r\n * @param bucket\r\n * @param idMessage\r\n * @param typeMessage\r\n * @param notification\r\n */\r\n public setMessageRead(idElement: string, bucket: string, idMessage: string, typeMessage: string, notification: string[])\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n {\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tiam: 'c-c',\r\n\t\t\t\t\t\tname: this.userData.getUserId(),\r\n\t\t\t\t\t\twhat: SocketWhat.info,\r\n\t\t\t\t\t\tcmd: 'messages.read',\r\n\t\t\t\t\t\targs:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey:\t\tidElement,\r\n\t\t\t\t\t\t\tbucket:\t\tidElement,\r\n\t\t\t\t\t\t\tsub:\t\ttypeMessage,\r\n\t\t\t\t\t\t\twhen:\t\tidMessage,\r\n\t\t\t\t\t\t\tnotifier:\tnotification\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Flague le commentaire comme recu\r\n * @param idElement\r\n * @param bucket\r\n * @param idMessage\r\n * @param typeMessage\r\n * @param notification\r\n */\r\n public setMessageAck(idElement: string, bucket: string, idMessage: string, typeMessage: string, notification: string[])\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n {\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tiam: 'c-c',\r\n\t\t\t\t\t\tname: this.userData.getUserId(),\r\n\t\t\t\t\t\twhat: SocketWhat.info,\r\n\t\t\t\t\t\tcmd: 'messages.ack',\r\n\t\t\t\t\t\targs:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey:\t\tidElement,\r\n\t\t\t\t\t\t\tbucket:\t\tidElement,\r\n\t\t\t\t\t\t\tsub:\t\ttypeMessage,\r\n\t\t\t\t\t\t\twhen:\t\tidMessage,\r\n\t\t\t\t\t\t\tnotifier:\tnotification\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n }\r\n });\r\n\t}\r\n\t\r\n\r\n /**\r\n * Récupère le nombre de messages appartenant à un élémént\r\n * @param idElement\r\n * @param bucket\r\n * @param dateMessageFrom\r\n */\r\n public getMessagesCount(idElement: string, bucket: string, dateMessageFrom: any)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n {\r\n if (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tiam: 'c-c',\r\n\t\t\t\t\t\tname: this.userData.getUserId(),\r\n\t\t\t\t\t\twhat: SocketWhat.info,\r\n\t\t\t\t\t\tcmd: 'messages.count',\r\n\t\t\t\t\t\targs:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tkey:\t\tidElement,\r\n\t\t\t\t\t\t\tbucket:\t\tidElement,\r\n\t\t\t\t\t\t\tfromDate:\tdateMessageFrom,\r\n\t\t\t\t\t\t\tsub:\t\t'C'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n }\r\n });\r\n }\r\n\r\n\t\r\n /**\r\n *\r\n */\r\n public sendMessage(nameBucket: string, key: string, type: string, datas: any, notifiers: string[] = [])\r\n {\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tiam: 'c-c',\r\n\t\t\t\t\t\tname: this.userData.getUserId(),\r\n\t\t\t\t\t\twhat: SocketWhat.info,\r\n\t\t\t\t\t\tcmd: 'messages.set',\r\n\t\t\t\t\t\targs:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbucket: nameBucket,\r\n\t\t\t\t\t\t\tkey,\r\n\t\t\t\t\t\t\tsub: type,\r\n\t\t\t\t\t\t\tdatas\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tif (notifiers.length > 0)\r\n {\r\n data.args.notifier = notifiers;\r\n }\r\n\r\n socket.emit('create', data);\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { SocketService }\t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData }\t\t\t\t\tfrom '../providers/user-data';\r\nimport { EncryptService }\t\t\tfrom '../services/encrypt.service';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\nexport class PassationService\r\n{\r\n\tconstructor(\r\n\t\tprivate socketService:\tSocketService,\r\n\t\tprivate userData:\t\tUserData,\r\n\t\tprivate encryptService: EncryptService)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\tpublic createPassation(datas: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t'passation',\r\n\t\t\t\t\t\t'args': datas\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic getPassations()\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'passations',\r\n\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic getCandidatsPassations(idPassation: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'candidatsPassations',\r\n\t\t\t\t\t\t'args': {\r\n\t\t\t\t\t\t\tidPassation: idPassation\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic updatePassation(idPassation: any, datasToUpdate: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t'passation',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpassationId:\tidPassation,\r\n\t\t\t\t\t\t\tdatasToUpdate:\tdatasToUpdate\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic sendPassation(passation: any, decryptedFiles: any, subjectsToAdd: any, passwordSelected: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'sendPassation',\r\n\t\t\t\t\t'args': \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttoken:\t\t\t\tthis.userData.getTokenKey(),\r\n\t\t\t\t\t\tpassation:\t\t\tpassation,\r\n\t\t\t\t\t\tdecryptedFiles:\t\tdecryptedFiles,\r\n\t\t\t\t\t\tsubjectsToAdd:\t\tsubjectsToAdd,\r\n\t\t\t\t\t\tpasswordSelected:\tpasswordSelected\r\n\t\t\t\t\t} \r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic importResultsPassation(passation: any, moDecryptedFiles: any, needRecalculate: boolean = false)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'importResultsPassations2',\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttoken:\t\t\t\tthis.userData.getTokenKey(),\r\n\t\t\t\t\t\tpassation:\t\t\tpassation,\r\n\t\t\t\t\t\tdecryptedFiles: \tmoDecryptedFiles,\r\n\t\t\t\t\t\tmustRecalculate: \tneedRecalculate\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\tsocket.emit('read', data);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic importEmargementsPassation(passation: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (passation)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.mail,\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'candidatsEmargement',\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttoken: this.userData.getTokenKey(),\r\n\t\t\t\t\t\tpassation: passation\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic decodePassationFiles(passation: any, subjectsToEncode: any[]): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tconst resultEncoding: \tany \t\t\t= {};\r\n\t\t\tconst promises: \t\tPromise[] \t= [];\r\n\r\n\t\t\tlet idFileMain: any;\r\n\t\t\tlet idFileSec: \tany;\r\n\r\n\t\t\tif (passation && passation.datas && passation.datas.idFileMain)\r\n\t\t\t{\r\n\t\t\t\tidFileMain = passation.datas.idFileMain;\r\n\t\t\t}\r\n\r\n\t\t\tif (passation && passation.datas && passation.datas.idFileSec)\r\n\t\t\t{\r\n\t\t\t\tidFileSec = passation.datas.idFileSec;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tfor (const subject of subjectsToEncode)\r\n\t\t\t{\r\n\t\t\t\tlet qcmFileSubject: any;\r\n\r\n\t\t\t\t// En fonction du type de sujet (principal ou secondaire) on récupère le\r\n\t\t\t\t// fichier qui a été défini comme fichier QCM\r\n\t\t\t\tif (idFileMain)\r\n\t\t\t\t{\r\n\t\t\t\t\tqcmFileSubject = subject.pj.find((pj: any) => pj.id === idFileMain);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (qcmFileSubject === undefined && idFileSec)\r\n\t\t\t\t{\r\n\t\t\t\t\tqcmFileSubject = subject.pj.find((pj: any) => pj.id === idFileSec);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Si le fichier n'est pas trouvé en on prend par défaut le premier fichier avec une extension JSON\r\n\t\t\t\tif (qcmFileSubject === undefined)\r\n\t\t\t\t{\r\n\t\t\t\t\tqcmFileSubject = subject.pj.find((pj: any) => pj.extension === 'json');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (qcmFileSubject)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet filesToInclude: any[] = [];\r\n\t\t\t\t\tfilesToInclude.push(qcmFileSubject);\r\n\r\n\t\t\t\t\tif (qcmFileSubject.path && qcmFileSubject.path !== '')\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst jsonPath = JSON.parse(qcmFileSubject.path);\r\n\t\t\t\t\t\tconst attachedFileQcmIds = jsonPath.attachedFiles;\r\n\r\n\t\t\t\t\t\tif (attachedFileQcmIds)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst attachedFileQcm = subject.pj.filter((pj: any) => attachedFileQcmIds.includes(pj.id));\r\n\t\t\t\t\t\t\tfilesToInclude = filesToInclude.concat(attachedFileQcm);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresultEncoding[subject.id] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tidFile:\t\t\t[],\r\n\t\t\t\t\t\tdecryptedAes:\t[]\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfor (const pj of filesToInclude)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// On ne décrypte que les fichiers que ne sont pas en corbeille\r\n\t\t\t\t\t\tif (pj.deleted === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpromises.push(this._decryptAesKeysForEpreuve(pj));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tPromise.all(promises).then(result =>\r\n\t\t\t{\r\n\t\t\t\tfor (const res of result)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (res.idSubject && res.idFile)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresultEncoding[res.idSubject].idFile.push(res.idFile);\r\n\t\t\t\t\t\tresultEncoding[res.idSubject].decryptedAes.push(res.decryptedAes);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tresolve(resultEncoding);\r\n\r\n\t\t\t}).catch((error) =>\r\n\t\t\t{\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tprivate _decryptAesKeysForEpreuve(pj: any): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tif (pj.encryptedAesKeys && pj.encryptedAesKeys.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.encryptService.decryptData(pj.encryptedAesKeys[0].val).then((aesDecoded: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet result: any =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tidSubject:\t\tpj.idSubject,\r\n\t\t\t\t\t\t\tidFile:\t\t\tpj.id,\r\n\t\t\t\t\t\t\tdecryptedAes:\taesDecoded\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\tresolve(result);\r\n\r\n\t\t\t\t}).catch(error =>\r\n\t\t\t\t{\r\n\t\t\t\t\treject();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\treject();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SocketService } from './socket.service';\r\nimport { ISocketData, SocketWhat } from '../models/message.model';\r\nimport { UserData } from '../providers/user-data';\r\n\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n * \r\n */\r\nexport class RoomService\r\n{\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tconstructor(public socketService: SocketService,\r\n\t\tprivate userData: UserData)\t\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n\tpublic getMessages(roomId: any)\r\n\t{\r\n\t\t//return this.etablissementHttpService.addEtablissement(dataEtab.toJson()).share();\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\t\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'msg',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// Todo faire un truc moins honteux que ça\r\n\t\t\t\t\t\t\tkey: roomId,\r\n\t\t\t\t\t\t\tbucket: 'rooms',\r\n\t\t\t\t\t\t\tlimit: 100\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\t\r\n\tpublic getMessagesBucket(roomId: any, ticks = '', limit = 100, isMore = 'false')\r\n\t{\r\n\t\t\r\n\t\t\r\n\t\tlet args = \r\n\t\t{\r\n\t\t\t// Todo faire un truc moins honteux que ça\r\n\t\t\ttoDate:\t\tticks,\r\n\t\t\tkey:\t\troomId,\r\n\t\t\tbucket:\t\t'rooms',\r\n\t\t\tlimit:\t\tlimit,\r\n\t\t};\r\n\t\t\r\n\r\n\t\t\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam':\t\t'c-c',\r\n\t\t\t\t\t\t'name':\t\tthis.userData.getUserId(),\r\n\t\t\t\t\t\t'what':\t\tSocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t\t'msg',\r\n\t\t\t\t\t\t'idc':\t\tisMore,\r\n\t\t\t\t\t\t'args':\t\targs\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tpublic getNomberOfUnreadedMessage(roomId: any)\r\n\t{\r\n\t\t//return this.etablissementHttpService.addEtablissement(dataEtab.toJson()).share();\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\t\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'msg.unread',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// Todo faire un truc moins honteux que ça\r\n\t\t\t\t\t\t\tchan: '*room::' + roomId + '::priv'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","// Angular\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n// Other\r\nimport { SessionHttpService }\t\tfrom './http/sessionHttp.service';\r\nimport { Session }\t\t\t\t\tfrom '../classes/session.class';\r\nimport { Comment }\t\t\t\t\tfrom '../classes/comment.class';\r\nimport { SocketService } \t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } \t\t\t\tfrom '../providers/user-data';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class SessionService\r\n{\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(private sessionHttpService: SessionHttpService,\r\n\t\t\t public socketService: SocketService,\r\n\t\t\t\tprivate userData: UserData)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n /**\r\n * Add new session in database from Session object given in parameter\r\n\t * Parents ids are given by the parentPath parameter\r\n */\r\n\tpublic addSession(dataSession: Session, parentPath: any[] = [])\r\n\t{\r\n\t\tlet datas \t\t= dataSession.toJson();\r\n\t\tdatas.idparents = parentPath;\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t\t'args': \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: 'session',\r\n\t\t\t\t\t\t\tnode: datas\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Update session in database from Session object given in parameter\r\n\t * @param dataSession\r\n\t */\r\n\tpublic editSession(dataSession: Session)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'node',\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttype: \t'session',\r\n\t\t\t\t\t\tnode:\tdataSession.toJson()\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Get all sessions in database relative to user account and parameters given:\r\n *\r\n * -cascade: if false, return only Sessions objects, if true return Sessions object with childs\r\n * (examens and epreuves) in each objects\r\n * -idSession: if this parameter is defined, return the Session object corresponding to the value id\r\n * -idEtab: if this parameter is defined (and if the parameter idSession is not), return the Sessions\r\n * objects wich the etablissement parent matches the value id.\r\n *\r\n * Return a list of Session objects\r\n */\r\n\tpublic getSessions(cascade: boolean, idSession: string, idEtab: string, callback: (result: any) => void)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'node.info',\r\n\t\t\t\t\t'args': \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnode: \t\tidEtab,\r\n\t\t\t\t\t\tnodeOption: 'wc',\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.sessionHttpService.getSessions(cascade, idSession, idEtab).subscribe(res =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet resJson\t\t\t\t= res.json();\r\n\t\t\t\t\tlet sessions: Session[] = [];\r\n\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// ToComment\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tif (resJson.data && resJson.data.rows)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let row of resJson.data.rows)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (row)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsessions.push(Session.fromJsonObject(row));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcallback(sessions);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { CreationHttpService } from './http/creationHttp.service';\r\nimport { ISocketData, SocketWhat } from '../models/message.model';\r\nimport { SCClientSocket } from 'socketcluster-client';\r\nimport { SCChannel } from 'sc-channel';\r\nimport { EventEmitter } from 'events';\r\nimport {Observable} from 'rxjs/Rx';\r\nimport { MatDialog }\t\t\t\t\t\t\t\tfrom '@angular/material';\r\n\r\ndeclare const require: any;\r\n\r\nlet socketCluster = require('socketcluster-client')\r\n\r\n\r\ninterface ISocketEvents\r\n{\r\n\t// Canaux par defaut hors room\r\n\ton(event: 'genericUpdates', listener: (data: any) => void): this; // Pour action globale\r\n\ton(event: 'accountUpdates', listener: (data: any) => void): this; // Action sur le compte\r\n\ton(event: 'user',\t\t\tlistener: (data: any) => void): this; // Action mail user (si 10machines, send sur les 10)\r\n\ton(event: 'machine',\t\tlistener: (data: any) => void): this; // Cible une seule machine en cours (multi onglet par contre)\r\n\ton(event: 'account',\t\tlistener: (data: any) => void): this; // Le compte (Etablissement)\r\n\r\n\t// Ecouteur générique\r\n\ton(event: 'create', listener: (data: any) => void): this;\r\n\ton(event: 'read',\tlistener: (data: any) => void): this;\r\n\ton(event: 'update', listener: (data: any) => void): this;\r\n\ton(event: 'delete', listener: (data: any) => void): this;\r\n\r\n\t// Ecouteur spécifique\r\n\ton(event: 'error',\t\t\t\tlistener: (data: any)\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'debug',\t\t\t\tlistener: (data: any)\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'authenticate',\t\tlistener: (data: any)\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'authStateChange',\tlistener: (old: any, news: any, signed: any)\t=> void): this;\r\n\ton(event: 'deauthenticate',\t\tlistener: ()\t\t\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'authTokenChange',\tlistener: (newtoken: any)\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'connect',\t\t\tlistener: ()\t\t\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'disconnect',\t\t\tlistener: ()\t\t\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'message_creation',\tlistener: (data: any)\t\t\t\t\t\t\t=> void): this;\r\n\r\n\ton(event: string, listener: (data: any) => void): this;\r\n}\r\n\r\n\r\n@Injectable()\r\n\r\n\r\nexport class SocketService extends EventEmitter implements ISocketEvents\r\n{\r\n\r\n\tpublic\troomsAGerer: any = undefined;\r\n\r\n\tprivate socket: any;\r\n//\tprivate processing: any\t\t= false;\r\n\tprivate timeOutSocket: any\t= undefined;\r\n//\tprivate roomsGet: boolean\t= false;\r\n\r\n\r\n\tconstructor(public dialog: MatDialog)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.init();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Initialisation du service socket\r\n\t */\r\n\tpublic init()\r\n\t{\r\n\t\tthis.roomsAGerer =\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tname: '*soft::all::creation', state: 'nosub', watch: true,\r\n\t\t\t\t\tfct: this.watchGenericUpdates.bind(this), channel: undefined\r\n\t\t\t\t}\r\n\t\t\t];\r\n\t}\r\n\r\n\tpublic offMachine()\r\n\t{\r\n\t\tthis.socket.off('marchine');\r\n\t}\r\n\r\n\t/**\r\n\t * Cree le socket authentifie ou pas , pas d'http\r\n\t */\r\n\tpublic getSocketConnection(): Observable\r\n\t{\r\n\t\tconst observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tif (this.socket)\r\n\t\t\t{\r\n\t\t\t\tif (this.socket.state)\r\n\t\t\t\t{\r\n\t\t\t\t\t//retourne le socket s'il est ouvert (peut etre non auth)\r\n\t\t\t\t\tif (this.socket.state === SCClientSocket.OPEN)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tobserver.next(this.socket);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// en cours de connexion\r\n\t\t\t\t\tif (this.socket.state === SCClientSocket.CONNECTING)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tobserver.next(undefined);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// ou deco\r\n\t\t\t\t\tif (this.socket.state === SCClientSocket.CLOSED)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socket.connect();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\r\n\t\t\t\tconst chatUrl \t\t= CreationHttpService.getChatUrl();\r\n\t\t\t\tconst chatSecure \t= CreationHttpService.getChatSecure();\r\n\t\t\t\tconst chatPath \t\t= CreationHttpService.getChatPath();\r\n\t\t\t\tconst chatPort \t\t= CreationHttpService.getChatPort();\r\n\r\n\t\t\t\tif (chatUrl !== undefined && chatSecure !== undefined && chatPath !== undefined && chatPort !== undefined)\r\n\t\t\t\t{\r\n\t\t\t\t\t// Pas de socket, on cree un\r\n\t\t\t\t\tthis.socket = socketCluster.connect({\r\n\t\t\t\t\t\thostname:\t\tchatUrl,\r\n\t\t\t\t\t\tsecure:\t\t\tchatSecure,\r\n\t\t\t\t\t\tpath:\t\t\tchatPath,\r\n\t\t\t\t\t\tautoreconnect:\ttrue,\r\n\t\t\t\t\t\tport:\t\t\tchatPort\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tobserver.next(this.socket);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tobserver.next(undefined);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.socket.off('authenticate');\r\n\t\t\tthis.socket.off('authStateChange');\r\n\t\t\tthis.socket.off('deauthenticate');\r\n\t\t\tthis.socket.off('authTokenChange');\r\n\t\t\tthis.socket.off('error');\r\n\t\t\tthis.socket.off('debug');\r\n\t\t\tthis.socket.off('connect');\r\n\t\t\tthis.socket.off('message_creation');\r\n\r\n\t\t\tthis.socket.off('create');\r\n\t\t\tthis.socket.off('read');\r\n\t\t\tthis.socket.off('update');\r\n\t\t\tthis.socket.off('delete');\r\n\t\t\tthis.socket.off('marchine');\r\n\t\t\tthis.socket.off();\r\n\r\n\t\t\tif (this.timeOutSocket)\r\n\t\t\t{\r\n\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t}\r\n\r\n\t\t\tthis.socket.on('authenticate', (old: any, news: any, signed: any) =>\r\n\t\t\t{\r\n\t\t\t\tthis.emit('authenticate', old, news, signed);\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis.socket.on('authStateChange', (old: any, news: any, signed: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (old && old.newState && old.newState === 'unauthenticated')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.emit('deauthenticate');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.emit('authStateChange', old, news, signed);\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis.socket.on('deauthenticate', () =>\r\n\t\t\t{\r\n\t\t\t\tthis.emit('deauthenticate');\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('authTokenChange', (newToken: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (!newToken)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.emit('deauthenticate');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.emit('authTokenChange', newToken);\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('error', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t{\r\n\t\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t\t\tobserver.next(undefined);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.emit('error', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'error', data);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('debug', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('debug', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'debug', data);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('create', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('create', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'create', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.socket.on('read', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('read', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'read', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.socket.on('update', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('update', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'update', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.socket.on('delete', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('delete', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'delete', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.socket.on('connect', () =>\r\n\t\t\t{\r\n\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t{\r\n\t\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.emit('connect') === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'connect');\r\n\t\t\t\t}\r\n\t\t\t\tobserver.next(this.socket);\r\n\t\t\t});\r\n\t\t\tthis.socket.on('message_creation', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t{\r\n\t\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.emit('message_creation', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'message_creation');\r\n\t\t\t\t}\r\n\t\t\t\tobserver.next(this.socket);\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('disconnect', () =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(\"this.socket.on('disconnect', (data: any) =>this.socket.on('disconnect', (data: any) =>this.socket.on('disconnect', (data: any) =>\");\r\n\r\n\t\t\t\t//this.dialog.closeAll();\r\n\r\n\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t{\r\n\t\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.emit('disconnect') === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'disconnect');\r\n\t\t\t\t}\r\n\t\t\t\tobserver.next(undefined);\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis.timeOutSocket = setTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\t// this.dialog.closeAll();\r\n\r\n\t\t\t\tconsole.log('************Trop long on deco volontairement!');\r\n\t\t\t\tobserver.next(undefined);\r\n\t\t\t\tthis.logout();\r\n\t\t\t}, 10000);\r\n\r\n\t\t});\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic logout()\r\n\t{\r\n\t\tconsole.log('logout');\r\n\t\tif (this.socket && this.socket.state && this.socket.state === SCClientSocket.OPEN)\r\n\t\t{\r\n\t\t\tif (this.roomsAGerer)\r\n\t\t\t{\r\n\t\t\t\tfor (let room of this.roomsAGerer)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (room.channel)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\troom.channel.unwatch();\r\n\t\t\t\t\t\troom.channel.off();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// On enlève les écouteurs\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.socket.off('authenticate');\r\n\t\t\tthis.socket.off('authStateChange');\r\n\t\t\tthis.socket.off('deauthenticate');\r\n\t\t\tthis.socket.off('authTokenChange');\r\n\t\t\tthis.socket.off('error');\r\n\t\t\tthis.socket.off('connect');\r\n\t\t\tthis.socket.off('message_creation');\r\n\r\n\t\t\tthis.socket.off('create');\r\n\t\t\tthis.socket.off('read');\r\n\t\t\tthis.socket.off('update');\r\n\t\t\tthis.socket.off('delete');\r\n\t\t\tthis.socket.off('machine');\r\n\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Déconnexion et désauthentification\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.socket.deauthenticate();\r\n\t\t\tthis.socket.disconnect();\r\n\t\t\tthis.socket.off();\r\n\t\t\tthis.roomsAGerer = null;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic watchGenericUpdates(data: any)\r\n\t{\r\n\t\tif (super.emit('genericUpdates', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'genericUpdates', data);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic watchAccountUpdates(data: any)\r\n\t{\r\n\t\tif (super.emit('accountUpdates', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'accountUpdates', data);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic watchUser(data: any)\r\n\t{\r\n\t\tif (super.emit('user', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'user', data);\r\n\t\t}\r\n\t}\r\n\tpublic watchMachine(data: any)\r\n\t{\r\n\t\tif (super.emit('machine', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'machine', data);\r\n\t\t}\r\n\t}\r\n\tpublic watchAccount(data: any)\r\n\t{\r\n\t\tif (super.emit('account', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'account', data);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic findRoomAGerer(name: string):any\r\n\t{\r\n\t\tif (this.roomsAGerer)\r\n\t\t{\r\n\t\t\tfor (let i = 0; i < this.roomsAGerer.length; i++)\r\n\t\t\t{\r\n\t\t\t\tif (this.roomsAGerer[i].name == name)\r\n\t\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t}\r\n\r\n\r\n\r\n\tpublic RoomLost()\r\n\t{\r\n\t\tlet time = Date.now() / 1000;\r\n\t\tif (this.roomsAGerer)\r\n\t\t{\r\n\t\t\t// on parcours toutes les rooms\r\n\t\t\tlet nb = 3;\r\n\t\t\tfor (let i = 0; i < this.roomsAGerer.length; i++)\r\n\t\t\t{\r\n\t\t\t\t// on passe a eta cnx perdue\r\n\t\t\t\tthis.roomsAGerer[i].state = 'lost';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic GererRoom()\r\n\t{\r\n\t\tlet time = Date.now() / 1000;\r\n\r\n\t\tif (this.roomsAGerer)\r\n\t\t{\r\n\t\t\t// on parcours toutes les rooms\r\n\t\t\tlet nb = 5;\r\n\t\t\tfor (let i = 0; i < this.roomsAGerer.length; i++)\r\n\t\t\t{\r\n\t\t\t\t// si on en trouve une non subscrite on lance le sub, et on sort\r\n\t\t\t\tif (this.roomsAGerer[i].state === 'nosub')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.subscribe(this.socket, i);\r\n\t\t\t\t\t// nb a la fois\r\n\t\t\t\t\tif (nb < 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnb--;\r\n\t\t\t\t}\r\n\t\t\t\t//pour les socket a l'etat lost (deco && a surveiller)\r\n\t\t\t\tif (this.roomsAGerer[i].state === 'lost')\r\n\t\t\t\t{\r\n\t\t\t\t\tlet channel = this.roomsAGerer[i].channel;\r\n\t\t\t\t\tthis.roomsAGerer[i].state = 'pending';\r\n\r\n\t\t\t\t\tif (channel.state === SCChannel.UNSUBSCRIBED)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tchannel.subscribe();\r\n\t\t\t\t\t\t// nb a la fois\r\n\t\t\t\t\t\tif (nb < 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tnb--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// si tout ca est ok\r\n\t\t\t// toutes les 10s (modulo sur date)\r\n\t\t\tif (time % 10)\r\n\t\t\t{\r\n\t\t\t\tif (this.roomsAGerer)\r\n\t\t\t\t{\r\n\t\t\t\t\t// on parcours toutes les rooms\r\n\t\t\t\t\tfor (let i = 0; i < this.roomsAGerer.length; i++)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet value = this.roomsAGerer[i];\r\n\t\t\t\t\t\t//si le canal est connecté\r\n\t\t\t\t\t\tif (value.channel && value.channel.state === SCChannel.SUBSCRIBED)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet watchers = value.channel.watchers();\r\n\t\t\t\t\t\t\t// si pas de watcher on l'ajoute\r\n\t\t\t\t\t\t\tif (!watchers || watchers.length == 0)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue.channel.watch((data: any) => { value.fct(data); });\r\n\t\t\t\t\t\t\t\tvalue.state = 'watching';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate subscribe(socket: any, idx: number)\r\n\t{\r\n\t\tlet value = this.roomsAGerer[idx];\r\n\t\tif (!value)\r\n\t\t{\r\n\t\t\tconsole.log(idx, 'must be in table before subsribe');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvalue.state = 'pending';\r\n\r\n\t\tvalue.channel = socket.subscribe(value.name);\r\n\t\tvalue.channel.on('subscribe', () =>\r\n\t\t{\r\n\t\t\tconsole.log('Subscribre to', value.name);\r\n\t\t\tif (value.fct)\r\n\t\t\t{\r\n\t\t\t\tvalue.channel.watch((data: any) => { value.fct(data); });\r\n\t\t\t\tvalue.state = 'watching';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvalue.state = 'noWatcher';\r\n\t\t\t}\r\n\t\t\t// TODO: recuperee etat messages lus\r\n\t\t});\r\n\r\n\r\n\t\tvalue.channel.on('unsubscribe', () =>\r\n\t\t{\r\n\t\t\tconsole.log('unsubscribe to', value.name);\r\n\t\t\tif (value.watch)\r\n\t\t\t{\r\n\t\t\t\tvalue.state = 'lost';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tdelete this.roomsAGerer[idx];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tvalue.channel.on('subscribeFail', () =>\r\n\t\t{\r\n\t\t\tconsole.log('subscribeFail', value.name);\r\n\t\t\tif (value.watch)\r\n\t\t\t{\r\n\t\t\t\tvalue.state = 'lost';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvalue.state = 'fail';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { VaultHttpService } from './http/vaultHttp.service';\r\nimport { ISocketData, SocketWhat } from '../models/message.model';\r\nimport { SCClientSocket } from 'socketcluster-client';\r\nimport { SCChannel } from 'sc-channel';\r\nimport { EventEmitter } from 'events';\r\nimport {Observable} from 'rxjs/Rx';\r\ndeclare const require: any;\r\n\r\nlet socketCluster = require('socketcluster-client');\r\n\r\ninterface ISocketEvents\r\n{\r\n\t// Canaux par defaut hors room\r\n\ton(event: 'genericUpdates',\tlistener: (data: any) => void): this; // Pour action globale\r\n\ton(event: 'accountUpdates',\tlistener: (data: any) => void): this; // Action sur le compte\r\n\ton(event: 'user',\t\t\tlistener: (data: any) => void): this; // Action mail user (si 10machines, send sur les 10)\r\n\ton(event: 'machine',\t\tlistener: (data: any) => void): this; // Cible une seule machine en cours (multi onglet par contre)\r\n\ton(event: 'account',\t\tlistener: (data: any) => void): this; // Le compte (Etablissement)\r\n\r\n\t// Ecouteur générique\r\n\ton(event: 'create', listener: (data: any) => void): this;\r\n\ton(event: 'read',\tlistener: (data: any) => void): this;\r\n\ton(event: 'update', listener: (data: any) => void): this;\r\n\ton(event: 'delete', listener: (data: any) => void): this;\r\n\r\n\t// Ecouteur spécifique\r\n\ton(event: 'error',\t\t\t\tlistener: (data: any)\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'debug',\t\t\t\tlistener: (data: any)\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'authenticate',\t\tlistener: (data: any)\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'authStateChange',\tlistener: (old: any, news: any, signed: any)\t=> void): this;\r\n\ton(event: 'deauthenticate',\t\tlistener: ()\t\t\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'authTokenChange',\tlistener: (newtoken: any)\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'connect',\t\t\tlistener: ()\t\t\t\t\t\t\t\t\t=> void): this;\r\n\ton(event: 'disconnect',\t\t\tlistener: ()\t\t\t\t\t\t\t\t\t=> void): this;\r\n\r\n\ton(event: string, listener: (data: any) => void): this;\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class SocketVaultService extends EventEmitter implements ISocketEvents\r\n{\r\n public\troomsAGerer: any = undefined;\r\n\r\n\tprivate socket:\t\t\tany;\r\n\tprivate processing:\t\tboolean\t= false;\r\n\tprivate timeOutSocket:\tany\t\t= undefined;\r\n private roomsGet:\t\tboolean\t= false;\r\n\r\n constructor()\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.init();\r\n }\r\n\r\n /**\r\n\t * Initialisation du service socket\r\n\t */\r\n\tpublic init()\r\n\t{\r\n\t\tthis.roomsAGerer =\r\n [\r\n {\r\n name: '*soft::all::creation', state: 'nosub', watch: true,\r\n fct: this.watchGenericUpdates.bind(this), channel: undefined\r\n }\r\n ];\r\n }\r\n\r\n /**\r\n\t * Cree le socket authentifie ou pas , pas d'http\r\n\t */\r\n\tpublic getSocketConnection(): Observable\r\n\t{\r\n\t\tlet observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tif (this.socket)\r\n\t\t\t{\r\n\t\t\t\tif (this.socket.state)\r\n\t\t\t\t{\r\n\t\t\t\t\t//retourne le socket s'il est ouvert (peut etre non auth)\r\n\t\t\t\t\tif (this.socket.state === SCClientSocket.OPEN)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tobserver.next(this.socket);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// en cours de connexion\r\n\t\t\t\t\tif (this.socket.state === SCClientSocket.CONNECTING)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tobserver.next(undefined);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// ou deco\r\n\t\t\t\t\tif (this.socket.state === SCClientSocket.CLOSED)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socket.connect();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t//Pas de socket, on cree un\r\n\t\t\t\tthis.socket = socketCluster.connect({\r\n\t\t\t\t\thostname:\t\tVaultHttpService.getChatUrl(),\r\n\t\t\t\t\tsecure:\t\t\tVaultHttpService.getChatSecure(),\r\n\t\t\t\t\tpath:\t\t\tVaultHttpService.getChatPath(),\r\n\t\t\t\t\tautoreconnect:\ttrue,\r\n\t\t\t\t\tport:\t\t\tVaultHttpService.getChatPort()\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.socket.off('authenticate');\r\n\t\t\tthis.socket.off('authStateChange');\r\n\t\t\tthis.socket.off('deauthenticate');\r\n\t\t\tthis.socket.off('authTokenChange');\r\n\t\t\tthis.socket.off('error');\r\n\t\t\tthis.socket.off('debug');\r\n\t\t\tthis.socket.off('connect');\r\n\t\t\tthis.socket.off('create');\r\n\t\t\tthis.socket.off('read');\r\n\t\t\tthis.socket.off('update');\r\n\t\t\tthis.socket.off('delete');\r\n\t\t\tthis.socket.off();\r\n\r\n\t\t\tif (this.timeOutSocket)\r\n\t\t\t{\r\n\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t}\r\n\r\n\t\t\tthis.socket.on('authenticate', (old: any, news: any, signed: any) =>\r\n\t\t\t{\r\n\t\t\t\tthis.emit('authenticate', old, news, signed);\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis.socket.on('authStateChange', (old: any, news: any, signed: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (old && old.newState && old.newState === 'unauthenticated')\r\n\t\t\t\t\tthis.emit('deauthenticate');\r\n\r\n\t\t\t\tthis.emit('authStateChange', old, news, signed);\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis.socket.on('deauthenticate', () =>\r\n\t\t\t{\r\n\t\t\t\tthis.emit('deauthenticate');\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('authTokenChange', (newToken: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (!newToken)\r\n\t\t\t\t\tthis.emit('deauthenticate');\r\n\r\n\t\t\t\tthis.emit('authTokenChange', newToken);\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis.socket.on('error', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t{\r\n\t\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t\t\tobserver.next(undefined);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.emit('error', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'error', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('debug', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('debug', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'debug', data);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('create', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('create', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'create', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.socket.on('read', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('read', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'read', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.socket.on('update', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('update', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'update', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.socket.on('delete', (data: any) =>\r\n\t\t\t{\r\n\t\t\t\tif (this.emit('delete', data) === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'delete', data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.socket.on('connect', () =>\r\n\t\t\t{\r\n\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t\tif (this.emit('connect') === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'connect');\r\n\t\t\t\t}\r\n\t\t\t\tobserver.next(this.socket);\r\n\t\t\t});\r\n\r\n\t\t\tthis.socket.on('disconnect', () =>\r\n\t\t\t{\r\n\t\t\t\tif (this.timeOutSocket)\r\n\t\t\t\t\tclearTimeout(this.timeOutSocket);\r\n\t\t\t\tif (this.emit('disconnect') === false)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log('Hey no listener for', 'disconnect');\r\n\t\t\t\t}\r\n\t\t\t\tobserver.next(undefined);\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis.timeOutSocket = setTimeout(() =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log('************Trop long on deco volontairement!');\r\n\t\t\t\tobserver.next(undefined);\r\n\t\t\t\tthis.logout();\r\n\t\t\t}, 10000);\r\n\r\n\t\t});\r\n\t\treturn observable;\r\n }\r\n\r\n\r\n /**\r\n\t *\r\n\t */\r\n\tpublic logout()\r\n\t{\r\n\t\tif (this.socket && this.socket.state && this.socket.state === SCClientSocket.OPEN)\r\n\t\t{\r\n\t\t\tif (this.roomsAGerer)\r\n\t\t\t{\r\n\t\t\t\tfor (let room of this.roomsAGerer)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (room.channel)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\troom.channel.unwatch();\r\n\t\t\t\t\t\troom.channel.off();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// On enlève les écouteurs\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.socket.off('authenticate');\r\n\t\t\tthis.socket.off('authStateChange');\r\n\t\t\tthis.socket.off('deauthenticate');\r\n\t\t\tthis.socket.off('authTokenChange');\r\n\t\t\tthis.socket.off('error');\r\n\t\t\tthis.socket.off('connect');\r\n\r\n\t\t\tthis.socket.off('create');\r\n\t\t\tthis.socket.off('read');\r\n\t\t\tthis.socket.off('update');\r\n\t\t\tthis.socket.off('delete');\r\n\r\n\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// Déconnexion et désauthentification\r\n\t\t\t// ---------------------------------------\r\n\t\t\tthis.socket.deauthenticate();\r\n\t\t\tthis.socket.disconnect();\r\n\t\t\tthis.socket.off(); \r\n\r\n\t\t}\r\n }\r\n\r\n\r\n public watchGenericUpdates(data: any)\r\n\t{ \r\n\t\tif (super.emit('genericUpdates', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'genericUpdates', data);\r\n\t\t}\r\n\t} \r\n\r\n\r\n\tpublic watchAccountUpdates(data: any)\r\n\t{\r\n\t\tif (super.emit('accountUpdates', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'accountUpdates', data);\r\n\t\t}\r\n\t} \r\n\r\n\r\n\tpublic watchUser(data: any)\r\n\t{\r\n\t\tif (super.emit('user', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'user', data);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic watchMachine(data: any)\r\n\t{\r\n\t\tif (super.emit('machine', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'machine', data);\r\n\t\t}\r\n\t}\r\n\tpublic watchAccount(data: any)\r\n\t{\r\n\t\tif (super.emit('account', data) === false)\r\n\t\t{\r\n\t\t\tconsole.log('Hey no listener for', 'account', data);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic findRoomAGerer(name: string):any\r\n\t{\r\n\t\tif (this.roomsAGerer)\r\n\t\t{\r\n\t\t\tfor (let i = 0; i < this.roomsAGerer.length; i++)\r\n\t\t\t{\r\n\t\t\t\tif (this.roomsAGerer[i].name == name)\r\n\t\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t}\r\n\r\n\r\n\r\n\tpublic RoomLost()\r\n\t{\r\n\t\tlet time = Date.now() / 1000;\r\n\t\t\r\n\t\tif (this.roomsAGerer)\r\n\t\t{\r\n\t\t\t// on parcours toutes les rooms \r\n\t\t\tlet nb = 3;\r\n\t\t\tfor (let i = 0; i < this.roomsAGerer.length; i++)\r\n\t\t\t{\r\n\t\t\t\t// on passe a eta cnx perdue\r\n\t\t\t\tthis.roomsAGerer[i].state = 'lost';\r\n\t\t\t}\r\n\t\t}\r\n } \r\n\r\n\r\n public GererRoom()\r\n\t{\r\n\t\tlet time = Date.now() / 1000;\r\n\r\n\t\tif (this.roomsAGerer)\r\n\t\t{\r\n\t\t\t// on parcours toutes les rooms\r\n\t\t\tlet nb = 5;\r\n\t\t\tfor (let i = 0; i < this.roomsAGerer.length; i++)\r\n\t\t\t{\r\n\t\t\t\t// si on en trouve une non subscrite on lance le sub, et on sort\r\n\t\t\t\tif (this.roomsAGerer[i].state === 'nosub')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.subscribe(this.socket, i);\r\n\t\t\t\t\t// nb a la fois\r\n\t\t\t\t\tif (nb < 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnb--;\r\n\t\t\t\t}\r\n\t\t\t\t//pour les socket a l'etat lost (deco && a surveiller)\r\n\t\t\t\tif (this.roomsAGerer[i].state === 'lost')\r\n\t\t\t\t{\r\n\t\t\t\t\tlet channel = this.roomsAGerer[i].channel;\r\n\t\t\t\t\tthis.roomsAGerer[i].state = 'pending';\r\n\r\n\t\t\t\t\tif (channel.state === SCChannel.UNSUBSCRIBED)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tchannel.subscribe();\r\n\t\t\t\t\t\t// nb a la fois\r\n\t\t\t\t\t\tif (nb < 0)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tnb--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// si tout ca est ok\r\n\t\t\t// toutes les 10s (modulo sur date)\r\n\t\t\tif (time % 10)\r\n\t\t\t{\r\n\t\t\t\tif (this.roomsAGerer)\r\n\t\t\t\t{\r\n\t\t\t\t\t// on parcours toutes les rooms\r\n\t\t\t\t\tfor (let i = 0; i < this.roomsAGerer.length; i++)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet value = this.roomsAGerer[i];\r\n\t\t\t\t\t\t//si le canal est connecté\r\n\t\t\t\t\t\tif (value.channel && value.channel.state === SCChannel.SUBSCRIBED)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlet watchers = value.channel.watchers();\r\n\t\t\t\t\t\t\t// si pas de watcher on l'ajoute\r\n\t\t\t\t\t\t\tif (!watchers || watchers.length == 0)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue.channel.watch((data: any) => { value.fct(data); });\r\n\t\t\t\t\t\t\t\tvalue.state = 'watching';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate subscribe(socket: any, idx: number)\r\n\t{\r\n\t\tlet value = this.roomsAGerer[idx];\r\n\t\tif (!value)\r\n\t\t{\r\n\t\t\tconsole.log(idx, 'must be in table before subsribe');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvalue.state = 'pending';\r\n\r\n\t\tvalue.channel = socket.subscribe(value.name);\r\n\t\tvalue.channel.on('subscribe', () =>\r\n\t\t{\r\n\t\t\tconsole.log('Subscribre to', value.name);\r\n\t\t\tif (value.fct)\r\n\t\t\t{\r\n\t\t\t\tvalue.channel.watch((data: any) => { value.fct(data); });\r\n\t\t\t\tvalue.state = 'watching';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvalue.state = 'noWatcher';\r\n\t\t\t}\r\n\t\t\t// TODO: recuperee etat messages lus\r\n\t\t});\r\n\r\n\r\n\t\tvalue.channel.on('unsubscribe', () =>\r\n\t\t{\r\n\t\t\tconsole.log('unsubscribe to', value.name);\r\n\t\t\tif (value.watch)\r\n\t\t\t{\r\n\t\t\t\tvalue.state = 'lost';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tdelete this.roomsAGerer[idx];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tvalue.channel.on('subscribeFail', () =>\r\n\t\t{\r\n\t\t\tconsole.log('subscribeFail', value.name);\r\n\t\t\tif (value.watch)\r\n\t\t\t{\r\n\t\t\t\tvalue.state = 'lost';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvalue.state = 'fail';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\nimport { SocketService } from './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData } \t\t\t\tfrom '../providers/user-data';\r\n\r\n@Injectable()\r\n\r\nexport class StatisticsService\r\n{\r\n private socket: any = undefined;\r\n\r\n /**\r\n\t *\r\n\t */\r\n constructor(private socketService:\tSocketService,\r\n\t\t\t\tprivate userData:\t\tUserData)\r\n {\r\n this.socket = socketService.getSocketConnection();\r\n }\r\n\r\n public getEpreuveStats(nodeParentIds: any[] = [], limit: number = 0)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'epreuve.stats',\r\n\t\t\t\t\t\t'args': {\r\n\t\t\t\t\t\t\tparentNodes: nodeParentIds,\r\n\t\t\t\t\t\t\tlimit: limit\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tthis.socket = socket;\r\n\r\n\t\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t'cmd': 'tasks.stats',\r\n\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t'cmd': 'tasks.assigned',\r\n\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n","// Angular\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\n// Other\r\nimport { SujetHttpService }\t\t\tfrom './http/sujetHttp.service';\r\nimport { Sujet }\t\t\t\t\tfrom '../classes/sujet.class';\r\nimport { File as FileSubject }\t\tfrom '../classes/file.class';\r\nimport { Comment }\t\t\t\t\tfrom '../classes/comment.class';\r\nimport { SocketService }\t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\n\r\nimport { UserData } \t\tfrom '../providers/user-data';\r\nimport { WorkspaceData } \tfrom '../providers/workspace-data';\r\nimport { TaskData }\t\t\tfrom '../providers/task-data';\r\n\r\nimport { FileService } from '../services/file.service';\r\n\r\n\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable()\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport class SujetService\r\n{\r\n\t/**\r\n\t *\r\n\t */\r\n\tconstructor(private sujetHttpService:\tSujetHttpService,\r\n\t\t\t\tprivate socketService:\t\tSocketService,\r\n\t\t\t\tprivate workspaceData:\t\tWorkspaceData,\r\n\t\t\t\tprivate taskData:\t\t\tTaskData,\r\n\t\t\t\tprivate fileService:\t\tFileService,\r\n\t\t\t\tprivate userData:\t\t\tUserData)\r\n\t{\r\n\r\n\t}\r\n\r\n\r\n /**\r\n * Add new sujet in database from Sujet object given in parameter\r\n */\r\n\tpublic addSujet(sujet: Sujet, parentPath: any, datasMail: any = '', idc: any = '')\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'subject',\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsubject:\tsujet.toJson(),\r\n\t\t\t\t\t\tparentPath: parentPath,\r\n\t\t\t\t\t\tdatasMail:\tdatasMail\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n *\r\n */\r\n\tpublic editFlag(psId: string, psEtat: string, idMatiere: any)\r\n\t{\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'subject',\r\n\t\t\t\t\t'args': {\r\n\t\t\t\t\t\tsubject:\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tidsujet:\tpsId,\r\n\t\t\t\t\t\t\tidepreuve:\tidMatiere,\r\n\t\t\t\t\t\t\tdata:\t\t{ etat: psEtat }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n /**\r\n * Get all subjects in database relative to user account and parameters given:\r\n *\r\n * -idSujet: if this parameter is defined, return the Sujet object corresponding to the value id\r\n * -idEpreuve: if this parameter is defined (and if the parameter idSujet is not), return the Sujet\r\n * objects wich the epreuve parent matches the value id.\r\n *\r\n */\r\n\tpublic getSujets(idEpreuve: string = undefined, idSujet: string = '')\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'subjects',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tidMatiere: idEpreuve,\r\n\t\t\t\t\t\t\tidSubject: idSujet\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic getSubjectHistoric(idSubject: any)\r\n {\r\n this.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n let dataHistoric: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'history',\r\n\t\t\t\t\t'args': {\r\n\t\t\t\t\t\tbucket: 'subjects',\r\n\t\t\t\t\t\tkey: idSubject,\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', dataHistoric);\r\n\t\t\t}\r\n });\r\n }\r\n\r\n\r\n\t/**\r\n\t * Mise à jour coté serveur du sujet donné en paramètre\r\n\t * @param subject\r\n\t */\r\n\tpublic updateSubject(subject: Sujet)\r\n\t{\r\n\t\tconst jsonSubject: any = subject.toJson();\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'subject',\r\n\t\t\t\t\t'args': \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsubject: jsonSubject\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Vérification à partir des taches du sujet donné si l'utilisateur donné à le droit d'ajouter des fichiers\r\n\t * -Il peut ajouter des fichiers s'il est admin\r\n\t * -Il peut ajouter des fichiers si une des taches du sujet dans lesquelles il est affecté\r\n\t * contient le droit d'ajout de fichier\r\n\t */\r\n\tpublic getAuthCreateFileInSubject(idUser: any, subject: Sujet)\r\n\t{\r\n\t\tlet result = false;\r\n\r\n\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t{\r\n\t\t\tresult = true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (subject && subject.tasks)\r\n\t\t\t{\r\n\t\t\t\t// On recherche dans les taches du sujet, la premiere ayant la propriete canCreateFile a vrai\r\n\t\t\t\t// s'il n'y en a aucune alors l'utilisateur courant ne peut pas ajouter de fichier dans le sujet\r\n\t\t\t\tconst indexTaskWithUploadRight = _.find(subject.tasks, (task: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\treturn task.canCreateFile === true && task.state !== 'done' && task.state !== 'review' && task.assigneduser === idUser; \r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (indexTaskWithUploadRight !== undefined)\r\n\t\t\t\t{\r\n\t\t\t\t\tresult = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n /**\r\n\t * Add note to subject in database\r\n\t *\r\n\t * @param sujet: Sujet object in wich the note will be added\r\n\t * @param note: note wich will be added in database to given subject\r\n\t */\r\n\tpublic addNoteToSujet(sujet: Sujet, note: string)\r\n\t{\r\n\t\treturn this.sujetHttpService.addNoteToSujet(sujet, note);\r\n\t}\r\n\r\n\r\n\tpublic deleteSubject(sujet: Sujet)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'deleteSubject',\r\n\t\t\t\t\t'args': \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tidSubject: sujet.id,\r\n\t\t\t\t\t\tidEpreuve: sujet.idMatiere\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('delete', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Ecoute le channel socket d'un sujet donnée si on ne l'écoute pas déja.\r\n\t * @param task\r\n\t */\r\n\tpublic listenSubjectChannel(subject: Sujet)\r\n\t{\r\n\t\t// Construction du channel que l'on va écouter\r\n\t\tconst channel = '*soft::' + this.userData.account + '::creation::suj::' + subject.id;\r\n\t\t/**\r\n\t\t * On vérifie si on écoute pas déja sur le channe!\r\n\t\t * Si ce n'est pas le cas on ajoute une room pour écouter sur ce channel\r\n\t\t * en transmettant une fonction pour gérer les evènements\r\n\t\t */\r\n\t\tconst value = this.socketService.findRoomAGerer(channel);\r\n\r\n\t\tif (value < 0)\r\n\t\t{\r\n\t\t\tthis.socketService.roomsAGerer.push(\r\n\t\t\t\t{\r\n\t\t\t\t\tname:\t\tchannel,\r\n\t\t\t\t\tstate:\t\t'nosub',\r\n\t\t\t\t\twatch:\t\ttrue,\r\n\t\t\t\t\tfct:\t\tthis._handleSubjectEvent.bind(this),\r\n\t\t\t\t\tchannel:\tundefined\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate _handleSubjectEvent(datas: any)\r\n\t{\r\n\t\tif (datas.cmd === 'update')\r\n\t\t{\r\n\t\t\tif (datas.args.data)\r\n\t\t\t{\r\n\r\n\t\t\t\tthis.workspaceData._updateSubjectFromJSON([datas.args.data]);\r\n//\t\t\t\tthis.workspaceData._addSubjectFromJSON([datas.args.data]);\r\n\t\t\t\tthis.taskData.majSubjectName(datas.args.data.idsujet);\r\n\r\n\t\t\t\tif (datas.args.data.idsujet && datas.args.data.data)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst sujet = this.taskData.workspaceData.getSujet(datas.args.data.idsujet);\r\n\r\n\t\t\t\t\tfor (const key in datas.args.data.data)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (sujet.datas[key])\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tsujet.datas[key] = datas.args.data.data[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst sujet2 = this.taskData.workspaceData.getSujet(datas.args.data.idsujet);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (datas.cmd === 'updatefile')\r\n\t\t{\r\n\t\t\tif (datas.args.file)\r\n\t\t\t{\r\n\t\t\t\tconst fileToReplace: FileSubject = FileSubject.fromJsonObject(datas.args.file);\r\n\r\n\t\t\t\tif (datas.args.definitive === true)\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.workspaceData.selectedSujet)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.workspaceData.selectedSujet.pj = _.filter(this.workspaceData.selectedSujet.pj, (pj: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn pj.id !== fileToReplace.id;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.workspaceData.globalEmitter2.emit(fileToReplace.idSubject);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif (this.workspaceData.selectedSujet)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst index = _.findIndex(this.workspaceData.selectedSujet.pj, (pj: any) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn pj.id === fileToReplace.id;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t// On vérifie si les donnnées de fichier récupéré contiennent des thumbnails\r\n\t\t\t\t\t\tif (index !== -1)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileToReplace.encryptedAesKeys = this.workspaceData.selectedSujet.pj[index].encryptedAesKeys;\r\n\t\t\t\t\t\t\tfileToReplace.thumbs = this.workspaceData.selectedSujet.pj[index].thumbs;\r\n\r\n\t\t\t\t\t\t\tif (fileToReplace.tags)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (_.indexOf(fileToReplace.tags, 'corbeille') === -1)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfileToReplace.deleted = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfileToReplace.deleted = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.workspaceData.selectedSujet.pj[index] = fileToReplace;\r\n\t\t\t\t\t\t\tthis.workspaceData.globalEmitter2.emit(fileToReplace.idSubject);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'messages.set')\r\n\t\t{\r\n\t\t\tif (datas.args && datas.args.message)\r\n\t\t\t{\r\n\t\t\t\tconst messageAdded = this.workspaceData.parseHistoric(datas.args.message);\r\n\t\t\t\tthis.workspaceData.addHistoricToElement(datas.args.message.key, messageAdded);\r\n\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', datas.args.message.key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Onrécupère un évènement concernant un fichier\r\n\t\t */\r\n\t\tif (datas.cmd === 'file')\r\n\t\t{\r\n\t\t\tif (datas.args\r\n\t\t\t\t&& datas.args.action\r\n\t\t\t\t&& datas.args.subjectId\r\n\t\t\t\t&& (datas.args.action === 'update'\r\n\t\t\t\t|| datas.args.action === 'create'\r\n\t\t\t\t|| datas.args.action === 'delete'))\r\n\t\t\t{\r\n\t\t\t\tlet newHistoricItem: any = {};\r\n\t\t\t\tnewHistoricItem.idUser\t\t\t= datas.args.idUser;\r\n\t\t\t\tnewHistoricItem.creationDate\t= new Date(datas.args.creationDate);\r\n\r\n\t\t\t\tnewHistoricItem = this.workspaceData.parseHistoricItem(datas.args, newHistoricItem);\r\n\t\t\t\tif (newHistoricItem)\r\n\t\t\t\t{\r\n\t\t\t\t\t//On ajoute l'historique au sujet courant\r\n\t\t\t\t\tthis.workspaceData.addHistoricToElement(datas.args.subjectId, [newHistoricItem]);\r\n\t\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', datas.args.subjectId]);\r\n\r\n\t\t\t\t\tif (datas.args.idFile)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t//On ajoute l'historique au fichier courant\r\n\t\t\t\t\t\tthis.workspaceData.addHistoricToElement(datas.args.idFile, [newHistoricItem]);\r\n\t\t\t\t\t\tthis.workspaceData.globalEmitter.emit(['messages::get', datas.args.idFile]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'thumbnails')\r\n\t\t{\r\n\t\t\tif (datas && datas.args && datas.args.file)\r\n\t\t\t{\r\n\t\t\t\t// On recherche le fichier créé à mettre à jour suite à la génération d'un thumbnail\r\n\t\t\t\tconst fileAdded: FileSubject\t\t= FileSubject.fromJsonObject(datas.args.file);\r\n\t\t\t\tlet oldUuid: any;\r\n\r\n\t\t\t\tif (datas.args.file.oldUuid)\r\n\t\t\t\t{\r\n\t\t\t\t\toldUuid = datas.args.file.oldUuid;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.workspaceData.selectedSujet && this.workspaceData.selectedSujet.pj)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst fileToUpdate: FileSubject = _.find(this.workspaceData.selectedSujet.pj, (pj: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn pj.id === fileAdded.id || (oldUuid && oldUuid === pj.id);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// On vérifie si les donnnées de fichier récupéré contiennent des thumbnails\r\n\t\t\t\t\tif (fileToUpdate)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (datas.args.error === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileToUpdate.id \t\t= fileAdded.id;\r\n\t\t\t\t\t\t\tfileToUpdate.idSubject \t= fileAdded.idSubject;\r\n\t\t\t\t\t\t\tfileToUpdate.pathThumbs = fileAdded.pathThumbs;\r\n\t\t\t\t\t\t\tfileToUpdate.thumbs \t= [];\r\n\r\n\t\t\t\t\t\t\t// On télécharge le thumbnail à partir de son identifiant unique et on le stocke\r\n\t\t\t\t\t\t\tthis.fileService.downloadThumbnail(fileToUpdate).subscribe((res) =>\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (res && res.url)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfileToUpdate.errorThumb = false;\r\n\t\t\t\t\t\t\t\t\tfileToUpdate.thumbs.push(res);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tthis.workspaceData.globalEmitter2.emit(this.workspaceData.selectedSujet.id);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileToUpdate.errorThumb = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (datas.cmd === 'pdf')\r\n\t\t{\r\n\t\t\tif (datas && datas.args && datas.args.file)\r\n\t\t\t{\r\n\t\t\t\tconst fileAdded: FileSubject\t\t= FileSubject.fromJsonObject(datas.args.file);\r\n\r\n\t\t\t\tif (this.workspaceData.selectedSujet && this.workspaceData.selectedSujet.pj)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst fileToUpdate: FileSubject = _.find(this.workspaceData.selectedSujet.pj, (pj: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn pj.id === fileAdded.id;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// On met à jour la référence du pdf\r\n\t\t\t\t\tif (fileToUpdate)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (datas.args.error === undefined || datas.args.error === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileToUpdate.errorPdf \t= false;\r\n\t\t\t\t\t\t\tfileToUpdate.pathPdf \t= fileAdded.pathPdf;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfileToUpdate.errorPdf = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (datas.cmd === 'deleteSubject')\r\n\t\t{\r\n\t\t\tif (datas && datas.args && datas.args.idEpreuve && datas.args.idSubject && datas.args.tasksToRemove)\r\n\t\t\t{\r\n\t\t\t\tthis.workspaceData.selectedMatiere.sujets = _.filter(this.workspaceData.selectedMatiere.sujets, (sujet: any) => { return sujet.id !== datas.args.idSubject });\r\n\r\n\t\t\t\t// On supprime les taches concernées par le sujet\r\n\t\t\t\tconst tasksToRemove: any[] = datas.args.tasksToRemove;\r\n\r\n\t\t\t\tif (tasksToRemove.length > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.taskData.globalTaskDatas = this.taskData.globalTaskDatas.filter(task => \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let taskToRemove of tasksToRemove)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (taskToRemove !== task.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//return tasksToRemove.includes(task.id);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.taskData.taskDatas = this.taskData.taskDatas.filter(task => \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let taskToRemove of tasksToRemove)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (taskToRemove !== task.id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\treturn true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//return tasksToRemove.includes(task.id);\r\n\t\t\t\t\t});\r\n\r\n\r\n\r\n\r\n\r\n\t\t\t\t\tlet nIndiceMine = 0;\r\n\t\t\t\t\t\r\n\t\t\t\tfor (let taskMineIndice in this.workspaceData.taskHomeMine)\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (let taskToRemove of tasksToRemove)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (taskToRemove === this.workspaceData.taskHomeMine[taskMineIndice].id)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.workspaceData.removeTaskToMine(nIndiceMine);\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnIndiceMine++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\tthis.workspaceData.taskHomeMine = this.workspaceData.taskHomeMine.filter(task => \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfor (let taskToRemove of tasksToRemove)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (taskToRemove !== task.id)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t*/\r\n\t\t\t\t\t\tlet nIndiceExpired = 0;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tfor (let taskExpiredIndice in this.workspaceData.taskHomeAdminExpired)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfor (let taskToRemove of tasksToRemove)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (taskToRemove === this.workspaceData.taskHomeAdminExpired[taskExpiredIndice].id)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tthis.workspaceData.removeTaskExpired(nIndiceExpired);\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tnIndiceExpired++;\r\n\r\n\t\t\t\t\t}\r\n/*\r\n\r\n\t\t\t\t\tthis.workspaceData.taskHomeMine = taskExpired.filter(task => \r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tfor (let taskToRemove of tasksToRemove)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (taskToRemove !== task.id)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\treturn true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});*/\r\n\t\t\t\t}\r\n\t\t\t\tthis.userData.globalEmitter.emit(['subject::delete', datas.args.idSubject]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"," // Angular\r\nimport { Injectable } from '@angular/core';\r\nimport {Observable} from 'rxjs/Rx';\r\nimport 'rxjs/add/operator/share'\r\n\r\n\r\nimport { Task }\t\t\t\tfrom '../classes/task.class';\r\nimport { Sujet }\t\t\tfrom '../classes/sujet.class';\r\nimport { Comment }\t\t\tfrom '../classes/comment.class';\r\nimport { Etablissement }\tfrom '../classes/etablissement.class';\r\nimport { Session }\t\t\tfrom '../classes/session.class';\r\nimport { Examen }\t\t\tfrom '../classes/examen.class';\r\nimport { Matiere }\t\t\tfrom '../classes/matiere.class';\r\nimport { TaskHttpService }\tfrom './http/taskHttp.service';\r\n\r\nimport { SocketService }\t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData }\t\t\t\t\tfrom '../providers/user-data';\r\nimport { WorkspaceData }\t\t\tfrom '../providers/workspace-data';\r\n\r\nimport { EncryptService } from '../services/encrypt.service';\r\nimport { FileService } \tfrom '../services/file.service';\r\n\r\n\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable()\r\n/**\r\n *\r\n */\r\nexport class TaskService\r\n{\r\n\r\n /**\r\n\t *\r\n\t */\r\n\tconstructor(private taskHttpService:\tTaskHttpService,\r\n\t\t\t\tpublic\tsocketService:\t\tSocketService,\r\n\t\t\t\tprivate userData:\t\t\tUserData,\r\n\t\t\t\tprivate workspaceData:\t\tWorkspaceData,\r\n\t\t\t\tprivate encryptService:\t\tEncryptService,\r\n\t\t\t\tprivate fileService:\t\tFileService)\r\n\t{\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Get tasks available considering the ressources for current user\r\n\t */\r\n\tpublic getTasksAvailable()\r\n\t{\r\n\t\tthis.socketService.on('read', this._onRessourcesReturned.bind(this));\r\n\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'ressources',\r\n\t\t\t\t\t'args': {}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic addTask(task: Task, sendMail: boolean = false, datasMail: any = null, pbMajSelected = 'false')\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'task',\r\n\t\t\t\t\tidc:\tString(pbMajSelected),\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttask:\t\ttask.toJson(),\r\n\t\t\t\t\t\tdatasMail: datasMail\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic deleteTask(task: Task)\r\n\t{\r\n\t\treturn this.taskHttpService.deleteTask(task).share();\r\n\t}\r\n\r\n\r\n\tpublic updateTask(task: Task, newDatas: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'task',\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttask: task.toJson(),\r\n\t\t\t\t\t\tdatasTask: newDatas\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (newDatas.assigneduser)\r\n\t\t{\r\n\t\t\ttask.assigneduser = newDatas.assigneduser;\r\n\t\t}\r\n\r\n\t\tif (newDatas.state && newDatas.oldState && task.assigneduser)\r\n\t\t{\r\n\t\t\tconst currentSubject = this.workspaceData.getSujet(task.idSujet);\r\n\t\t\tthis.fileService.getFiles(currentSubject.id);\r\n\r\n\t\t\tconst userDataEmmiterSubscription = this.userData.globalEmitter.subscribe((value: string) =>\r\n\t\t\t{\r\n\t\t\t\tif (value === 'files::get')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis._updateFilesAccessFromNewState(newDatas.state, newDatas.oldState, task, currentSubject);\r\n\t\t\t\t\tuserDataEmmiterSubscription.unsubscribe();\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate _updateFilesAccessFromNewState(newState: string, oldState: string, task: Task, currentSubject: Sujet)\r\n\t{\r\n\t\tif (newState && task)\r\n\t\t{\r\n\t\t\tif (currentSubject)\r\n\t\t\t{\r\n\t\t\t\t//L'état est mis à jour\r\n\t\t\t\t//si le nouvel état est review on supprime les accès aux fichiers\r\n\t\t\t\t//concernés\r\n\t\t\t\tif (newState === 'done' || newState === 'new')\r\n\t\t\t\t{\r\n\t\t\t\t\tfor (const file of currentSubject.pj)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.encryptService.deleteAesKey(task.assigneduser, file.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t//sinon si l'ancien état est review on réatribue les droits\r\n\t\t\t\t\tif ((oldState === 'done' || oldState === 'new') && (newState === 'todo' || newState === 'inprogress'))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (task.noAccessFile === false)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (task.typeFileAccess === 'all')\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet listFile = _.map(currentSubject.pj, (pj: any) => { return pj.id });\r\n\t\t\t\t\t\t\t\tthis.encryptService.encryptFilesForUSer(listFile, task.assigneduser, currentSubject);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tif (task.fileToAccess && task.fileToAccess.length > 0)\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tthis.encryptService.encryptFilesForUSer(task.fileToAccess, task.assigneduser, currentSubject);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic addTaskComment(task: Task, newComment: Comment)\r\n\t{\r\n\t\treturn this.taskHttpService.addTaskComment(task, newComment).share();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Fonction appelée automatiquement à la récupération de ressources\r\n\t */\r\n\tprivate _onRessourcesReturned(datas: any)\r\n\t{\r\n\t\tif (datas.cmd && datas.cmd === 'ressources')\r\n\t\t{\r\n\t\t\tif (this.userData.isAdmin() === true || this.userData.isSuperviseur() === true)\r\n\t\t\t{\r\n\t\t\t\tif (datas.args && datas.args.data && datas.args.data.ressources)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet parentNodes = _.keys(datas.args.data.ressources);\r\n\t\t\t\t\tthis.userData.setRessources(parentNodes);\r\n\r\n\t\t\t\t\tfor (let parentNode of parentNodes)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tif (socket)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t\t\t'cmd': 'tasks.bynode',\r\n\t\t\t\t\t\t\t\t\t'args': {\r\n\t\t\t\t\t\t\t\t\t\tparentNode: parentNode\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tif (socket)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t\t'cmd': 'tasks.assigned',\r\n\t\t\t\t\t\t\t'args': {}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsocket.emit('read', data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable }\t\tfrom '@angular/core';\r\nimport { UserHttpService }\tfrom './http/userHttp.service';\r\n\r\nimport { SocketService }\t\t\tfrom './socket.service';\r\nimport { ISocketData, SocketWhat }\tfrom '../models/message.model';\r\nimport { UserData }\t\t\t\t\tfrom '../providers/user-data';\r\n\r\nimport {Observable} from 'rxjs/Rx';\r\n\r\ndeclare var Fingerprint2: any;\r\n\r\n@Injectable()\r\n\r\n\r\nexport class UserService\r\n{\r\n constructor(private userHttpService:\tUserHttpService,\r\n\t\t\t\tpublic\tsocketService:\t\tSocketService,\r\n\t\t\t\tprivate userData:\t\t\tUserData)\r\n {\r\n\r\n }\r\n\r\n\r\n /**\r\n * Get all users informations and their rights.\r\n */\r\n\tpublic getAllUsers(): Observable\r\n\t{\r\n\r\n\t\t// ---------------------------------------\r\n\t\t// ToComment\r\n\t\t// ---------------------------------------\r\n\t\tlet observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.userHttpService.getAllUsers().subscribe(res =>\r\n\t\t\t{\r\n\t\t\t\tobserver.next(res);\r\n\t\t\t});\r\n\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\tpublic createNewUser(userJson: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'user',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'user': { userJson },\r\n\t\t\t\t\t\t\t'token': this.userData.getTokenKey()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic deleteUser(userMail: string)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket:any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'user',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'userMail': userMail,\r\n\t\t\t\t\t\t\t'token': this.userData.getTokenKey()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('delete', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Génération du code OTP permettant la génération d'un QR code pour la double authentification\r\n\t * @param mailUser\r\n\t */\r\n\tpublic createUserOTPCode(mailUser: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'createOTP',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'mail': mailUser,\r\n\t\t\t\t\t\t\t'token': this.userData.getTokenKey()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Validation d'un code généré périodiquement à partir de l'appli smartphone\r\n\t * Permet de finaliser le passage d'un compte en double authentification\r\n\t * @param mailUser\r\n\t * @param otpValidationCode\r\n\t */\r\n\tvalidateUserOTPCode(mailUser: any, otpValidationCode: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'validateOtp',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'mail':\t\tmailUser,\r\n\t\t\t\t\t\t\t'otpCode': \totpValidationCode,\r\n\t\t\t\t\t\t\t'token': \tthis.userData.getTokenKey()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Mise a jour de la methode d'authentification\r\n\t */\r\n\tchangeOtpMethod(mailUser: any, otpMethod: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'changeOtpMethod',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'mail': \t\tmailUser,\r\n\t\t\t\t\t\t\t'otpMethod': \totpMethod,\r\n\t\t\t\t\t\t\t'token': \t\tthis.userData.getTokenKey()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Vérification à la connection d'un code OTP généré périodiquement au saisie par l'utilisateur\r\n\t * à la connexion\r\n\t * @param mailUser\r\n\t * @param otpValidationCode\r\n\t */\r\n\tcheckUserOTPCode(otpValidationCode: any, callback: (err: any, data: any) => any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet credentials = \r\n\t\t\t\t{\r\n\t\t\t\t\totpCode: \totpValidationCode,\r\n\t\t\t\t\ttoken: \t\tthis.userData.getTokenKey()\r\n\t\t\t\t};\r\n\r\n\t\t\t\tsocket.emit('login2nd', credentials, (err: any, datas: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tcallback(err, datas);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @param code\r\n\t * @param fingerPrint\r\n\t * @param callback\r\n\t */\r\n\tcheckMachineCode(code: any, fingerPrint: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'checkCodeNewMachine',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'code': \t\tcode,\r\n\t\t\t\t\t\t\t'fingerprint': \tfingerPrint,\r\n\t\t\t\t\t\t\t'token': \t\tthis.userData.getTokenKey()\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n /**\r\n * update informations and right for a set of users\r\n */\r\n\tpublic updateUser(userId: any, dataUser: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'user',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'idUser': \t\t\tuserId,\r\n\t\t\t\t\t\t\t'datasToUpdate': \tdataUser,\r\n\t\t\t\t\t\t\t'token': \t\t\tthis.userData.getTokenKey()\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Get infos from current user logged\r\n\t */\r\n\tpublic getCurrentUser(): Observable\r\n\t{\r\n\t\tconst observable = Observable.create((observer: any) =>\r\n\t\t{\r\n\t\t\tthis.userHttpService.getCurrentUser().subscribe(res =>\r\n\t\t\t{\r\n\t\t\t\tobserver.next(res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn observable;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Génère coté serveur un password aléatoire dont la longueur est donnée en paramètre\r\n\t * @param passwordLength\r\n\t */\r\n\tpublic generateNewPassword(passwordLength: number)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'password',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'lengthPassword': passwordLength\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('create', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic updateUserPassword(jsonUser: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket: any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'updateUserPassword',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'datasuser': \tjsonUser,\r\n\t\t\t\t\t\t\t'token': \t\tthis.userData.getTokenKey()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/** */\r\n\tpublic checkFingerPrintUser()\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket:any) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\r\n\t\t\t\tlet options:any = \r\n\t\t\t\t{\r\n\t\t\t\t\tuserDefinedFonts:\t\t\t\t\t[],\r\n\t\t\t\t\texcludeUserAgent:\t\t\t\t\tfalse,\r\n\t\t\t\t\texcludeLanguage:\t\t\t\t\tfalse,\r\n\t\t\t\t\texcludeColorDepth:\t\t\t\t\tfalse,\r\n\t\t\t\t\texcludeScreenResolution:\t\t\ttrue,\r\n\t\t\t\t\texcludeAvailableScreenResolution:\tfalse,\r\n\t\t\t\t\texcludeTimezoneOffset:\t\t\t\tfalse,\r\n\t\t\t\t\texcludeSessionStorage:\t\t\t\tfalse,\r\n\t\t\t\t\texcludeIndexedDB:\t\t\t\t\tfalse,\r\n\t\t\t\t\texcludeAddBehavior:\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludeOpenDatabase:\t\t\t\tfalse,\r\n\t\t\t\t\texcludeCpuClass:\t\t\t\t\tfalse,\r\n\t\t\t\t\texcludePlatform:\t\t\t\t\tfalse,\r\n\t\t\t\t\texcludeDoNotTrack:\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludeCanvas:\t\t\t\t\t\tfalse,\r\n\t\t\t\t\texcludeWebGL:\t\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludeAdBlock:\t\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludeHasLiedLanguages:\t\t\tfalse,\r\n\t\t\t\t\texcludeHasLiedResolution:\t\t\tfalse,\r\n\t\t\t\t\texcludeHasLiedOs:\t\t\t\t\tfalse,\r\n\t\t\t\t\texcludeHasLiedBrowser:\t\t\t\tfalse,\r\n\t\t\t\t\texcludeJsFonts:\t\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludeFlashFonts:\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludePlugins:\t\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludeIEPlugins:\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludeTouchSupport:\t\t\t\tfalse,\r\n\t\t\t\t\texcludePixelRatio:\t\t\t\t\ttrue,\r\n\t\t\t\t\texcludeHardwareConcurrency:\t\t\tfalse,\r\n\t\t\t\t\texcludeWebGLVendorAndRenderer:\t\tfalse,\r\n\t\t\t\t\texcludeDeviceMemory:\t\t\t\tfalse\r\n\t\t\t\t};\r\n\t\t\t\tnew Fingerprint2(options).get((result: any, components: any) =>\r\n\t\t\t\t{\r\n\t\t\t\t\tlet fResult = result;\r\n\t\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam':\t'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd':\t'checkUserFingerprint',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'fingerprint': \tfResult,\r\n\t\t\t\t\t\t\t'token': \t\tthis.userData.getTokenKey()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tsocket.emit('create', data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Demande au serveur la regeneration d'ue code machine à 4 chiffres et l'envoie par mail\r\n\t */\r\n\tpublic regenerateCodeMachine()\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tconst data: ISocketData =\r\n\t\t\t{\r\n\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t'cmd': 'generateNewCodeMachine',\r\n\t\t\t\t'args': {}\r\n\t\t\t};\r\n\t\t\tsocket.emit('create', data);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Décode coté serveur avec la clé RSA publique la signature donnée qui est encodée avec\r\n\t * la clé RSA privée, renvoie la confirmation de la signature\r\n\t * @param encryptedSignature\r\n\t */\r\n\tpublic encryptDatasForValidation(datas: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'encryptDatasForValidation',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'data': datas\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic toggleEnabledUser(mailUser: string, enable: boolean)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tlet data: ISocketData =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t\t'cmd': 'userAccess',\r\n\t\t\t\t\t\t'args':\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'idUser': mailUser,\r\n\t\t\t\t\t\t\t'enable': enable\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\tsocket.emit('update', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic resetRsaKeyUSer(mailUser: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'deleteRsaKeyUser',\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'idUser': mailUser\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('delete', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic getAesKeysFromUser(mailUser: any)\r\n\t{\r\n\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t{\r\n\t\t\tif (socket)\r\n\t\t\t{\r\n\t\t\t\tconst data: ISocketData =\r\n\t\t\t\t{\r\n\t\t\t\t\t'iam': 'c-c',\r\n\t\t\t\t\t'name': this.userData.getUserId(),\r\n\t\t\t\t\t'what': SocketWhat.info,\r\n\t\t\t\t\t'cmd': 'getAesKeysFromUser',\r\n\t\t\t\t\t'args':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'idUser': mailUser\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tsocket.emit('read', data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic sendPasswordReset(emailUser: any): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst credentials =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\temailUser: emailUser\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('sendPasswordReset', credentials, (err: any, datas: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (err)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treject();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic checkCodePasswordReset(codeReset: any): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst credentials = \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcodeReset: codeReset\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('checkCodePasswordReset', credentials, (err: any, datas: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (err)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve(datas);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic updatePasswordUserWithCode(compteUser: any, mailUser: any, codeReset: any, newPassword: any): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst credentials = \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcompteUser: \tcompteUser,\r\n\t\t\t\t\t\tmailUser: \t\tmailUser,\r\n\t\t\t\t\t\tcodeReset: \t\tcodeReset,\r\n\t\t\t\t\t\tnewPassword: \tnewPassword\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('updatePasswordUserWithCode', credentials, (err: any, datas: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (err)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve(datas);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tpublic initKeyspaceAndUser(compteUser: any, mailUser: any, token: any): Promise\r\n\t{\r\n\t\treturn new Promise((resolve, reject) =>\r\n\t\t{\r\n\t\t\tthis.socketService.getSocketConnection().subscribe((socket) =>\r\n\t\t\t{\r\n\t\t\t\tif (socket)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst credentials = \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcompteUser: compteUser,\r\n\t\t\t\t\t\tmailUser: \tmailUser,\r\n\t\t\t\t\t\ttoken: \t\ttoken\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsocket.emit('initKeyspaceAndUser', credentials, (err: any, datas: any) =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (datas.user)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst accountInfos \t\t= this.userData.getAccountInfo();\r\n\t\t\t\t\t\t\taccountInfos.infosUser \t= datas.user;\r\n\t\t\t\t\t\t\tthis.userData.setAccountInfo(accountInfos);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (err)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tresolve(datas);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\treject();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { AppModule } from './app/app.module';\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */"],"sourceRoot":""}