· 9 years ago · Jun 07, 2017, 09:20 AM
1/*******************************************************/
2/*********** Structure du document **************/
3/*
4
5#region Fonctions de la variable Ajax
6 - parseEvents : gestion du json récupéré pour le parser sur la listview
7 - parseGuests : gestion du json récupéré pour le parser sur la listview
8 - parsePrestations : gestion du json récupéré pour le parser sur la listview
9 - getEventsList : récupère la liste des évènements (ajax)
10 - getGuestslist : récupère la liste des invités (ajax)
11 - blockui : overlay avec le message chargement
12 - blockuiNoMsg : overlay sans message
13
14#region ONSEN UI
15
16#region backbutton
17 - Fonctions permettant de gérer les clicks du bouton back sur ANDROID
18
19#region Fonctions utilitaires
20 - checkTokenValidity
21 - offlineMode
22 - openBarcodeScan
23
24#region MainPage
25
26#region loginPage
27
28#region eventsPage
29
30#region prestationsPage
31
32#region guestsPage
33 #subregion GUEST LIST OPTION PANEL
34 - Qr Code
35 - #search
36 - #importBase
37 #subregion infoGuestPage
38
39#region LOCAL
40 - Gestions des pages du mode hors ligne:
41 #subregion prestationsPageLocal
42 #subregion guestsPageLocal
43 #subregion Export
44 - Fonctions permettant l'export des données vers les APIs
45 #subregion Check presence
46 - Validation de la présence d'un invité hors ligne
47 #subregion infoGuestPageLocal
48 #subregion LOCAL GUEST LIST OPTION PANEL
49
50
51#region Lazy Loading
52 - Chargement des listes d'invités en mode lazy loading pour éviter la surchage des listviews
53
54#region Swipe
55 - Fonctions permettant de gérer la navigation du swipe right de l'écran
56
57 /*******************************************************/
58
59var app = {
60 // Application Constructor
61 initialize: function() {
62 this.bindEvents();
63 },
64 // Bind Event Listeners
65 //
66 // Bind any events that are required on startup. Common events are:
67 // 'load', 'deviceready', 'offline', and 'online'.
68 bindEvents: function() {
69 document.addEventListener('deviceready', this.onDeviceReady, false);
70 },
71 // deviceready Event Handler
72 //
73 // The scope of 'this' is the event. In order to call the 'receivedEvent'
74 // function, we must explicitly call 'app.receivedEvent(...);'
75 onDeviceReady: function() {
76 app.receivedEvent('deviceready');
77 },
78 // Update DOM on a Received Event
79 receivedEvent: function(id) {
80 var parentElement = document.getElementById(id);
81 if(parentElement != null){
82 var listeningElement = parentElement.querySelector('.listening');
83 var receivedElement = parentElement.querySelector('.received');
84
85 listeningElement.setAttribute('style', 'display:none;');
86 receivedElement.setAttribute('style', 'display:block;');
87 }
88
89 }
90};
91
92 //var url = 'http://recette.agoraevent.fr/api/';
93 //var url = 'http://localhost:60814/api/';
94 //var url = 'http://bnp.apiagora.com/api/';
95 var url = 'http://recette.apiagora.com/api/';
96
97 var requestConnection = false;
98
99 // Variables locales
100 var guestsList = {
101 id : null,
102 eventId: null,
103 prestationId: null,
104 prestationName: null,
105 prestation: false,
106 list : null,
107 listSearch: null,
108 row : null,
109 nbRecord: 0,
110 startRecord : 0,
111 eventName : null,
112 nbParticipants: 0,
113 nbPresents: 0,
114 tablette: false,
115 dialog : 0,
116 // 0 = aucune, 1 = search, 2 = searchLocal, 3 = authLocal, 4 = optionPanelPresta, 5 = optionPanel, 6 = searchFilter
117 // 7 = optionPanelPrestaLocal, 8 = optionPanelLocal, 9 = Scan, 10 = ScanLocal
118 qrCode : 0,
119 statusPar : ["Inconnu", "Potentiel", "Pr\351vu", "Pr\351sent", "Factur\351", "Pay\351", "Non Inscrit", "Groupe", "Absent"],
120 }
121
122 var ApiToken = null;
123 var rememberMe = "false";
124
125 $( document ).ready(function() {
126 /*
127 var deviceType = (navigator.userAgent.match(/iPad/i)) == "iPad" ? "iPad" : (navigator.userAgent.match(/iPhone/i)) == "iPhone" ? "iPhone" : (navigator.userAgent.match(/Android/i)) == "Android" ? "Android" : (navigator.userAgent.match(/BlackBerry/i)) == "BlackBerry" ? "BlackBerry" : "null";
128 if(deviceType == "iPad" || deviceType == "iPhone"){
129 document.body.style.webkitTransform = 'translate3d(0, 20px, 0)';
130 }*/
131
132 if($(window).width() > 700){
133 document.getElementsByClassName("guestsPageView")[1].parentNode.removeChild(document.getElementsByClassName("guestsPageView")[1]);
134 document.getElementsByClassName("guestsPageView")[1].parentNode.removeChild(document.getElementsByClassName("guestsPageView")[1]);
135
136 document.getElementsByClassName("guestsPageViewLocal")[1].parentNode.removeChild(document.getElementsByClassName("guestsPageViewLocal")[1]);
137 document.getElementsByClassName("guestsPageViewLocal")[1].parentNode.removeChild(document.getElementsByClassName("guestsPageViewLocal")[1]);
138 guestsList.tablette = true;
139 }else{
140 document.getElementsByClassName("guestsPageView")[0].parentNode.removeChild(document.getElementsByClassName("guestsPageView")[0]);
141 document.getElementsByClassName("guestsPageViewLocal")[0].parentNode.removeChild(document.getElementsByClassName("guestsPageViewLocal")[0]);
142 }
143
144 // Gestion des différentes bases de données
145 var currentDatabase = window.localStorage.getItem("database");
146 if(currentDatabase == null)
147 currentDatabase = "#000";
148
149 document.getElementById("database").value = currentDatabase;
150
151 switch(currentDatabase) {
152 case "#000":
153 url = "http://recette.apiagora.com/api/";
154 break;
155 case "#001":
156 url = "http://bnp.apiagora.com/api/";
157 break;
158 case "#002":
159 url = "https://agora.orange.com/api/";
160 break;
161 case "#999":
162 url = "http://localhost:60814/api/";
163 break;
164 default:
165 url = "http://recette.apiagora.com/api/";
166 }
167 });
168
169 // Centrage de l'overlay block ui
170 $.fn.center = function () {
171 this.css("position","absolute");
172 this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
173 this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
174 return this;
175 }
176
177 // REGEX pour récupérer les paramètres url
178 // Exemple http://recette.agoraevent.fr/api?id=2
179 // getParameterByName(url, id) return 2
180 function getParameterByName(url, name) {
181 name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
182 var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
183 results = regex.exec(url);
184 return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
185 }
186
187 //Callback for notification plugin alert
188 function alertDismissed() {
189 // do something
190 }
191
192 //CallBack Confirm
193 function onConfirmQuitApp(buttonIndex) {
194 if(buttonIndex == 2){
195 navigator.app.exitApp();
196 }
197 }
198
199 /*************************/
200 /* #region ONSEN UI */
201 /*************************/
202 var dialogLoginExport;
203 var dialogSearch;
204
205 var module = angular.module('app', ['onsen']);
206
207 module.controller('AppController', function($scope) {
208 ons.createDialog('loginExport.html').then(function(dialog) {
209 dialogLoginExport = dialog;
210 });
211
212 ons.createDialog('search.html').then(function(dialog) {
213 dialogSearch = dialog;
214 });
215 });
216
217 /**********************************************/
218 /***** #region Fonctions de la variable Ajax */
219 /*********************************************/
220 // Appels ajax + utilitaires
221 var ajax = {
222 parseEvents:function(result){
223 $('#eventsList').empty();
224 var monthsInYear= new Array("janvier", "f\351vrier", "mars", "avril", "mai", "juin", "juillet", "ao\373t", "septembre", "octobre", "novembre", "d\351cembre");
225 $.each(result, function(i, row) {
226 var date = new Date(row.StartDate);
227 var endDate = new Date(row.EndDate);
228 var today = new Date();
229 if(endDate < today){
230 $('#eventsList').append('<li><a href="" data-id="' + row.ID + '"><i class="fa fa-calendar-o fa-3x calendarIcon"></i><h3>' + row.Title + '</h3><p>' + date.getDate() + " " + monthsInYear[date.getMonth()] + " " + date.getFullYear() + '</p></a></li>');
231 }else{
232 $('#eventsList').append('<li><a href="" data-id="' + row.ID + '"><i class="fa fa-calendar fa-3x calendarIcon"></i><h3>' + row.Title + '</h3><p>' + date.getDate() + " " + monthsInYear[date.getMonth()] + " " + date.getFullYear() + '</p></a></li>');
233 }
234 });
235 $('#eventsList').listview('refresh');
236 },
237 parseGuests:function(result){
238 $('#guestsList').empty();
239 if(guestsList.prestations){
240 $.each(result, function(i, row) {
241 $('#guestsList').append('<li><a href="" data-id="' +
242 row.ID + '"><h3><i class="fa fa-user fa-2x"></i>' + row.LastName + '<p>' + row.FirstName + '</p></h3></a></li>');
243 });
244 }else{
245 $.each(result, function(i, row) {
246 $('#guestsList').append('<li><a href="" data-id="' +
247 row.ID + '"><h3><i class="fa fa-user fa-2x"></i>' + row.LastName + '<p>' + row.FirstName + '</p></h3></a></li>');
248 });
249 }
250 },
251 parsePrestations:function(result){
252 $('#prestationsList').empty();
253
254 fullURLCount = 'methods/MobileApp/CountParticipants?id=' + guestsList.eventId;
255 $.ajax({
256 type: 'GET',
257 url: url + fullURLCount,
258 crossDomain: true,
259 headers: {'AgoraEvent-Token': ApiToken},
260 success: function (resultCount) {
261 var text0 = ' invit\351';
262 if(resultCount[0] > 0){
263 text0 = ' invit\351s';
264 }
265
266 var text1 = ' pr\351sent';
267 if(resultCount[1] > 0){
268 text1 = ' pr\351sents';
269 }
270
271 $('#prestationsList').append('<li><a href="" data-id="0" style="color: green;"><i class="fa fa-home fa-3x homePrestation"></i><h3>Accueil Principal</h3><p>' + resultCount[0] + text0 +'</p><span class="statusListView">' + resultCount[1] + '/' + resultCount[0] + ' ' + text1 + '</span></a></li>');
272
273 $.each(result, function(i, row) {
274
275 var nb_inscrits = row.PLACE_DISPO - row.PLACE_RESTANTE;
276 var text1 = ' inscrit sur ';
277 var text2 = ' place disponible';
278 if(isNaN(nb_inscrits)){
279 text1 = "";
280 text2 = "";
281 nb_inscrits = "";
282 row.PLACE_DISPO = "";
283 }else{
284 if(nb_inscrits > 0){
285 text1 = ' inscrits sur ';
286 }
287 if(row.PLACE_DISPO > 0){
288 text2 = ' places disponibles';
289 }
290 }
291
292 var text3 = ' pr\351sent';
293 if(row.NB_PRESENT > 0){
294 text3 = ' pr\351sents';
295 }
296 $('#prestationsList').append('<li><a href="" data-id="' + row.ID + '"><i class="fa fa-ticket fa-3x"></i><h3>' + row.LIBELLE + '</h3><p>' + nb_inscrits + text1 + row.PLACE_DISPO + text2 + '</p><span class="statusListView">' + row.NB_PRESENT + '/' + nb_inscrits + ' ' + text3 + '</span></a></li>');
297 });
298 $('#prestationsList').listview('refresh');
299 $.unblockUI();
300 },
301 error: function (request,error) {
302 $.unblockUI();
303 }
304 });
305 },
306 getEventsList: function(){
307 $.ajax({
308 type: 'GET',
309 url: url + 'methods/MobileApp/GetEventsList',
310 crossDomain: true,
311 headers: {'AgoraEvent-Token': ApiToken},
312 async: false,
313 success: function (result) {
314 ajax.parseEvents(result);
315 $.unblockUI();
316 },
317 error: function (request, error) {
318 $.unblockUI();
319 if(request.status == 401){
320 // Unauthorized
321 navigator.notification.alert(
322 "Votre session a expir\351, veuillez-vous identifier \340 nouveau", // message
323 alertDismissed, // callback
324 "Notification", // title
325 "Ok" // buttonName
326 );
327
328 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
329 }
330
331 navigator.notification.alert(
332 "Erreur lors de la r\351cup\351ration des \351v\350nements",
333 alertDismissed,
334 "Notification",
335 "Ok"
336 );
337 }
338 });
339 },
340 getGuestslist: function(prestation){
341 guestsList.startRecord = 0;
342 var fullURLGet = "";
343 var fullURLCount = "";
344 if(prestation){
345 document.getElementById("guestsPageTitle").innerHTML = guestsList.prestationName;
346 fullURLGet = 'methods/MobileApp/GetParticipants?id=' + guestsList.prestationId + '&idManif=' + guestsList.eventId + '&Prestation=true&StartRecord=' + guestsList.startRecord + '&RecordsCount=100';
347 fullURLCount = 'methods/MobileApp/CountParticipants?id=' + guestsList.prestationId + '&idManif=' + guestsList.eventId + '&Prestation=true';
348 }else{
349 document.getElementById("guestsPageTitle").innerHTML = guestsList.eventName;
350 fullURLGet = 'methods/MobileApp/GetParticipants?id=' + guestsList.eventId + '&StartRecord=' + guestsList.startRecord + '&RecordsCount=100';
351 fullURLCount = 'methods/MobileApp/CountParticipants?id=' + guestsList.eventId;
352 }
353
354 ajax.blockui();
355
356 $.ajax({
357 type: 'GET',
358 url: url + fullURLGet,
359 crossDomain: true,
360 headers: {'AgoraEvent-Token': ApiToken},
361 success: function (result) {
362 guestsList.list = result;
363 ajax.parseGuests(result);
364 guestsList.startRecord += 100;
365 //COUNT NB PARTICIPANTS
366 $.ajax({
367 type: 'GET',
368 url: url + fullURLCount,
369 crossDomain: true,
370 headers: {'AgoraEvent-Token': ApiToken},
371 success: function (result) {
372 guestsList.nbParticipants = result[0];
373 guestsList.nbPresents = result[1];
374 var text0 = ' r\351sultat';
375 if(result[0] > 0){
376 text0 = ' r\351sultats';
377 }
378 document.getElementById("guestsPageNbResults").innerHTML = result[0] + text0;
379
380 var text1 = ' pr\351sent';
381 if(result[1] > 0){
382 text1 = ' pr\351sents';
383 }
384 document.getElementById("guestsPageNbPresents").innerHTML = result[1] + text1;
385
386 $.mobile.changePage( "#guestsPage", { transition: "slide", changeHash: false });
387 $('#guestsList').listview('refresh');
388 $.unblockUI();
389 },
390 error: function (request,error) {
391 $.unblockUI();
392 navigator.notification.alert(
393 "Erreur lors de la r\351cup\351ration du nombre de r\351sultats",
394 alertDismissed,
395 "Notification",
396 "Ok"
397 );
398 }
399 });
400 },
401 error: function (request,error) {
402 $.unblockUI();
403 if(request.status == 401){
404 // Unauthorized
405 navigator.notification.alert(
406 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
407 alertDismissed,
408 "Notification",
409 "Ok"
410 );
411
412 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
413 }
414
415 navigator.notification.alert(
416 "Erreur lors de la r\351cup\351ration des invit\351s",
417 alertDismissed,
418 "Notification",
419 "Ok"
420 );
421 }
422 });
423 },
424 blockui: function(){
425 $.blockUI({ css: {
426 width: '250px',
427 centerX: true,
428 centerY: true,
429 allowBodyStretch: true,
430 border: 'none',
431 backgroundColor: '#000',
432 '-webkit-border-radius': '10px',
433 '-moz-border-radius': '10px',
434 opacity: .5,
435 color: '#fff'
436 },
437 message: '<h2>Chargement...</h2>'
438 });
439
440 $('.blockUI.blockMsg').center();
441 },
442 blockuiNoMsg: function(){
443 $.blockUI({ css: {
444 width: '250px',
445 centerX: true,
446 centerY: true,
447 allowBodyStretch: true,
448 border: 'none',
449 backgroundColor: '#000',
450 '-webkit-border-radius': '10px',
451 '-moz-border-radius': '10px',
452 opacity: .5,
453 color: '#fff'
454 },
455 message: ''
456 });
457 },
458 blockuiCustomMsg: function(text){
459 $.blockUI({ css: {
460 width: '250px',
461 centerX: true,
462 centerY: true,
463 allowBodyStretch: true,
464 border: 'none',
465 backgroundColor: '#000',
466 '-webkit-border-radius': '10px',
467 '-moz-border-radius': '10px',
468 opacity: .5,
469 color: '#fff'
470 },
471 message: '<div style="padding: 10px;"><p id="blockUiMessage">' + text + '</p></div>'
472 });
473 $('.blockUI.blockMsg').center();
474 }
475 }
476
477 /*************************/
478 /* #region backbutton */
479 /*************************/
480 /*********** Gestion des clicks sur le bouton back ANDROID **************/
481 document.addEventListener("backbutton", function(e){
482 e.preventDefault();
483
484 if(guestsList.qrCode == 1){
485 // DONT CLOSE
486 }
487 else if(guestsList.dialog > 0 && !($.mobile.activePage.is('#scanPage'))){
488 // 0 = aucune, 1 = search, 2 = searchLocal, 3 = authLocal, 4 = optionPanelPresta, 5 = optionPanel, 6 = searchFilter
489 // 7 = optionPanelPrestaLocal, 8 = optionPanelLocal
490 if(guestsList.dialog == 1 || guestsList.dialog == 2){
491 setTimeout(function(){ dialogSearch.hide(); }, 50);
492 }
493 else if(guestsList.dialog == 3){
494 setTimeout(function(){ dialogLoginExport.hide(); }, 50);
495 }
496 else if(guestsList.dialog == 4){
497 $("#moreOptionOverlayDivPrestationPage").click();
498 }
499 else if(guestsList.dialog == 5){
500 $("#moreOptionOverlayDivGuestsPageLocal").click();
501 }
502 else if(guestsList.dialog == 6){
503 $('#guestsPageSearchFilter').fadeOut("slow");
504 }
505 else if(guestsList.dialog == 7){
506 $('#moreOptionOverlayDivPrestationPageLocal').fadeOut("slow");
507 }
508 else if(guestsList.dialog == 8){
509 $('#moreOptionOverlayDivGuestsPageLocal').fadeOut("slow");
510 }
511 guestsList.dialog = 0;
512 }
513 else if($.mobile.activePage.is('#mainPage')){
514 navigator.notification.confirm(
515 "Etes-vous s\373r de vouloir quitter l'application?", // message
516 onConfirmQuitApp, // callback to invoke with index of button pressed
517 "Notification", // title
518 ['Annuler','Oui'] // buttonLabels
519 );
520 }
521 else if($.mobile.activePage.is('#eventsPage')){
522 importedBase = window.localStorage.getItem("importedBase");
523 if(importedBase == "true"){
524 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
525 }
526 }
527 else if($.mobile.activePage.is('#prestationsPage')){
528 $.mobile.changePage( "#eventsPage", { transition: "slide", reverse: true, changeHash: false });
529 }
530 else if($.mobile.activePage.is('#guestsPage')){
531 if(guestsList.prestations || (!guestsList.prestations && guestsList.prestationId == 0)){
532 $.mobile.changePage( "#prestationsPage", { transition: "slide", reverse: true, changeHash: false });
533 }
534 else
535 {
536 $.mobile.changePage( "#eventsPage", { transition: "slide", reverse: true, changeHash: false });
537 }
538 }
539 else if($.mobile.activePage.is('#infoGuestPage')){
540 $.mobile.changePage( "#guestsPage", { transition: "slide", reverse: true, changeHash: false });
541 }
542 else if($.mobile.activePage.is('#prestationsPageLocal')){
543 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
544 }
545 else if($.mobile.activePage.is('#guestsPageLocal')){
546 if(guestsList.prestations){
547 $.mobile.changePage( "#prestationsPageLocal", { transition: "slide", reverse: true, changeHash: false });
548 }
549 else {
550 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
551 }
552 }
553 else if($.mobile.activePage.is('#infoGuestPageLocal')){
554 $.mobile.changePage( "#guestsPageLocal", { transition: "slide", reverse: true, changeHash: false });
555 }
556 else if($.mobile.activePage.is('#scanPage')){
557 if(guestsList.dialog == 9){
558 $.mobile.changePage("#guestsPage", { transition: "fade", changeHash: false });
559 }
560 else if(guestsList.dialog == 10){
561 $.mobile.changePage("#guestsPageLocal", { transition: "fade", changeHash: false });
562 }
563 guestsList.dialog = 0;
564 }
565
566 $.unblockUI();
567 }, false);
568
569 /************************************************/
570 /****** #region Fonctions utilitaires *******/
571 /**********************************************/
572 function checkTokenValidity(){
573 if(window.localStorage.getItem("tokenDate") != null && window.localStorage.getItem("token") != null){
574 var tokenDate = new Date(window.localStorage.getItem("tokenDate"));
575 var today = new Date();
576
577 if((today-tokenDate) < 7200000) // inférieur à 2h
578 {
579 ApiToken = window.localStorage.getItem("token");
580 return true;
581 }
582 }
583 requestConnection = false;
584 return false;
585 }
586
587 function offlineMode(){
588 importedBase = window.localStorage.getItem("importedBase");
589 if(importedBase != "true"){
590 //Si aucune base importé alors on redirige directement vers la page de connexion
591 navigator.notification.alert(
592 "Aucune liste d'invit\351s n'a \351t\351 t\351l\351charg\351e au pr\351alable",
593 alertDismissed,
594 "Notification",
595 "Ok"
596 );
597 }
598 else{
599 ajax.blockui();
600 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
601
602 prestations = window.localStorage.getItem("prestations");
603 if(prestations == "true"){
604 db.transaction(function(tx) {
605 $('#prestationsLocalList').empty();
606 tx.executeSql("select count(*) as cnt from A09_PARTICIPANT;", [], function(tx, res2) {
607 var text0 = ' invit\351';
608 if(res2.rows.item(0).cnt > 0){
609 text0 = ' invit\351s';
610 }
611 $('#prestationsLocalList').append('<li><a href="" data-id="0" style="color: green;"><i class="fa fa-home fa-3x homePrestation"></i><h3>Accueil Principal</h3><p>' + res2.rows.item(0).cnt + text0 +'</p></a></li>');
612 });
613
614 tx.executeSql("select * from A10_PRESTATION;", [], function(tx, res) {
615 for (i = 0; i < res.rows.length; i++) {
616 var nb_inscrits = parseInt(res.rows.item(i).PLACE_DISPO) - parseInt(res.rows.item(i).PLACE_RESTANTE);
617 var text1 = ' inscrit sur ';
618 var text2 = ' place disponible';
619
620 if(isNaN(nb_inscrits)){
621 nb_inscrits = "";
622 text1 = "";
623 text2 = "";
624 res.rows.item(i).PLACE_DISPO = "";
625 }else{
626 if(nb_inscrits > 0){
627 text1 = ' inscrits sur ';
628 }
629 if(parseInt(res.rows.item(i).PLACE_DISPO) > 0){
630 text2 = ' places disponibles';
631 }
632 }
633
634 $('#prestationsLocalList').append('<li><a href="" data-id="' +
635 res.rows.item(i).ID + '"><i class="fa fa-ticket fa-3x"></i><h3>' + res.rows.item(i).LIBELLE + '</h3><p>' + nb_inscrits + text1 + res.rows.item(i).PLACE_DISPO + text2 + '</p></a></li>');
636 }
637
638 setTimeout(function(){
639 $.mobile.changePage( "#prestationsPageLocal", { transition: "slide", changeHash: false });
640 $('#prestationsLocalList').listview('refresh');
641
642 $.unblockUI();
643 }, 500);
644 });
645 });
646
647 }else{
648 parseGuestsListLocal(false);
649 }
650 }
651 }
652
653 function openBarcodeScan(viewInfo, callback) {
654 var scanner = cordova.plugins.barcodeScanner;
655 scanner.scan(function (result) {
656 if (!result.cancelled) {
657 callback(result);
658 }
659 }, function (error) {
660 navigator.notification.alert(
661 "Erreur lors de l'ouverture du plugin barcodeScanner",
662 alertDismissed,
663 "Notification",
664 "Ok"
665 );
666 });
667 }
668
669
670 /************************************************/
671 /****** #region MainPage ********/
672 /**********************************************/
673 $(document).on('vclick', '#btnNoWifi', function(){
674 offlineMode();
675 });
676
677
678 /***************************************/
679 /****** #region loginPage *******/
680 /***************************************/
681 $(document).on('pagebeforeshow', '#mainPage', function(){
682 $('#authenticationForm').on('submit', function(event) {
683 event.preventDefault();
684 setTimeout(function() {
685 $('#btnConnexion').trigger( 'click' );
686 }, 50);
687 return false;
688 });
689
690 rememberMe = window.localStorage.getItem("rememberMe");
691
692 if(rememberMe == "true"){
693 $('#checkboxRememberMe').prop('checked', true).checkboxradio('refresh');
694 document.getElementById("username").value = window.localStorage.getItem("username");
695 document.getElementById("password").value = window.localStorage.getItem("password");
696 }
697
698 $('#checkboxRememberMe').change(function() {
699 if($(this).is(":checked")) {
700 window.localStorage.setItem("rememberMe", "true");
701 }else{
702 window.localStorage.setItem("rememberMe", "false");
703 }
704 });
705 });
706
707 $( document ).on('vclick', '#btnConnexion', function(e){
708 e.preventDefault();
709 if(e.handled !== true && requestConnection == false) // This will prevent event triggering more then once
710 {
711 requestConnection = true;
712 e.handled = true;
713 var form = $("#authenticationForm");
714 var username = $("#username", form).val();
715 var password = $("#password", form).val();
716
717 //Stockage local si on a coché se souvenir de moi
718 if(window.localStorage.getItem("rememberMe") == "true"){
719 var username = document.getElementById("username").value;
720 var password = document.getElementById("password").value;
721 window.localStorage.setItem("username", username);
722 window.localStorage.setItem("password", password);
723 }
724 var currentDatabase = document.getElementById("database").value
725 window.localStorage.setItem("database", currentDatabase);
726
727 switch(currentDatabase) {
728 case "#000":
729 url = "http://recette.apiagora.com/api/";
730 break;
731 case "#001":
732 url = "http://bnp.apiagora.com/api/";
733 break;
734 case "#002":
735 url = "https://agora.orange.com/api/";
736 break;
737 case "#999":
738 url = "http://localhost:60814/api/";
739 break;
740 default:
741 url = "http://recette.apiagora.com/api/";
742 }
743
744 if(username != "" && password != "") {
745 // Blocage de l'interface
746 ajax.blockui();
747 setTimeout(function () {
748 $.ajax({
749 type: 'POST',
750 url: url + 'authentication/authenticate',
751 crossDomain: true,
752 data: {login: username, password : password},
753 dataType: 'json',
754 async: false,
755 success: function (result) {
756 $.unblockUI();
757 requestConnection = false;
758 //Récupération du token d'authentification
759 ApiToken = result;
760
761 window.localStorage.setItem("token", ApiToken);
762 window.localStorage.setItem("tokenDate", new Date().toString());
763
764 $.mobile.changePage("#eventsPage", { transition: "slide", changeHash: false });
765 },
766 error: function (request,error) {
767 $.unblockUI();
768 navigator.notification.alert(
769 "Combinaison identifiants / mot de passe invalide",
770 alertDismissed,
771 "Notification",
772 "Ok"
773 );
774 requestConnection = false;
775 }
776 });
777 }, 200);
778 }
779 else {
780 //if the email and password is empty
781 navigator.notification.alert(
782 "Veuillez renseigner les champs d'authentification",
783 alertDismissed,
784 "Notification",
785 "Ok"
786 );
787 }
788 }
789 });
790
791 /***************************************/
792 /* #region eventsPage *****/
793 /***************************************/
794 $(document).on('pagebeforeshow', '#eventsPage', function(){
795 importedBase = window.localStorage.getItem("importedBase");
796 if(importedBase == "true"){
797 document.getElementById("backtoLoginButton").style.display = "inline";
798 }
799 ajax.getEventsList();
800 });
801
802 $(document).on('vclick', '#backtoLoginButton', function(){
803 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
804 });
805
806 $(document).on('pagebeforeshow', '#prestationsPage', function(){
807 $('#prestationsList').listview('refresh');
808 ajax.getEventsList();
809 });
810
811 $(document).on('vclick', '#prestationsPageFooterBtnActualiser', function(){
812 loadEventList();
813 });
814
815 $(document).on('vclick', '#eventsList li a', function(){
816 var id = $(this).attr('data-id');
817 guestsList.eventId = id;
818 guestsList.eventName = this.getElementsByTagName("h3")[0].innerHTML;
819 guestsList.prestationId = null;
820 loadEventList();
821 });
822
823 $(document).on('vclick', '#moreOptionEventsPage', function(){
824 setTimeout(function(){
825 document.getElementById("moreOptionOverlayDivEventsPage").style.display="block";
826 }, 50);
827 document.getElementById("moreOptionDivEventsPage").style.display="block";
828 });
829
830 $(document).on('vclick', '#moreOptionOverlayDivEventsPage', function(){
831 document.getElementById("moreOptionDivEventsPage").style.display="none";
832 setTimeout(function(){
833 document.getElementById("moreOptionOverlayDivEventsPage").style.display="none";
834 }, 50);
835 });
836
837 $(document).on('vclick', '#eventsPageBtnAccueil', function(){
838 document.getElementById("moreOptionDivEventsPage").style.display="none";
839 setTimeout(function(){
840 document.getElementById("moreOptionOverlayDivEventsPage").style.display="none";
841 }, 50);
842
843 $.mobile.changePage( "#eventsPage", { transition: "slide", reverse: true, changeHash: false });
844 });
845
846 $(document).on('vclick', '#disconnect', function(){
847 requestConnection = false;
848 window.localStorage.removeItem("token");
849 window.localStorage.removeItem("tokenDate");
850
851 document.getElementById("moreOptionDivEventsPage").style.display="none";
852 setTimeout(function(){
853 document.getElementById("moreOptionOverlayDivEventsPage").style.display="none";
854 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
855 }, 50);
856 });
857
858 function loadEventList(){
859 // CHECK IF THERE ARE PRESTATIONS
860 ajax.blockui();
861 setTimeout(function(){
862 $.ajax({
863 type: 'GET',
864 url: url + 'methods/MobileApp/GetPrestations/' + guestsList.eventId,
865 crossDomain: true,
866 headers: {'AgoraEvent-Token': ApiToken},
867 success: function (result) {
868 if(result.length > 0)
869 {
870 guestsList.prestations = true;
871 ajax.parsePrestations(result);
872
873 document.getElementById("PrestationsPageTitle").innerHTML = guestsList.eventName;
874 $.mobile.changePage( "#prestationsPage", { transition: "slide", changeHash: false });
875 }
876 else
877 {
878 guestsList.prestations = false;
879 ajax.getGuestslist(false);
880 }
881 },
882 error: function (request,error) {
883 $.unblockUI();
884 if(request.status == 401){
885 // Unauthorized
886 navigator.notification.alert(
887 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
888 alertDismissed,
889 "Notification",
890 "Ok"
891 );
892
893 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
894 }
895 navigator.notification.alert(
896 "Erreur lors de la r\351cup\351ration des prestations en ligne",
897 alertDismissed,
898 "Notification",
899 "Ok"
900 );
901 }
902 });
903 }, 50);
904 }
905
906 /***************************************/
907 /****** #region prestationsPage ***/
908 /***************************************/
909 $(document).on('vclick', '#backBtnPrestationsPage', function(){
910 $.mobile.changePage( "#eventsPage", { transition: "slide", reverse: true, changeHash: false });
911 });
912
913
914 $(document).on('vclick', '#prestationsList li a', function(){
915 guestsList.prestationName = $(this)[0].querySelector("h3").textContent;
916 guestsList.prestationId = $(this).attr('data-id');
917 if(guestsList.prestationId == 0 || guestsList.prestationId == null){
918 ajax.getGuestslist(false);
919 guestsList.prestations = false;
920 }else{
921 ajax.getGuestslist(true);
922 guestsList.prestations = true;
923 }
924 });
925
926 $(document).on('vclick', '#moreOptionPrestationPage', function(){
927 guestsList.dialog = 4;
928 setTimeout(function(){
929 document.getElementById("moreOptionOverlayDivPrestationPage").style.display="block";
930 }, 50);
931 document.getElementById("moreOptionDivPrestationPage").style.display="block";
932 });
933
934 $(document).on('vclick', '#moreOptionOverlayDivPrestationPage', function(){
935 guestsList.dialog = 0;
936 document.getElementById("moreOptionDivPrestationPage").style.display="none";
937 setTimeout(function(){
938 document.getElementById("moreOptionOverlayDivPrestationPage").style.display="none";
939 }, 50);
940 });
941
942 $(document).on('vclick', '#prestationsPageFooterBtnAccueil', function(){
943 document.getElementById("moreOptionDivPrestationPage").style.display="none";
944 setTimeout(function(){
945 document.getElementById("moreOptionOverlayDivPrestationPage").style.display="none";
946 }, 50);
947
948 importedBase = window.localStorage.getItem("importedBase");
949 if(importedBase == "true"){
950 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
951 }
952 else{
953 $.mobile.changePage( "#eventsPage", { transition: "slide", reverse: true, changeHash: false });
954 }
955 });
956
957 $(document).on('vclick', '#prestationsPageFooterBtnImport', function(){
958 document.getElementById("moreOptionDivPrestationPage").style.display="none";
959 setTimeout(function(){
960 document.getElementById("moreOptionOverlayDivPrestationPage").style.display="none";
961 }, 50);
962
963 importBase(true);
964 });
965
966 $(document).on('vclick', '#prestationsPageFooterBtnHorsLigne', function(){
967 document.getElementById("moreOptionDivPrestationPage").style.display="none";
968 setTimeout(function(){
969 document.getElementById("moreOptionOverlayDivPrestationPage").style.display="none";
970 }, 50);
971
972 offlineMode();
973 });
974
975 /***************************************/
976 /****** #region guestsPage ****/
977 /***************************************/
978 function emptyGuestData(){
979 $('#guestData').empty();
980 $('#guestDataPrestationsList').empty();
981
982 document.getElementById("infoGuestPageName").innerHTML = "Nom Pr\351nom";
983 document.getElementById("infoGuestPageCategory").innerHTML = "Cat\351gorie";
984
985 $('#guestData').append(
986 '<strong>Soci\351t\351: </strong><br/>' +
987 '<strong>Email: </strong><br/>' +
988 '<strong>T\351l\351phone: </strong><br/>'
989 );
990 }
991
992 $(document).on('pagebeforeshow', '#guestsPage', function(){
993 emptyGuestData();
994 $('#guestsList').listview('refresh');
995 });
996
997 $(document).on('vclick', '#guestsPageBackButton', function(){
998 if(guestsList.prestations || (!guestsList.prestations && guestsList.prestationId == 0)){
999 $.mobile.changePage( "#prestationsPage", { transition: "slide", reverse: true, changeHash: false });
1000 }
1001 else
1002 {
1003 $.mobile.changePage( "#eventsPage", { transition: "slide", reverse: true, changeHash: false });
1004 }
1005 });
1006
1007 $(document).on('vclick', '#moreOptionGuestsPage', function(){
1008 setTimeout(function(){
1009 document.getElementById("moreOptionOverlayDivGuestsPage").style.display="block";
1010 }, 50);
1011 document.getElementById("moreOptionDivGuestsPage").style.display="block";
1012 });
1013
1014 $(document).on('vclick', '#moreOptionOverlayDivGuestsPage', function(){
1015 document.getElementById("moreOptionDivGuestsPage").style.display="none";
1016 setTimeout(function(){
1017 document.getElementById("moreOptionOverlayDivGuestsPage").style.display="none";
1018 }, 50);
1019 });
1020
1021 $(document).on('vclick', '#guestsList li a', function(){
1022 ajax.blockui();
1023 guestsList.id = $(this).attr('data-id');
1024
1025 setTimeout(function(){
1026 if(guestsList.tablette){
1027 loadParticipantPresenceInfos();
1028 }else{
1029 $.mobile.changePage( "#infoGuestPage", { transition: "slide", changeHash: false });
1030 }
1031 }, 150);
1032 });
1033
1034 $(document).on('vclick', '#infoGuestPageEbillet', function(){
1035 var fileObject;
1036 var path;
1037 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
1038 window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
1039
1040 function onFileSystemSuccess(fileSystem) {
1041 path = fileSystem.root.toURL();
1042 fileSystem.root.getFile("ebillet_" + guestsList.id + ".pdf",
1043 {create: true, exclusive: false},
1044 gotFileEntry, fail);
1045 }
1046
1047 function gotFileEntry(fileEntry) {
1048 fileObject = fileEntry;
1049 saveFileContent();
1050 }
1051
1052 function saveFileContent() {
1053 fileObject.createWriter(success, fail);
1054 }
1055
1056 function success(writer) {
1057 ajax.blockui();
1058
1059 var fullURL = "";
1060
1061 if(guestsList.prestations){
1062 fullURL = 'methods/MobileApp/GetEbillet?id=' + guestsList.id + '&Prestation=true';
1063 }else
1064 {
1065 fullURL = 'methods/MobileApp/GetEbillet?id=' + guestsList.id;
1066 }
1067
1068 $.ajax({
1069 type: 'GET',
1070 url: url + fullURL,
1071 crossDomain: true,
1072 async: false,
1073 dataType: 'binary',
1074 headers: {'AgoraEvent-Token': ApiToken},
1075 success: function (result) {
1076 writer.write(result);
1077 setTimeout(function(){
1078 cordova.plugins.fileOpener2.open(
1079 path + fileObject.fullPath,
1080 'application/pdf',
1081 {
1082 error : function(e) {
1083 alert('Error status: ' + e.status + ' - Error message: ' + e.message);
1084 },
1085 success : function () {
1086 }
1087 }
1088 );
1089 }, 500);
1090 $.unblockUI();
1091 },
1092 error: function (request, error) {
1093 $.unblockUI();
1094 navigator.notification.alert(
1095 "Erreur lors du t\351l\351chargement du E-Billet",
1096 alertDismissed,
1097 "Notification",
1098 "Ok"
1099 );
1100 }
1101 });
1102 };
1103
1104 function fail(error){
1105 alert(error.target);
1106 }
1107 });
1108
1109 /********** #subregion GUEST LIST OPTION PANEL *********/
1110 function scanQrCode(){
1111 guestsList.dialog = 9;
1112 openBarcodeScan("scan", function (barcode) {
1113 var id = getParameterByName(barcode.text, "IdA09");
1114 guestsList.id = id;
1115
1116 if(id != ""){
1117 ajax.blockui();
1118
1119 setTimeout(function(){
1120 var fullURL;
1121 if(guestsList.prestations){
1122 fullURL = 'methods/MobileApp/SetPresenceInscription?id=' + id + '&ebillet=true&idPrestation=' + guestsList.prestationId;
1123 }
1124 else{
1125 fullURL = 'methods/MobileApp/SetPresence/' + id;
1126 }
1127
1128 $.ajax({
1129 type: 'POST',
1130 url: url + fullURL,
1131 crossDomain: true,
1132 async: false,
1133 headers: {'AgoraEvent-Token': ApiToken},
1134 success: function (result) {
1135 guestsList.id = result[0];
1136
1137 // Mise à jour du nombre de présents
1138 guestsList.nbPresents ++;
1139
1140 var text0 = " pr\351sent";
1141 if(guestsList.nbPresents > 1){
1142 text0 = " pr\351sents";
1143 }
1144 document.getElementById("guestsPageNbPresents").innerHTML = guestsList.nbPresents + " pr\351sents";
1145
1146 document.getElementById("scanResultText").innerHTML = "ok";
1147 document.getElementById("scanPage").style.backgroundColor = "rgb(133, 229, 55)";
1148 document.getElementById("scanPageLinkGuest").style.display = "block";
1149 document.getElementById("scanPageTitle1").innerHTML = "Billet valide";
1150
1151 // FILL PARTICIPANT INFOS
1152 document.getElementById("scanPageTitle2").innerHTML = result[1] + " " + result[2];
1153
1154 document.getElementById("scanPageMessage").innerHTML = "Pr\351sence valid\351e";
1155 document.getElementById("scanPageLinkBack").onclick = function(){
1156 $.mobile.changePage("#guestsPage", { transition: "fade", changeHash: false });
1157 };
1158 document.getElementById("scanPageContent").onclick = scanAgain;
1159
1160 document.getElementById("scanPageLinkGuest").onclick = moreInfoScan;
1161
1162 setTimeout(function(){
1163 $.mobile.changePage( "#scanPage", { transition: "fade", changeHash: false });
1164 $.unblockUI();
1165 }, 50);
1166 navigator.vibrate(500);
1167 },
1168 error: function (request, error) {
1169 $.unblockUI();
1170 navigator.vibrate(500);
1171 if(request.status == 404 || request.status == 401){
1172 document.getElementById("scanResultText").innerHTML = "X";
1173 document.getElementById("scanPage").style.backgroundColor = "rgb(254,0,0)";
1174 document.getElementById("scanPageLinkGuest").style.display = "none";
1175
1176 document.getElementById("scanPageTitle1").innerHTML = "Billet non valide";
1177 document.getElementById("scanPageTitle2").innerHTML = "Erreur:";
1178 document.getElementById("scanPageMessage").innerHTML = "Impossible d'identifier le num\351ro du billet, veuillez v\351rifier les informations de celui-ci";
1179
1180 document.getElementById("scanPageContent").onclick = scanAgain;
1181 document.getElementById("scanPageLinkBack").onclick = function(){
1182 $.mobile.changePage( "#guestsPage", { transition: "fade", changeHash: false });
1183 };
1184
1185 setTimeout(function(){
1186 $.mobile.changePage( "#scanPage", { transition: "fade", changeHash: false });
1187 }, 50);
1188 }
1189 else if(request.status == 403){
1190 document.getElementById("scanResultText").innerHTML = "X";
1191 document.getElementById("scanPage").style.backgroundColor = "rgb(236,101,0)";
1192 document.getElementById("scanPageLinkGuest").style.display = "block";
1193
1194 document.getElementById("scanPageTitle1").innerHTML = "Billet d\351j\340 enregistr\351";
1195 document.getElementById("scanPageTitle2").innerHTML = "Alerte:";
1196 document.getElementById("scanPageMessage").innerHTML = "Le num\351ro du billet a d\351j\340 \351t\351 scann\351 auparavant";
1197
1198 document.getElementById("scanPageContent").onclick = scanAgain;
1199 document.getElementById("scanPageLinkBack").onclick = function(){
1200 $.mobile.changePage( "#guestsPage", { transition: "fade", changeHash: false });
1201 };
1202
1203 setTimeout(function(){
1204 $.mobile.changePage( "#scanPage", { transition: "fade", changeHash: false });
1205 }, 50);
1206 }
1207 else{
1208 navigator.notification.alert(
1209 "Erreur lors de la validation d'un invit\351 par QRCode",
1210 alertDismissed,
1211 "Notification",
1212 "Ok"
1213 );
1214 }
1215 }
1216 });
1217 }, 200);
1218 }
1219 else{
1220 $.unblockUI();
1221 document.getElementById("scanResultText").innerHTML = "X";
1222 document.getElementById("scanPage").style.backgroundColor = "rgb(254,0,0)";
1223 document.getElementById("scanPageLinkGuest").style.display = "none";
1224
1225 document.getElementById("scanPageTitle1").innerHTML = "Billet non valide";
1226 document.getElementById("scanPageTitle2").innerHTML = "Erreur:";
1227 document.getElementById("scanPageMessage").innerHTML = "Impossible d'identifier le num\351ro du billet, veuillez v\351rifier les informations de celui-ci";
1228
1229 document.getElementById("scanPageContent").onclick = scanAgain;
1230 document.getElementById("scanPageLinkBack").onclick = function(){
1231 $.mobile.changePage( "#guestsPage", { transition: "fade", changeHash: false });
1232 };
1233
1234 setTimeout(function(){
1235 $.mobile.changePage( "#scanPage", { transition: "fade", changeHash: false });
1236 }, 50);
1237 }
1238 });
1239 }
1240
1241 $(document).on('vclick', '#guestsListFooterBtnQrcode', function(){
1242 scanQrCode();
1243 });
1244
1245 function moreInfoScan(){
1246 if(guestsList.tablette){
1247 $.mobile.changePage("#guestsPage", { transition: "fade", changeHash: false });
1248 }
1249 else{
1250 $.mobile.changePage( "#infoGuestPage", { transition: "slide", changeHash: false });
1251 }
1252 }
1253
1254 function scanAgain(){
1255 setTimeout(function(){
1256 scanQrCode();
1257 }, 50);
1258 }
1259
1260 $(document).on('vclick', '#guestsListFooterBtnAccueil', function(){
1261 document.getElementById("moreOptionDivGuestsPage").style.display="none";
1262 setTimeout(function(){
1263 document.getElementById("moreOptionOverlayDivGuestsPage").style.display="none";
1264 }, 50);
1265
1266 importedBase = window.localStorage.getItem("importedBase");
1267 if(importedBase == "true"){
1268 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
1269 }
1270 else{
1271 $.mobile.changePage( "#eventsPage", { transition: "slide", reverse: true, changeHash: false });
1272 }
1273 });
1274
1275 $(document).on('vclick', '#guestsListFooterBtnImport', function(){
1276 document.getElementById("moreOptionDivGuestsPage").style.display="none";
1277 setTimeout(function(){
1278 document.getElementById("moreOptionOverlayDivGuestsPage").style.display="none";
1279 }, 50);
1280
1281 if(guestsList.prestations || (!guestsList.prestations && guestsList.prestationId == 0)){
1282 importBase(true);
1283 }
1284 else{
1285 importBase(false);
1286 }
1287 });
1288
1289 $(document).on('vclick', '#guestsListFooterBtnActualiser', function(){
1290 if(guestsList.prestationId == 0 || guestsList.prestationId == null){
1291 ajax.getGuestslist(false);
1292 guestsList.prestations = false;
1293 }else{
1294 ajax.getGuestslist(true);
1295 guestsList.prestations = true;
1296 }
1297 });
1298
1299
1300 $(document).on('vclick', '#guestsListFooterBtnSearch', function(){
1301 $.mobile.silentScroll(0);
1302 setTimeout(function(){ dialogSearch.show(); }, 50);
1303 guestsList.dialog = 1;
1304
1305
1306 $('#searchForm').on('submit', function(event) {
1307 event.preventDefault();
1308 $('#searchField').blur();
1309
1310 setTimeout(function() {
1311 $('#btnSearch').trigger( 'click' );
1312 }, 50);
1313 return false;
1314 });
1315 });
1316
1317 //#search
1318 $(document).on('vclick', '#btnSearch', function(){
1319 var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");
1320 var searchText = document.getElementById("searchField").value;
1321
1322 if(searchText != ""){
1323 if (activePage[0].id == "guestsPage") {
1324 var id = guestsList.eventId;
1325 setTimeout(function(){ dialogSearch.hide(); }, 50);
1326 ajax.blockui();
1327 setTimeout(function(){
1328 if(guestsList.prestations && guestsList.prestationId != 0){
1329 var fullURL = 'methods/MobileApp/GetParticipants?id=' + guestsList.prestationId + '&Prestation=true&Query=' + searchText;
1330 }else{
1331 var fullURL = 'methods/MobileApp/GetParticipants?id=' + id + '&Query=' + searchText;
1332 }
1333
1334 $.ajax({
1335 type: 'GET',
1336 url: url + fullURL,
1337 crossDomain: true,
1338 async: false,
1339 headers: {'AgoraEvent-Token': ApiToken},
1340 success: function (result) {
1341 guestsList.listSearch = result;
1342 ajax.parseGuests(result);
1343
1344 var text0 = " r\351sultat";
1345 if(guestsList.listSearch.length > 0){
1346 text0 = " r\351sultats";
1347 }
1348 document.getElementById("guestsPageNbResults").innerHTML = guestsList.listSearch.length + text0;
1349
1350 $('#guestsList').listview('refresh');
1351
1352 $('#guestsPageSearchFilter').fadeIn("slow");
1353
1354 $('#deleteBtnSearchFilter')[0].innerHTML = searchText;
1355 guestsList.dialog = 6;
1356 $.unblockUI();
1357 },
1358 error: function (request, error) {
1359 $.unblockUI();
1360 if(request.status == 401){
1361 // Unauthorized
1362 navigator.notification.alert(
1363 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1364 alertDismissed,
1365 "Notification",
1366 "Ok"
1367 );
1368
1369 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1370 }
1371 navigator.notification.alert(
1372 "Erreur lors de la recherche d'un invit\351",
1373 alertDismissed,
1374 "Notification",
1375 "Ok"
1376 );
1377 }
1378 });
1379 }, 500);
1380 }else if(activePage[0].id == "guestsPageLocal"){
1381 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
1382 setTimeout(function(){ dialogSearch.hide(); }, 50);
1383 guestsList.dialog = 0;
1384
1385 setTimeout(function(){
1386 db.transaction(function(tx) {
1387 if(prestations == "true" && guestsList.prestationId != 0){
1388 tx.executeSql("select a.*, b.ID_STATUT_A39 from A09_PARTICIPANT as a left join A07_INSCRIPTION as b on a.ID=b.ID_PARTICIPANT where PRESTATION_A10=? and (LastName like ? or FirstName like ? ) limit 100;", [guestsList.prestationId, "%" + searchText + "%", "%" + searchText + "%"], function(tx, res) {
1389
1390 $('#guestsListLocal').empty();
1391 for (i = 0; i < res.rows.length; i++) {
1392 $('#guestsListLocal').append('<li><a href="" data-id="' +
1393 res.rows.item(i).ID + '"><h3>' + res.rows.item(i).LastName + '</h3><p>' + res.rows.item(i).FirstName + '</p></a></li>');
1394 }
1395 document.getElementById("guestsPageLocalNbResults").innerHTML = res.rows.length + " r\351sultat(s)";
1396 $("#guestsListLocal").listview("refresh");
1397
1398 document.getElementById("deleteBtnLocalSearchFilter").innerHTML = searchText;
1399 $('#guestsPageLocalSearchFilter').fadeIn("slow");
1400 $.unblockUI();
1401 });
1402 }
1403 else{
1404 var query = "select * from A09_PARTICIPANT where (LastName like ? or FirstName like ?) limit 100;";
1405 tx.executeSql(query, ["%" + searchText + "%", "%" + searchText + "%"], function(tx, res) {
1406 $('#guestsListLocal').empty();
1407 for (i = 0; i < res.rows.length; i++) {
1408 $('#guestsListLocal').append('<li><a href="" data-id="' +
1409 res.rows.item(i).ID + '"><h3>' + res.rows.item(i).LastName + '</h3><p>' + res.rows.item(i).FirstName + '</p></a></li>');
1410 }
1411 document.getElementById("guestsPageLocalNbResults").innerHTML = res.rows.length + " r\351sultat(s)";
1412 $("#guestsListLocal").listview("refresh");
1413
1414 document.getElementById("deleteBtnLocalSearchFilter").innerHTML = searchText;
1415 $('#guestsPageLocalSearchFilter').fadeIn("slow");
1416 $.unblockUI();
1417 });
1418 }
1419 });
1420 }, 500);
1421 }
1422 }else{
1423 navigator.notification.alert(
1424 "Veuillez renseigner le champ de recherche!",
1425 alertDismissed,
1426 "Notification",
1427 "Ok"
1428 );
1429 }
1430 });
1431
1432 $(document).on('vclick', '#deleteBtnSearchFilter', function() {
1433 $('#guestsPageSearchFilter').fadeOut("slow");
1434 guestsList.dialog = 0;
1435 setTimeout(function(){
1436 $("#guestsList").empty();
1437 ajax.parseGuests(guestsList.list);
1438 $('#guestsList').listview('refresh');
1439 document.getElementById("guestsPageNbResults").innerHTML = guestsList.nbParticipants + " r\351sultat(s)";
1440 }, 200);
1441 });
1442
1443 //Import de la base en hors ligne
1444 $(document).on('vclick', '#guestsListFooterBtnHorsLigne', function(){
1445 document.getElementById("moreOptionDivGuestsPage").style.display="none";
1446 setTimeout(function(){
1447 document.getElementById("moreOptionOverlayDivGuestsPage").style.display="none";
1448 }, 50);
1449
1450 /*
1451 var askImport = confirm("Voulez-vous importer la liste d'invit\351s avant de passer en mode hors ligne?");
1452
1453 if(askImport){
1454 importBase(false);
1455 }
1456 */
1457 offlineMode();
1458 });
1459
1460 // #importBase
1461 function importBase(prestations){
1462 ajax.blockui();
1463 setTimeout(function(){
1464 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
1465
1466 db.transaction(function(tx) {
1467 tx.executeSql('DROP TABLE IF EXISTS A10_PRESTATION');
1468 tx.executeSql('DROP TABLE IF EXISTS A07_INSCRIPTION');
1469 tx.executeSql('DROP TABLE IF EXISTS CHANGE_LIST_INSCRIPTION');
1470
1471 if(prestations){
1472 tx.executeSql('CREATE TABLE IF NOT EXISTS A10_PRESTATION (ID integer, LIBELLE text, NUMERO_MANIFESTATION integer, PLACE_DISPO integer, PLACE_RESTANTE integer)');
1473 tx.executeSql('CREATE TABLE IF NOT EXISTS A07_INSCRIPTION (ID integer, ID_PARTICIPANT integer, PRESTATION_A10 integer, ID_STATUT_A39 integer, DatePresence date, A10_LIBELLE text)');
1474 tx.executeSql('CREATE TABLE IF NOT EXISTS CHANGE_LIST_INSCRIPTION (ID integer, ID_STATUT_A39 integer)');
1475 }
1476
1477 tx.executeSql('DROP TABLE IF EXISTS A09_PARTICIPANT');
1478 tx.executeSql('CREATE TABLE IF NOT EXISTS A09_PARTICIPANT (ID integer, LastName text, FirstName text, Email text, StatusID integer, Societe text, Tel text, DatePresence date, Category text)');
1479
1480 tx.executeSql('DROP TABLE IF EXISTS CHANGE_LIST');
1481 tx.executeSql('CREATE TABLE IF NOT EXISTS CHANGE_LIST (ID integer, StatusID integer)');
1482
1483 tx.executeSql('DROP TABLE IF EXISTS I42_INV_DATES_PRESENCE');
1484 tx.executeSql('CREATE TABLE IF NOT EXISTS I42_INV_DATES_PRESENCE (ID_PART_A09 integer, DATE_PRESENCE date, NUMERO_MANIFESTATION integer, STATUTPART_A09 integer)');
1485
1486 tx.executeSql('DROP TABLE IF EXISTS CHANGE_LIST_I42_INV_DATES_PRESENCE');
1487 tx.executeSql('CREATE TABLE IF NOT EXISTS CHANGE_LIST_I42_INV_DATES_PRESENCE (ID_PART_A09 integer, DATE_PRESENCE date, NUMERO_MANIFESTATION integer, STATUTPART_A09 integer)');
1488
1489 var id = guestsList.eventId;
1490
1491 // RECUPERATION DES PARTICIPANTS
1492 fullURLCount = 'methods/MobileApp/CountParticipants?id=' + id;
1493 $.ajax({
1494 type: 'GET',
1495 url: url + fullURLCount,
1496 crossDomain: true,
1497 async: false,
1498 headers: {'AgoraEvent-Token': ApiToken},
1499 success: function (result) {
1500 guestsList.nbParticipants = result[0];
1501 var nbTimes = 0;
1502 nbTimes = result[0] / 300;
1503 var start = 0;
1504 var record = 299;
1505 var i = 0;
1506 nbTimes = Math.ceil(nbTimes);
1507
1508 for(i = 0; i < nbTimes; i++){
1509 var current = i + 1;
1510
1511 $.ajax({
1512 type: 'GET',
1513 url: url + 'methods/MobileApp/GetParticipantsLocal?id=' + id + '&StartRecord=' + start + '&RecordsCount=' + record,
1514 crossDomain: true,
1515 async: false,
1516 headers: {'AgoraEvent-Token': ApiToken},
1517 success: function (result2) {
1518 start += 300;
1519 $.each(result2, function(i, row) {
1520 tx.executeSql("INSERT INTO A09_PARTICIPANT (ID, LastName, FirstName, Email, StatusID, Societe, Tel, DatePresence, Category) VALUES (?,?,?,?,?,?,?,?,?)", [row.ID, row.LastName, row.FirstName, row.Email, row.StatusID, row.Societe, row.Tel, row.DatePresence, row.Category], function(tx, res) {});
1521 });
1522 },
1523 error: function (request, error) {
1524 if(request.status == 401){
1525 // Unauthorized
1526 navigator.notification.alert(
1527 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1528 alertDismissed,
1529 "Notification",
1530 "Ok"
1531 );
1532
1533 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1534 }
1535 navigator.notification.alert(
1536 "Erreur lors de l'import des \351v\350nements hors ligne",
1537 alertDismissed,
1538 "Notification",
1539 "Ok"
1540 );
1541 }
1542 });
1543 }
1544
1545 },
1546 error: function (request,error) {
1547 navigator.notification.alert(
1548 "Erreur lors de la r\351cup\351ration du nombre de r\351sultats",
1549 alertDismissed,
1550 "Notification",
1551 "Ok"
1552 );
1553 }
1554 });
1555
1556 // RECUPERATION DES PRESENCES
1557 $.ajax({
1558 type: 'GET',
1559 url: url + 'methods/MobileApp/GetInvDatePresence/' + id,
1560 crossDomain: true,
1561 async: false,
1562 headers: {'AgoraEvent-Token': ApiToken},
1563 success: function (result) {
1564 $.each(result, function(i, row) {
1565 tx.executeSql("INSERT INTO I42_INV_DATES_PRESENCE (ID_PART_A09, DATE_PRESENCE, NUMERO_MANIFESTATION, STATUTPART_A09) VALUES (?,?,?,?)", [row.ID_PART_A09, row.DATE_PRESENCE, id, row.STATUS_PART_A09], function(tx, res) {});
1566 });
1567 },
1568 error: function (request,error) {
1569 if(request.status == 401){
1570 // Unauthorized
1571 navigator.notification.alert(
1572 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1573 alertDismissed,
1574 "Notification",
1575 "Ok"
1576 );
1577
1578 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1579 }
1580 navigator.notification.alert(
1581 "Erreur lors de la r\351cup\351ration des dates de pr\351sence",
1582 alertDismissed,
1583 "Notification",
1584 "Ok"
1585 );
1586 }
1587 });
1588
1589 window.localStorage.setItem("prestations", "false");
1590
1591 //RECUPERATION DES PRESTATIONS
1592 if(prestations){
1593 window.localStorage.setItem("prestations", "true");
1594 $.ajax({
1595 type: 'GET',
1596 url: url + 'methods/MobileApp/GetPrestations/' + id,
1597 crossDomain: true,
1598 async: false,
1599 headers: {'AgoraEvent-Token': ApiToken},
1600 success: function (result) {
1601 $.each(result, function(i, row) {
1602 tx.executeSql("INSERT INTO A10_PRESTATION (ID, LIBELLE, NUMERO_MANIFESTATION, PLACE_DISPO, PLACE_RESTANTE) VALUES (?,?,?,?,?)", [row.ID, row.LIBELLE, row.NUMERO_MANIFESTATION, row.PLACE_DISPO, row.PLACE_RESTANTE], function(tx, res) {});
1603 });
1604 },
1605 error: function (request,error) {
1606 if(request.status == 401){
1607 // Unauthorized
1608 navigator.notification.alert(
1609 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1610 alertDismissed,
1611 "Notification",
1612 "Ok"
1613 );
1614
1615 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1616 }
1617 navigator.notification.alert(
1618 "Erreur lors de la r\351cup\351ration des prestations hors ligne",
1619 alertDismissed,
1620 "Notification",
1621 "Ok"
1622 );
1623 }
1624 });
1625
1626 $.ajax({
1627 type: 'GET',
1628 url: url + 'methods/MobileApp/GetInscriptions/' + id,
1629 crossDomain: true,
1630 async: false,
1631 headers: {'AgoraEvent-Token': ApiToken},
1632 success: function (result) {
1633 $.each(result, function(i, row) {
1634 tx.executeSql("INSERT INTO A07_INSCRIPTION (ID, ID_PARTICIPANT, PRESTATION_A10, ID_STATUT_A39, DatePresence, A10_LIBELLE) VALUES (?,?,?,?,?,?)", [row.ID, row.ID_PARTICIPANT, row.PRESTATION_A10, row.ID_STATUT_A39, row.DatePresence, row.A10_LIBELLE], function(tx, res) {});
1635 });
1636 },
1637 error: function (request,error) {
1638 if(request.status == 401){
1639 // Unauthorized
1640 navigator.notification.alert(
1641 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1642 alertDismissed,
1643 "Notification",
1644 "Ok"
1645 );
1646
1647 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1648 }
1649 navigator.notification.alert(
1650 "Erreur lors de la r\351cup\351ration des prestations",
1651 alertDismissed,
1652 "Notification",
1653 "Ok"
1654 );
1655 }
1656 });
1657 }
1658
1659 window.localStorage.setItem("importedBase", "true");
1660 window.localStorage.setItem("importedBaseName", guestsList.eventName);
1661 window.localStorage.setItem("eventId", guestsList.eventId);
1662
1663 setTimeout(function(){
1664 navigator.notification.alert(
1665 "Import termin\351!",
1666 alertDismissed,
1667 "Notification",
1668 "Ok"
1669 );
1670 $.unblockUI();
1671 }, 300);
1672
1673 }, function(e) {
1674 console.log("ERROR: " + e.message);
1675 });
1676 }, 300);
1677 }
1678
1679 /****** #subregion infoGuestPage *******/
1680 $(document).on('pagebeforeshow', '#infoGuestPage', function(){
1681 loadParticipantPresenceInfos();
1682 });
1683
1684 function loadParticipantPresenceInfos(){
1685 $('#guestData').empty();
1686 $('#guestDataPrestationsList').empty();
1687 var monthsInYear= new Array("janvier", "f\351vrier", "mars", "avril", "mai", "juin", "juillet", "ao\373t", "septembre", "octobre", "novembre", "d\351cembre");
1688
1689 // RECUPERATION DES INFORMATIONS DE L'INVITE
1690 ajax.blockui();
1691 var fullUrl = 'methods/MobileApp/GetParticipantInfos?id=' + guestsList.id;
1692 if(guestsList.prestations){
1693 var fullUrl = 'methods/MobileApp/GetParticipantInfos?id=' + guestsList.id + '&Prestation=true';
1694 }
1695 $.ajax({
1696 type: 'GET',
1697 url: url + fullUrl,
1698 crossDomain: true,
1699 async: false,
1700 headers: {'AgoraEvent-Token': ApiToken},
1701 success: function (result) {
1702 document.getElementById("infoGuestPageName").innerHTML = result.FirstName + " " + result.LastName;
1703 document.getElementById("infoGuestPageCategory").innerHTML = result.Category;
1704
1705 $('#guestData').append(
1706 '<strong>Soci\351t\351: </strong>' + result.Societe + '<br/>' +
1707 '<strong>Email: </strong>' + result.Email + '<br/>' +
1708 '<strong>T\351l\351phone: </strong>' + result.Tel + '<br/>'
1709 );
1710 },
1711 error: function (request,error) {
1712 if(request.status == 401){
1713 // Unauthorized
1714 navigator.notification.alert(
1715 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1716 alertDismissed,
1717 "Notification",
1718 "Ok"
1719 );
1720
1721 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1722 }
1723 navigator.notification.alert(
1724 "Erreur lors de la r\351cup\351ration des informations d'un invit\351",
1725 alertDismissed,
1726 "Notification",
1727 "Ok"
1728 );
1729 }
1730 });
1731
1732 // APPEND LA LISTE DES PRESENCES A L'INVITE
1733 var fullUrl = 'methods/MobileApp/GetParticipantPresence?id=' + guestsList.id;
1734 if(guestsList.prestations){
1735 var fullUrl = 'methods/MobileApp/GetParticipantPresence?id=' + guestsList.id + '&Prestation=true';
1736 }
1737 $.ajax({
1738 type: 'GET',
1739 url: url + fullUrl,
1740 crossDomain: true,
1741 async: false,
1742 headers: {'AgoraEvent-Token': ApiToken},
1743 success: function (result) {
1744 var tmpText = '<li><i class="fa fa-home homePrestation"></i><h3>Accueil Principal</h3>' +
1745 '<span class="infoGuestStatus status' + result[0].STATUS_PART_A09 + '">[' + guestsList.statusPar[result[0].STATUS_PART_A09] + ']</span>';
1746 $.each(result, function(i, row) {
1747 var date = new Date(row.DATE_PRESENCE);
1748 if(date.getFullYear() < 2000){
1749 tmpText += '<p>Date de validation:</p>';
1750 }else{
1751 tmpText += '<p>Date de validation: ' + date.getDate() + " " + monthsInYear[date.getMonth()] + " " + date.getFullYear() + '</p>';
1752 }
1753 });
1754 tmpText += '</li>';
1755 $('#guestDataPrestationsList').append(tmpText);
1756
1757 $('#guestDataPrestationsList').listview("refresh");
1758 },
1759 error: function (request,error) {
1760 if(request.status == 401){
1761 // Unauthorized
1762 navigator.notification.alert(
1763 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1764 alertDismissed,
1765 "Notification",
1766 "Ok"
1767 );
1768
1769 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1770 }
1771 navigator.notification.alert(
1772 "Erreur lors de la r\351cup\351ration des pr\351sences d'un invit\351",
1773 alertDismissed,
1774 "Notification",
1775 "Ok"
1776 );
1777 }
1778 });
1779
1780 // APPEND LA LISTE DES PRESTATIONS A L'INVITE
1781 ajax.blockui();
1782 fullUrl = 'methods/MobileApp/GetParticipantInscriptions?id=' + guestsList.id;
1783 if(guestsList.prestations){
1784 fullUrl = 'methods/MobileApp/GetParticipantInscriptions?id=' + guestsList.id + '&Prestation=true';
1785 }
1786 $.ajax({
1787 type: 'GET',
1788 url: url + fullUrl,
1789 crossDomain: true,
1790 headers: {'AgoraEvent-Token': ApiToken},
1791 success: function (result) {
1792 $.each(result, function(i, row2) {
1793 var date2 = new Date(row2.DatePresence);
1794 if(date2.getFullYear() < 2000){
1795 $('#guestDataPrestationsList').append('<li><i class="fa fa-ticket"></i><h3>' + row2.A10_LIBELLE + '</h3>' +
1796 '<span class="infoGuestStatus status' + row2.ID_STATUT_A39 + '">[' + guestsList.statusPar[row2.ID_STATUT_A39] + ']</span>' +
1797 '<p>Date de validation: </p></li>');
1798 }else{
1799 $('#guestDataPrestationsList').append('<li><i class="fa fa-ticket"></i><h3>' + row2.A10_LIBELLE +
1800 '</h3><span class="infoGuestStatus status' + row2.ID_STATUT_A39 + '">[' + guestsList.statusPar[row2.ID_STATUT_A39] + ']</span>' +
1801 '<p>Date de validation: ' + date2.getDate() + " " + monthsInYear[date2.getMonth()] + " " + date2.getFullYear() + '</p></li>');
1802 }
1803 });
1804 $('#guestDataPrestationsList').listview("refresh");
1805 $.unblockUI();
1806 },
1807 error: function (request,error) {
1808 $.unblockUI();
1809 if(request.status == 401){
1810 // Unauthorized
1811 navigator.notification.alert(
1812 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1813 alertDismissed,
1814 "Notification",
1815 "Ok"
1816 );
1817
1818 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1819 }
1820 navigator.notification.alert(
1821 "Erreur lors de la r\351cup\351ration des prestations d'un invit\351",
1822 alertDismissed,
1823 "Notification",
1824 "Ok"
1825 );
1826 }
1827 });
1828 }
1829
1830 $(document).on('vclick', '#infoGuestPageBackButton', function(){
1831 $.mobile.changePage( "#guestsPage", { transition: "slide", reverse: true, changeHash: false });
1832 });
1833
1834 function validateGuest(id){
1835 ajax.blockui();
1836
1837 var fullURL;
1838 if(guestsList.prestations){
1839 fullURL = 'methods/MobileApp/SetPresenceInscription?id=' + id;
1840 }
1841 else{
1842 fullURL = 'methods/MobileApp/SetPresence/' + id;
1843 }
1844
1845 $.ajax({
1846 type: 'POST',
1847 url: url + fullURL,
1848 crossDomain: true,
1849 headers: {'AgoraEvent-Token': ApiToken},
1850 success: function (result) {
1851 loadParticipantPresenceInfos();
1852
1853 guestsList.nbPresents ++;
1854 var text0 = " pr\351sent";
1855 if(guestsList.nbPresents > 1){
1856 text0 = " pr\351sents";
1857 }
1858 document.getElementById("guestsPageNbPresents").innerHTML = guestsList.nbPresents + " pr\351sents";
1859 navigator.vibrate(500);
1860 $.unblockUI();
1861 },
1862 error: function (request, error) {
1863 $.unblockUI();
1864 navigator.vibrate(500);
1865 if(request.status == 401){
1866 // Unauthorized
1867 navigator.notification.alert(
1868 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
1869 alertDismissed,
1870 "Notification",
1871 "Ok"
1872 );
1873
1874 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
1875 }
1876 else if(request.status == 404){
1877 navigator.notification.alert(
1878 "Attention: veuillez v\351rifier que le participant fait partie de la liste d'invit\351",
1879 alertDismissed,
1880 "Notification",
1881 "Ok"
1882 );
1883 }
1884 else if(request.status == 403){
1885 navigator.notification.alert(
1886 "Attention: le participant a d\351j\340 \351t\351 enregistr\351 aujourd'hui",
1887 alertDismissed,
1888 "Notification",
1889 "Ok"
1890 );
1891 }
1892 else{
1893 navigator.notification.alert(
1894 "Erreur lors de la validation d'un invit\351 en ligne",
1895 alertDismissed,
1896 "Notification",
1897 "Ok"
1898 );
1899 }
1900 }
1901 });
1902 }
1903
1904
1905 $(document).on('vclick', '#infoGuestFooterBtnCheck', function(){
1906 var id = guestsList.id;
1907 validateGuest(id);
1908 });
1909
1910 /***************************************/
1911 /****** #region LOCAL *******/
1912 /***************************************/
1913
1914 /****** #subregion prestationsPageLocal *****/
1915 $(document).on('pagebeforeshow', '#prestationsPageLocal', function(){
1916 document.getElementById("PrestationsPageLocalTitle").innerHTML = "Mode hors ligne: " + window.localStorage.getItem("importedBaseName");
1917 });
1918
1919 $(document).on('vclick', '#prestationsPageLocalFooterBtnExport', function(){
1920 btnExportClick();
1921 });
1922
1923 $(document).on('vclick', '#backBtnPrestationsPageLocal', function(){
1924 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
1925 });
1926
1927 $(document).on('vclick', '#prestationsLocalList li a', function(){
1928 guestsList.prestationName = $(this)[0].querySelector("h3").textContent;
1929 guestsList.prestationId = $(this).attr('data-id');
1930 $('#guestsListLocal').empty();
1931
1932 if(guestsList.prestationId == 0 || guestsList.prestationId == null){
1933 parseGuestsListLocal(false);
1934 guestsList.prestations = false;
1935 }else{
1936 parseGuestsListLocal(true);
1937 guestsList.prestations = true;
1938 }
1939 });
1940
1941 $(document).on('vclick', '#moreOptionPrestationPageLocal', function(){
1942 guestsList.dialog = 7;
1943 setTimeout(function(){
1944 document.getElementById("moreOptionOverlayDivPrestationPageLocal").style.display="block";
1945 }, 50);
1946 document.getElementById("moreOptionDivPrestationPageLocal").style.display="block";
1947 });
1948
1949 $(document).on('vclick', '#moreOptionOverlayDivPrestationPageLocal', function(){
1950 guestsList.dialog = 0;
1951 document.getElementById("moreOptionDivPrestationPageLocal").style.display="none";
1952 setTimeout(function(){
1953 document.getElementById("moreOptionOverlayDivPrestationPageLocal").style.display="none";
1954 }, 50);
1955 });
1956
1957 $(document).on('vclick', '#prestationsPageLocalFooterBtnAccueil', function(){
1958 document.getElementById("moreOptionDivPrestationPage").style.display="none";
1959 setTimeout(function(){
1960 document.getElementById("moreOptionOverlayDivPrestationPage").style.display="none";
1961 }, 50);
1962
1963 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
1964 });
1965
1966 /****** #subregion guestsPageLocal *****/
1967 function parseGuestsListLocal(prestations){
1968 ajax.blockui();
1969 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
1970 $('#guestsListLocal').empty();
1971 if(prestations == "true"){
1972 db.transaction(function(tx) {
1973 tx.executeSql("select a.*, b.ID_STATUT_A39, b.ID as ID_A07 from A09_PARTICIPANT as a left join A07_INSCRIPTION as b on a.ID=b.ID_PARTICIPANT where PRESTATION_A10=? limit 100;", [guestsList.prestationId], function(tx, res) {
1974 for (i = 0; i < res.rows.length; i++) {
1975 $('#guestsListLocal').append('<li><a href="" data-id="' +
1976 res.rows.item(i).ID_A07 + '"><h3><i class="fa fa-user fa-2x"></i>' + res.rows.item(i).LastName + '<p>' + res.rows.item(i).FirstName + '</p></h3></a></li>');
1977 }
1978 guestsList.startRecord = 100;
1979 guestsList.nbRecord = res.rows.length;
1980
1981 });
1982 tx.executeSql("select count(*) as cnt from A09_PARTICIPANT as a left join A07_INSCRIPTION as b on a.ID=b.ID_PARTICIPANT where PRESTATION_A10=? limit 100;", [guestsList.prestationId], function(tx, res) {
1983 guestsList.nbParticipants = res.rows.item(0).cnt;
1984 document.getElementById("guestsPageLocalTitle").innerHTML = "Mode hors ligne: " + guestsList.prestationName;
1985 var text0 = " r\351sultat";
1986 if(guestsList.nbParticipants > 0){
1987 text0 = " r\351sultats";
1988 }
1989 document.getElementById("guestsPageLocalNbResults").innerHTML = guestsList.nbParticipants + text0;
1990 });
1991 });
1992 }
1993 else
1994 {
1995 db.transaction(function(tx)
1996 {
1997 tx.executeSql("select * from A09_PARTICIPANT limit 100;", [], function(tx, res) {
1998 for (i = 0; i < res.rows.length; i++) {
1999 $('#guestsListLocal').append('<li><a href="" data-id="' +
2000 res.rows.item(i).ID + '"><h3><i class="fa fa-user fa-2x"></i>' + res.rows.item(i).LastName + '<p>' + res.rows.item(i).FirstName + '</p></h3></a></li>');
2001 }
2002 guestsList.startRecord = 100;
2003 guestsList.nbRecord = res.rows.length;
2004
2005 });
2006 tx.executeSql("select count(*) as cnt from A09_PARTICIPANT;", [], function(tx, res) {
2007 guestsList.nbParticipants = res.rows.item(0).cnt;
2008 document.getElementById("guestsPageLocalTitle").innerHTML = "Mode hors ligne: " + window.localStorage.getItem("importedBaseName");
2009 var text0 = " r\351sultat";
2010 if(guestsList.nbParticipants > 0){
2011 text0 = " r\351sultats";
2012 }
2013 document.getElementById("guestsPageLocalNbResults").innerHTML = guestsList.nbParticipants + text0;
2014 });
2015 });
2016 }
2017 setTimeout(function(){
2018 $.mobile.changePage( "#guestsPageLocal", { transition: "slide", changeHash: false });
2019 $('#guestsListLocal').listview('refresh');
2020 $.unblockUI();
2021 }, 1000);
2022 }
2023
2024 function emptyGuestDataLocal(){
2025 $('#guestDataLocal').empty();
2026 $('#guestDataPrestationsListLocal').empty();
2027
2028 document.getElementById("infoGuestPageLocalName").innerHTML = "Nom Pr\351nom";
2029 document.getElementById("infoGuestPageLocalCategory").innerHTML = "Cat\351gorie";
2030
2031 $('#guestDataLocal').append(
2032 '<strong>Soci\351t\351: </strong><br/>' +
2033 '<strong>Email: </strong><br/>' +
2034 '<strong>T\351l\351phone: </strong><br/>'
2035 );
2036 }
2037
2038 $(document).on('pagebeforeshow', '#guestsPageLocal', function(){
2039 $('#guestsListLocal').listview('refresh');
2040 emptyGuestDataLocal();
2041 });
2042
2043 $(document).on('vclick', '#guestsPageLocalBackButton', function(){
2044 $("#guestsListLocal").empty();
2045
2046 if(guestsList.prestations || (!guestsList.prestations && guestsList.prestationId == 0)){
2047 $.mobile.changePage( "#prestationsPageLocal", { transition: "slide", reverse: true, changeHash: false });
2048 }
2049 else
2050 {
2051 $.mobile.changePage("#mainPage", { transition: "slide", reverse: true, changeHash: false });
2052 }
2053 });
2054
2055 $(document).on('vclick', '#guestsListLocal li a', function(){
2056 guestsList.id = $(this).attr('data-id');
2057 loadParticipantInfo();
2058 if(!guestsList.tablette){
2059 setTimeout(function(){
2060 $.mobile.changePage( "#infoGuestPageLocal", { transition: "slide", changeHash: false });
2061 }, 10);
2062 }
2063 });
2064
2065 $(document).on('vclick', '#moreOptionGuestsPageLocal', function(){
2066 guestsList.dialog = 8;
2067 setTimeout(function(){
2068 document.getElementById("moreOptionOverlayDivGuestsPageLocal").style.display="block";
2069 }, 50);
2070 document.getElementById("moreOptionDivGuestsPageLocal").style.display="block";
2071 });
2072
2073 $(document).on('vclick', '#moreOptionOverlayDivGuestsPageLocal', function(){
2074 guestsList.dialog = 0;
2075 document.getElementById("moreOptionDivGuestsPageLocal").style.display="none";
2076 setTimeout(function(){
2077 document.getElementById("moreOptionOverlayDivGuestsPageLocal").style.display="none";
2078 }, 50);
2079 });
2080
2081 $(document).on('vclick', '#guestsListLocalFooterBtnAccueil', function(){
2082 document.getElementById("moreOptionDivGuestsPageLocal").style.display="none";
2083 setTimeout(function(){
2084 document.getElementById("moreOptionOverlayDivGuestsPageLocal").style.display="none";
2085 }, 50);
2086
2087 $.mobile.changePage( "#mainPage", { transition: "slide", reverse: true, changeHash: false });
2088 });
2089
2090 $(document).on('vclick', '#infoGuestPageLocalBackButton', function(){
2091 $.mobile.changePage( "#guestsPageLocal", { transition: "slide", reverse: true, changeHash: false });
2092 });
2093
2094 /*********** #subregion Export **************/
2095 $(document).on('vclick', '#guestsListLocalFooterBtnExport', function(){
2096 btnExportClick();
2097 });
2098
2099 function btnExportClick(){
2100 $.mobile.silentScroll(0);
2101
2102 setTimeout(function(){ dialogLoginExport.show(); }, 50);
2103
2104 guestsList.dialog = 3;
2105
2106 var rememberMe = window.localStorage.getItem("rememberMe");
2107 if(rememberMe == "true"){
2108 document.getElementById("usernameExport").value = window.localStorage.getItem("username");
2109 document.getElementById("passwordExport").value = window.localStorage.getItem("password");
2110 }
2111
2112 $('#authenticationFormExport').on('submit', function(event) {
2113 event.preventDefault();
2114 $('#passwordExport').blur();
2115 setTimeout(function() {
2116 $('#btnConnexionExport').trigger('click');
2117 }, 50);
2118 });
2119 }
2120
2121 $(document).on('vclick', '#btnConnexionExport', function(){
2122 setTimeout(function(){ dialogLoginExport.hide(); }, 50)
2123
2124 guestsList.dialog = 0;
2125
2126 var form = $("#authenticationFormExport");
2127 var username = $("#usernameExport", form).val();
2128 var password = $("#passwordExport", form).val();
2129
2130 if(username != "" && password != "") {
2131 // Blocage de l'interface
2132 ajax.blockui();
2133 $.ajax({
2134 type: 'POST',
2135 url: url + 'authentication/authenticate',
2136 crossDomain: true,
2137 data: {login: username, password : password},
2138 dataType: 'json',
2139 success: function (result) {
2140 ajax.blockui();
2141 //Récupération du token d'authentification
2142 ApiToken = result;
2143
2144 window.localStorage.setItem("token", ApiToken);
2145 window.localStorage.setItem("tokenDate", new Date().toString());
2146
2147 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
2148
2149 db.transaction(function(tx) {
2150 tx.executeSql("select * from CHANGE_LIST;", [], function(tx, res) {
2151 var idList = [];
2152 for (i = 0; i < res.rows.length; i++) {
2153 idList.push(res.rows.item(i).ID);
2154 }
2155
2156 var tmp = JSON.stringify(idList);
2157
2158 $.ajax({
2159 type: 'POST',
2160 url: url + 'methods/MobileApp/SetPresenceList/',
2161 crossDomain: true,
2162 headers: {'AgoraEvent-Token': ApiToken},
2163 data: tmp,
2164 dataType: 'json',
2165 contentType: "application/json; charset=utf-8",
2166 success: function (result) {
2167 navigator.notification.alert(
2168 "Export termin\351!",
2169 alertDismissed,
2170 "Notification",
2171 "Ok"
2172 );
2173
2174 try{
2175 tx.executeSql("Delete from CHANGE_LIST;", [], function(tx, res) {});
2176 }
2177 catch(err){
2178 console.log(err);
2179 }
2180
2181 $.unblockUI();
2182 },
2183 error: function (request,error) {
2184 $.unblockUI();
2185 navigator.notification.alert(
2186 "Erreur lors de l'export des fichiers",
2187 alertDismissed,
2188 "Notification",
2189 "Ok"
2190 );
2191 }
2192 });
2193 });
2194
2195 tx.executeSql("select * from CHANGE_LIST_INSCRIPTION;", [], function(tx, res) {
2196 var idList = [];
2197 for (i = 0; i < res.rows.length; i++) {
2198 idList.push(res.rows.item(i).ID);
2199 }
2200
2201 var tmp = JSON.stringify(idList);
2202
2203 $.ajax({
2204 type: 'POST',
2205 url: url + 'methods/MobileApp/SetPresenceListInscription/',
2206 crossDomain: true,
2207 headers: {'AgoraEvent-Token': ApiToken},
2208 data: tmp,
2209 dataType: 'json',
2210 contentType: "application/json; charset=utf-8",
2211 success: function (result) {
2212 try{
2213 tx.executeSql("Delete from CHANGE_LIST_INSCRIPTION;", [], function(tx, res) {});
2214 }
2215 catch(err){
2216 console.log(err);
2217 }
2218 },
2219 error: function (request,error) {
2220 $.unblockUI();
2221 navigator.notification.alert(
2222 "Erreur lors de l'export des fichiers",
2223 alertDismissed,
2224 "Notification",
2225 "Ok"
2226 );
2227 }
2228 });
2229 });
2230
2231 tx.executeSql("select * from CHANGE_LIST_I42_INV_DATES_PRESENCE;", [], function(tx, res) {
2232 var list = [];
2233 for (i = 0; i < res.rows.length; i++) {
2234 var date = new Date(res.rows.item(i).DATE_PRESENCE.toString());
2235 res.rows.item(i).DATE_PRESENCE = "#" + date.getDate() + "/" + date.getMonth() + "/" + date.getFullYear() + " " + date.getHours() + ":" + date.getMinutes() + "#";
2236 list.push(res.rows.item(i));
2237 }
2238 var tmp = JSON.stringify(list);
2239
2240 $.ajax({
2241 type: 'POST',
2242 url: url + 'methods/MobileApp/SetInv_Dates_PresenceList/',
2243 crossDomain: true,
2244 headers: {'AgoraEvent-Token': ApiToken},
2245 data: tmp,
2246 dataType: 'json',
2247 contentType: "application/json; charset=utf-8",
2248 success: function (result) {
2249 try{
2250 tx.executeSql("Delete from CHANGE_LIST_I42_INV_DATES_PRESENCE;", [], function(tx, res) {});
2251 }
2252 catch(err){
2253 console.log(err);
2254 }
2255 },
2256 error: function (request,error) {
2257 $.unblockUI();
2258 navigator.notification.alert(
2259 "Erreur lors de l'export des fichiers",
2260 alertDismissed,
2261 "Notification",
2262 "Ok"
2263 );
2264 }
2265 });
2266 });
2267 });
2268 },
2269 error: function (request,error) {
2270 $.unblockUI();
2271 navigator.notification.alert(
2272 "Combinaison identifiants / mot de passe invalide",
2273 alertDismissed,
2274 "Notification",
2275 "Ok"
2276 );
2277 }
2278 });
2279 }
2280 else {
2281 //if the email and password is empty
2282 navigator.notification.alert(
2283 "Veuillez renseigner les champs d'authentification",
2284 alertDismissed,
2285 "Notification",
2286 "Ok"
2287 );
2288 }
2289 });
2290
2291 /*********** #subregion Check presence **************/
2292 $(document).on('vclick', '#infoGuestLocalFooterBtnCheck', function(){
2293 validateLocal();
2294 });
2295
2296 function showErrorScanPageLocal(){
2297 document.getElementById("scanResultText").innerHTML = "X";
2298 document.getElementById("scanPage").style.backgroundColor = "rgb(254,0,0)";
2299 document.getElementById("scanPageLinkGuest").style.display = "none";
2300 document.getElementById("scanPageTitle1").innerHTML = "Billet non valide";
2301 document.getElementById("scanPageTitle2").innerHTML = "Erreur:";
2302 $("#scanPageContent").click(scanAgainLocal);
2303 $("#scanPageLinkBack").click(function(){
2304 $.mobile.changePage( "#guestsPageLocal", { transition: "fade", changeHash: false });
2305 });
2306 document.getElementById("scanPageMessage").innerHTML = "Impossible d'identifier le num\351ro du billet, veuillez v\351rifier les informations de celui-ci";
2307
2308 $.mobile.changePage( "#scanPage", { transition: "fade", changeHash: false });
2309 guestsList.qrCode = 0;
2310 }
2311
2312 function showAlreadyScanPageLocal(){
2313 document.getElementById("scanResultText").innerHTML = "X";
2314 document.getElementById("scanPage").style.backgroundColor = "rgb(236,101,0)";
2315 document.getElementById("scanPageLinkGuest").style.display = "block";
2316 $("#scanPageLinkGuest").click(moreInfoScanLocal);
2317 $("#scanPageContent").click(scanAgainLocal);
2318 $("#scanPageLinkBack").click(function(){
2319 $.mobile.changePage( "#guestsPageLocal", { transition: "fade", changeHash: false });
2320 });
2321 document.getElementById("scanPageTitle1").innerHTML = "Billet d\351j\340 enregistr\351";
2322 document.getElementById("scanPageTitle2").innerHTML = "Alerte:";
2323 document.getElementById("scanPageMessage").innerHTML = "Le num\351ro du billet a d\351j\340 \351t\351 scann\351 auparavant";
2324
2325 $.mobile.changePage( "#scanPage", { transition: "fade", changeHash: false });
2326 guestsList.qrCode = 0;
2327 }
2328
2329 function showOkScanPageLocal(lastName, firstName){
2330 document.getElementById("scanResultText").innerHTML = "ok";
2331 document.getElementById("scanPage").style.backgroundColor = "rgb(133, 229, 55)";
2332 document.getElementById("scanPageLinkGuest").style.display = "block";
2333 $("#scanPageLinkBack").click(function(){
2334 $.mobile.changePage( "#guestsPageLocal", { transition: "fade", changeHash: false });
2335 });
2336
2337 document.getElementById("scanPageTitle1").innerHTML = lastName;
2338 document.getElementById("scanPageTitle2").innerHTML = firstName;
2339
2340 document.getElementById("scanPageMessage").innerHTML = "";
2341 $("#scanPageLinkGuest").click(moreInfoScanLocal);
2342 $("#scanPageContent").click(scanAgainLocal);
2343
2344 $.mobile.changePage( "#scanPage", { transition: "fade", changeHash: false });
2345 guestsList.qrCode = 0;
2346 }
2347
2348 function validateLocalPrestation(){
2349 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
2350 db.transaction(function(tx) {
2351 tx.executeSql("select * from A07_INSCRIPTION WHERE ID=?;", [guestsList.id], function(tx, res) {
2352 if(res.rows.length == 0){
2353 if(guestsList.qrCode == 1){
2354 showErrorScanPageLocal();
2355 }
2356 else{
2357 navigator.notification.alert(
2358 "Impossible d'identifier le participant",
2359 alertDismissed,
2360 "Notification",
2361 "Ok"
2362 );
2363 }
2364 }
2365 else if(res.rows.item(0).ID_STATUT_A39 != 3){
2366 ajax.blockuiNoMsg();
2367
2368 db.transaction(function(tx) {
2369 tx.executeSql("INSERT INTO CHANGE_LIST_INSCRIPTION (ID, ID_STATUT_A39) VALUES (?,?)", [guestsList.id, 3], function(tx, res) {
2370 });
2371
2372 var today = new Date();
2373 tx.executeSql("UPDATE A07_INSCRIPTION set ID_STATUT_A39=3, DatePresence=? WHERE ID =?", [today, guestsList.id], function(tx, res) {
2374 });
2375
2376 $("#guestsListLocal").listview("refresh");
2377
2378 if(guestsList.qrCode == 1){
2379 tx.executeSql("select LastName, FirstName from A09_PARTICIPANT as a left join A07_INSCRIPTION as b on a.ID=b.ID_PARTICIPANT WHERE b.ID=?;", [guestsList.id], function(tx, res) {
2380 showOkScanPageLocal(res.rows.item(0).LastName, res.rows.item(0).FirstName);
2381 });
2382 }else{
2383 loadParticipantInfo();
2384 document.getElementById("iconUserInfoGuestPageLocal").style.color = "green";
2385 }
2386
2387 setTimeout(function(){
2388 $.unblockUI();
2389 }, 200);
2390 }, function(e) {
2391 console.log("ERROR: " + e.message);
2392 });
2393 }else if(res.rows.item(0).ID_STATUT_A39 == 3){
2394 if(guestsList.qrCode == 1){
2395 showAlreadyScanPageLocal();
2396 }
2397 else{
2398 navigator.notification.alert(
2399 "Le participant est d\351j\340 pr\351sent",
2400 alertDismissed,
2401 "Notification",
2402 "Ok"
2403 );
2404 }
2405 }
2406 });
2407
2408 });
2409 }
2410
2411 function validateLocal(){
2412 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
2413 if(guestsList.prestations){
2414 db.transaction(function(tx) {
2415 // SI on scan un QRcode alors l'id récupéré est un ID_PARTICIPANT et non un ID de A07_INSCRIPTION
2416 // On va donc faire un select pour obtenir cet id
2417 if(guestsList.qrCode == 1){
2418 tx.executeSql("select ID from A07_INSCRIPTION WHERE ID_PARTICIPANT=?;", [guestsList.id], function(tx, res) {
2419 if(res.rows.length == 0){
2420 if(guestsList.qrCode == 1){
2421 showErrorScanPageLocal();
2422 }
2423 }else{
2424 guestsList.id = res.rows.item(0).ID;
2425 validateLocalPrestation();
2426 }
2427 });
2428 }
2429 else{
2430 validateLocalPrestation();
2431 }
2432 });
2433 }
2434 else{
2435 db.transaction(function(tx) {
2436 tx.executeSql("select FirstName, LastName, StatusID from A09_PARTICIPANT where ID=?;", [guestsList.id], function(tx, res) {
2437 if(res.rows.length == 0){
2438 if(guestsList.qrCode == 1){
2439 showErrorScanPageLocal();
2440 }
2441 else{
2442 navigator.notification.alert(
2443 "Impossible d'identifier le participant",
2444 alertDismissed,
2445 "Notification",
2446 "Ok"
2447 );
2448 }
2449 }
2450 else{
2451 var firstname = res.rows.item(0).FirstName;
2452 var lastname = res.rows.item(0).LastName;
2453 db.transaction(function(tx) {
2454 tx.executeSql("select * from I42_INV_DATES_PRESENCE where ID_PART_A09=?;", [guestsList.id], function(tx, res) {
2455 var today = new Date();
2456 if(res.rows.length == 0){
2457 ajax.blockuiNoMsg();
2458 var eventID = window.localStorage.getItem("eventId", guestsList.eventId);
2459 tx.executeSql("INSERT INTO CHANGE_LIST (ID, StatusID) VALUES (?,?)", [guestsList.id, 3], function(tx, res) {
2460 });
2461
2462 tx.executeSql("INSERT INTO I42_INV_DATES_PRESENCE (ID_PART_A09, DATE_PRESENCE, NUMERO_MANIFESTATION, STATUTPART_A09) VALUES (?,?,?,?)", [guestsList.id, today, eventID, 3], function(tx, res) {
2463 });
2464
2465 tx.executeSql("INSERT INTO CHANGE_LIST_I42_INV_DATES_PRESENCE (ID_PART_A09, DATE_PRESENCE, NUMERO_MANIFESTATION, STATUTPART_A09) VALUES (?,?,?,?)", [guestsList.id, today, eventID, 3], function(tx, res) {
2466 });
2467
2468 tx.executeSql("UPDATE A09_PARTICIPANT set StatusID=3 WHERE ID =?", [guestsList.id], function(tx, res) {
2469 });
2470
2471 tx.executeSql("UPDATE A09_PARTICIPANT set DatePresence=? WHERE ID =?", [today ,guestsList.id], function(tx, res) {
2472 });
2473
2474 $("#guestsListLocal").listview("refresh");
2475
2476 if(guestsList.qrCode == 1){
2477 showOkScanPageLocal(lastname, firstname);
2478 }else{
2479 loadParticipantInfo();
2480 }
2481
2482 setTimeout(function(){
2483 $.unblockUI();
2484 }, 200);
2485 }
2486 else{
2487 var datePresence = new Date(res.rows.item(0).DATE_PRESENCE);
2488 if (datePresence.getDate() != today.getDate() || datePresence.getMonth() != today.getMonth() || datePresence.getFullYear() != today.getFullYear()){
2489 ajax.blockuiNoMsg();
2490 var eventID = window.localStorage.getItem("eventId", guestsList.eventId);
2491
2492 tx.executeSql("INSERT INTO CHANGE_LIST (ID, StatusID) VALUES (?,?)", [guestsList.id, 3], function(tx, res) {
2493 });
2494
2495 tx.executeSql("INSERT INTO I42_INV_DATES_PRESENCE (ID_PART_A09, DATE_PRESENCE, NUMERO_MANIFESTATION, STATUTPART_A09) VALUES (?,?,?,?)", [guestsList.id, today, eventID, 3], function(tx, res) {
2496 });
2497
2498 tx.executeSql("INSERT INTO CHANGE_LIST_I42_INV_DATES_PRESENCE (ID_PART_A09, DATE_PRESENCE, NUMERO_MANIFESTATION, STATUTPART_A09) VALUES (?,?,?,?)", [guestsList.id, today, eventID, 3], function(tx, res) {
2499 });
2500
2501 $("#guestsListLocal").listview("refresh");
2502 if(guestsList.qrCode == 1){
2503 showOkScanPageLocal(lastname, firstname);
2504 }else{
2505 loadParticipantInfo();
2506 document.getElementById("iconUserInfoGuestPageLocal").style.color = "green";
2507 }
2508
2509 setTimeout(function(){
2510 $.unblockUI();
2511 }, 200);
2512 }else{
2513 if(guestsList.qrCode == 1){
2514 showAlreadyScanPageLocal();
2515 }
2516 else{
2517 navigator.notification.alert(
2518 "Le participant est d\351j\340 pr\351sent",
2519 alertDismissed,
2520 "Notification",
2521 "Ok"
2522 );
2523 }
2524 }
2525 }
2526 });
2527 });
2528 }
2529 });
2530 });
2531 }
2532 navigator.vibrate(500);
2533 }
2534
2535 function moreInfoScanLocal(){
2536 if(guestsList.tablette){
2537 $.mobile.changePage( "#guestsPageLocal", { transition: "slide", changeHash: false });
2538 }else{
2539 $.mobile.changePage( "#infoGuestPageLocal", { transition: "slide", changeHash: false });
2540 }
2541 }
2542
2543 function scanAgainLocal(){
2544 setTimeout(function(){
2545 scanQrCodeLocal();
2546 guestsList.qrCode = 1;
2547 guestsList.dialog = 10;
2548 }, 50);
2549 }
2550
2551 function scanQrCodeLocal(){
2552 guestsList.qrCode = 1;
2553 guestsList.dialog = 10;
2554 openBarcodeScan("scan", function (barcode) {
2555 guestsList.id = getParameterByName(barcode.text, "IdA09");
2556 if(guestsList.id != ""){
2557 validateLocal();
2558 }else{
2559 navigator.vibrate(500);
2560 showErrorScanPageLocal();
2561 }
2562 });
2563 }
2564
2565 $(document).on('vclick', '#guestsListLocalFooterBtnQrcode', function(){
2566 scanQrCodeLocal();
2567 });
2568
2569 /****** #subregion infoGuestPageLocal *****/
2570 function loadParticipantInfo(){
2571 $('#guestDataLocal').empty();
2572
2573 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
2574 var monthsInYear= new Array("janvier", "f\351vrier", "mars", "avril", "mai", "juin", "juillet", "ao\373t", "septembre", "octobre", "novembre", "d\351cembre");
2575
2576 if(guestsList.prestations){
2577 db.transaction(function(tx) {
2578 tx.executeSql("select *, ID_STATUT_A39 from A09_PARTICIPANT as a left join A07_INSCRIPTION as b on a.ID=b.ID_PARTICIPANT where a.ID=?;", [guestsList.id], function(tx, res) {
2579 document.getElementById("infoGuestPageLocalName").innerHTML = res.rows.item(0).FirstName + " " + res.rows.item(0).LastName;
2580 document.getElementById("infoGuestPageLocalCategory").innerHTML = res.rows.item(0).Category;
2581
2582 $('#guestDataLocal').append(
2583 '<strong>Soci\351t\351: </strong>' + res.rows.item(0).Societe + '<br/>' +
2584 '<strong>Email: </strong>' + res.rows.item(0).Email + '<br/>' +
2585 '<strong>T\351l\351phone: </strong>' + res.rows.item(0).Tel + '<br/>'
2586 );
2587 $('#guestDataPrestationsListLocal').empty();
2588 var statusID = res.rows.item(0).StatusID;
2589 var participantID = res.rows.item(0).ID;
2590 db.transaction(function(tx) {
2591 tx.executeSql("select count(*) as cnt from I42_INV_DATES_PRESENCE where ID_PART_A09=?;", [participantID], function(tx, res) {
2592 if(res.rows.item(0).cnt == 0){
2593 $('#guestDataPrestationsListLocal').append('<li><i class="fa fa-home homePrestation"></i><h3>Accueil Principal</h3>' +
2594 '<span class="infoGuestStatusLocal status' + statusID + '">[' + guestsList.statusPar[statusID] + ']</span>'+
2595 '<p>Date de validation:</p></li>');
2596 }else{
2597 db.transaction(function(tx) {
2598 tx.executeSql("select * from I42_INV_DATES_PRESENCE where ID_PART_A09=?;", [participantID], function(tx, res) {
2599 var tmpText = '<li><i class="fa fa-home homePrestation"></i><h3>Accueil Principal</h3>' +
2600 '<span class="infoGuestStatusLocal status' + res.rows.item(0).STATUS_PART_A09 + '">[' + guestsList.statusPar[res.rows.item(0).STATUTPART_A09] + ']</span>';
2601 for (i = 0; i < res.rows.length; i++) {
2602 var date = new Date(res.rows.item(i).DATE_PRESENCE);
2603 if(date.getFullYear() < 2000){
2604 tmpText += '<p>Date de validation:</p>';
2605 }else{
2606 tmpText += '<p>Date de validation: ' + date.getDate() + " " + monthsInYear[date.getMonth()] + " " + date.getFullYear() + '</p>';
2607 }
2608 }
2609 tmpText += '</li>';
2610 $('#guestDataPrestationsListLocal').append(tmpText);
2611 });
2612 });
2613 }
2614 });
2615 });
2616 });
2617
2618 tx.executeSql("select * from A07_INSCRIPTION where ID=?;", [guestsList.id], function(tx, res) {
2619 var id = res.rows.item(0).ID_PARTICIPANT;
2620
2621 db.transaction(function(tx) {
2622 tx.executeSql("select *, LIBELLE from A07_INSCRIPTION as a left join A10_PRESTATION as b on a.PRESTATION_A10=b.ID where a.ID_PARTICIPANT=?;", [id], function(tx, res) {
2623 for (i = 0; i < res.rows.length; i++) {
2624 var date2 = new Date(res.rows.item(i).DatePresence);
2625 if(date2.getFullYear() < 2000){
2626 $('#guestDataPrestationsListLocal').append('<li><i class="fa fa-ticket"></i><h3>' + res.rows.item(i).A10_LIBELLE + '</h3>' +
2627 '<span class="infoGuestStatusLocal status' + res.rows.item(i).ID_STATUT_A39 + '">[' + guestsList.statusPar[res.rows.item(i).ID_STATUT_A39] + ']</span>' +
2628 '<p>Date de validation: </p></li>');
2629
2630 }else{
2631 $('#guestDataPrestationsListLocal').append('<li><i class="fa fa-ticket"></i><h3>' + res.rows.item(i).LIBELLE + '</h3>' +
2632 '<span class="infoGuestStatusLocal status' + res.rows.item(i).ID_STATUT_A39 + '">[' + guestsList.statusPar[res.rows.item(i).ID_STATUT_A39] + ']</span>' +
2633 '<p>Date de validation: ' + date2.getDate() + " " + monthsInYear[date2.getMonth()] + " " + date2.getFullYear() + '</p></li>');
2634 }
2635 }
2636 $('#guestDataPrestationsListLocal').listview("refresh");
2637 });
2638 });
2639 });
2640 });
2641 }
2642 else{
2643 db.transaction(function(tx) {
2644 tx.executeSql("select * from A09_PARTICIPANT WHERE ID=?;", [guestsList.id], function(tx, res) {
2645 $('#guestDataLocal').empty();
2646 document.getElementById("infoGuestPageLocalName").innerHTML = res.rows.item(0).FirstName + " " + res.rows.item(0).LastName;
2647 document.getElementById("infoGuestPageLocalCategory").innerHTML = res.rows.item(0).Category;
2648
2649
2650 $('#guestDataLocal').append(
2651 '<strong>Soci\351t\351: </strong>' + res.rows.item(0).Societe + '<br/>' +
2652 '<strong>Email: </strong>' + res.rows.item(0).Email + '<br/>' +
2653 '<strong>T\351l\351phone: </strong>' + res.rows.item(0).Tel + '<br/>'
2654 );
2655
2656 var statusID = res.rows.item(0).StatusID;
2657
2658
2659 $('#guestDataPrestationsListLocal').empty();
2660
2661 tx.executeSql("select count(*) as cnt from I42_INV_DATES_PRESENCE where ID_PART_A09=?;", [guestsList.id], function(tx, res) {
2662 if(res.rows.item(0).cnt == 0){
2663 $('#guestDataPrestationsListLocal').append('<li><i class="fa fa-home homePrestation"></i><h3>Accueil Principal</h3>' +
2664 '<span class="infoGuestStatusLocal status' + statusID + '">[' + guestsList.statusPar[statusID] + ']</span>'+
2665 '<p>Date de validation:</p></li>');
2666 }else{
2667 tx.executeSql("select * from I42_INV_DATES_PRESENCE where ID_PART_A09=?;", [guestsList.id], function(tx, res) {
2668 var tmpText = '<li><i class="fa fa-home homePrestation"></i><h3>Accueil Principal</h3>' +
2669 '<span class="infoGuestStatusLocal status' + res.rows.item(0).STATUTPART_A09 + '">[' + guestsList.statusPar[res.rows.item(0).STATUTPART_A09] + ']</span>';
2670 for (i = 0; i < res.rows.length; i++) {
2671 var date = new Date(res.rows.item(i).DATE_PRESENCE);
2672 if(date.getFullYear() < 2000){
2673 tmpText += '<p>Date de validation:</p>';
2674 }else{
2675 tmpText += '<p>Date de validation: ' + date.getDate() + " " + monthsInYear[date.getMonth()] + " " + date.getFullYear() + '</p>';
2676 }
2677 }
2678 tmpText += '</li>';
2679 $('#guestDataPrestationsListLocal').append(tmpText);
2680 });
2681 }
2682
2683 tx.executeSql("select * from A07_INSCRIPTION as a left join A10_PRESTATION as b on a.PRESTATION_A10=b.ID where a.ID_PARTICIPANT=?;", [guestsList.id], function(tx, res) {
2684 for (i = 0; i < res.rows.length; i++) {
2685 var date2 = new Date(res.rows.item(i).DatePresence);
2686 if(date2.getFullYear() < 2000){
2687 $('#guestDataPrestationsListLocal').append('<li><i class="fa fa-ticket"></i><h3>' + res.rows.item(i).LIBELLE + '</h3>' +
2688 '<span class="infoGuestStatusLocal status' + res.rows.item(i).ID_STATUT_A39 + '">[' + guestsList.statusPar[res.rows.item(i).ID_STATUT_A39] + ']</span>' +
2689 '<p>Date de validation: </p></li>');
2690
2691 }else{
2692 $('#guestDataPrestationsListLocal').append('<li><i class="fa fa-ticket"></i><h3>' + res.rows.item(i).LIBELLE + '</h3>' +
2693 '<span class="infoGuestStatusLocal status' + res.rows.item(i).ID_STATUT_A39 + '">[' + guestsList.statusPar[res.rows.item(i).ID_STATUT_A39] + ']</span>' +
2694 '<p>Date de validation: ' + date2.getDate() + " " + monthsInYear[date2.getMonth()] + " " + date2.getFullYear() + '</p></li>');
2695 }
2696 }
2697 $('#guestDataPrestationsListLocal').listview("refresh");
2698 });
2699 });
2700 });
2701 });
2702 }
2703 }
2704
2705 /********** #subregion LOCAL GUEST LIST OPTION PANEL *********/
2706 $(document).on('vclick', '#guestsListLocalFooterBtnSearch', function(){
2707 $.mobile.silentScroll(0);
2708 setTimeout(function(){ dialogSearch.show(); }, 50);
2709 guestsList.dialog = 2;
2710
2711
2712 $('#searchForm').on('submit', function(event) {
2713 event.preventDefault();
2714
2715 $('#searchField').blur();
2716
2717 setTimeout(function() {
2718 $('#btnSearch').trigger( 'click' );
2719 }, 50);
2720 return false;
2721 });
2722 });
2723
2724 $(document).on('vclick', '#deleteBtnLocalSearchFilter', function() {
2725 $('#guestsPageLocalSearchFilter').fadeOut("slow");
2726 setTimeout(function(){
2727 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
2728
2729 if(prestations == "true" && guestsList.prestationId != 0){
2730 db.transaction(function(tx) {
2731 tx.executeSql("select a.*, b.ID_STATUT_A39 from A09_PARTICIPANT as a left join A07_INSCRIPTION as b on a.ID=b.ID_PARTICIPANT where PRESTATION_A10=? limit 100;", [guestsList.prestationId], function(tx, res) {
2732 $("#guestsListLocal").empty();
2733
2734 for (i = 0; i < res.rows.length; i++) {
2735 $('#guestsListLocal').append('<li><a href="" data-id="' +
2736 res.rows.item(i).ID + '"><h3><i class="fa fa-user fa-2x"></i>' + res.rows.item(i).LastName + '</h3><p>' + res.rows.item(i).FirstName + '</p></a></li>');
2737 }
2738 guestsList.startRecord = 100;
2739 guestsList.nbRecord = res.rows.length;
2740
2741 });
2742 tx.executeSql("select count(*) as cnt from A09_PARTICIPANT as a left join A07_INSCRIPTION as b on a.ID=b.ID_PARTICIPANT where PRESTATION_A10=? limit 100;", [guestsList.prestationId], function(tx, res) {
2743 guestsList.nbParticipants = res.rows.item(0).cnt;
2744 document.getElementById("guestsPageLocalNbResults").innerHTML = guestsList.nbParticipants + " r\351sultat(s)";
2745 });
2746 setTimeout(function(){
2747 $("#guestsListLocal").listview("refresh");
2748 }, 50);
2749 });
2750 }
2751 else
2752 {
2753 db.transaction(function(tx) {
2754 tx.executeSql("select * from A09_PARTICIPANT limit 100;" + guestsList.startRecord + ";", [], function(tx, res) {
2755 $("#guestsListLocal").empty();
2756 for (i = 0; i < res.rows.length; i++) {
2757 $('#guestsListLocal').append('<li><a href="" data-id="' +
2758 res.rows.item(i).ID + '"><h3><i class="fa fa-user fa-2x"></i>' + res.rows.item(i).LastName + '<p>' + res.rows.item(i).FirstName + '</p></h3></a></li>');
2759 }
2760 $("#guestsListLocal").listview("refresh");
2761 document.getElementById("guestsPageLocalNbResults").innerHTML = guestsList.nbParticipants + " r\351sultat(s)";
2762 });
2763 });
2764 }
2765 }, 200);
2766 });
2767
2768 /***********************************************/
2769 /********* #region Lazy Loading ********/
2770 /***********************************************/
2771 function addMore(page) {
2772 if(page[0].id == "guestsPage" && guestsList.dialog != 6){
2773 if(guestsList.list.length == guestsList.startRecord){
2774 $.mobile.loading("show", {
2775 text: "Chargement...",
2776 textVisible: true,
2777 theme: "b"
2778 });
2779
2780 guestsList.startRecord++;
2781 if(guestsList.prestations){
2782 var fullURLGet = 'methods/MobileApp/GetParticipants?id=' + guestsList.prestationId + '&idManif=' + guestsList.eventId + '&Prestation=true&StartRecord=' + guestsList.startRecord + '&RecordsCount=100';
2783
2784 $.ajax({
2785 type: 'GET',
2786 url: url + fullURLGet,
2787 crossDomain: true,
2788 headers: {'AgoraEvent-Token': ApiToken},
2789 success: function (result) {
2790 guestsList.startRecord += 100;
2791 guestsList.list = guestsList.list.concat(result);
2792
2793 $.each(result, function(i, row) {
2794 $('#guestsList').append('<li><a href="" data-id="' +
2795 row.ID + '"><h3><i class="fa fa-user fa-2x"></i>' + row.LastName + '<p>' + row.FirstName +
2796 '<span class="statusListView status' + row.StatusID + ' ">[' + guestsList.statusPar[row.StatusID] + ']</span></p></h3></a></li>');
2797 });
2798 $('#guestsList').listview('refresh');
2799 $.mobile.loading("hide");
2800 },
2801 error: function (request,error) {
2802 $.mobile.loading("hide");
2803 if(request.status == 401){
2804 // Unauthorized
2805 navigator.notification.alert(
2806 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
2807 alertDismissed,
2808 "Notification",
2809 "Ok"
2810 );
2811 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
2812 }
2813 navigator.notification.alert(
2814 "Erreur lors du chargement des invit\351s",
2815 alertDismissed,
2816 "Notification",
2817 "Ok"
2818 );
2819 }
2820 });
2821 }
2822 else{
2823 $.ajax({
2824 type: 'GET',
2825 url: url + 'methods/MobileApp/GetParticipants?id=' + guestsList.eventId + '&StartRecord=' + guestsList.startRecord + '&RecordsCount=100',
2826 crossDomain: true,
2827 headers: {'AgoraEvent-Token': ApiToken},
2828 success: function (result) {
2829 guestsList.startRecord += 100;
2830 guestsList.list = guestsList.list.concat(result);
2831
2832 $.each(result, function(i, row) {
2833 $('#guestsList').append('<li><a href="" data-id="' +
2834 row.ID + '"><h3><i class="fa fa-user fa-2x"></i>' + row.LastName + '<p>' + row.FirstName +
2835 '<span class="statusListView status' + row.StatusID + ' ">[' + guestsList.statusPar[row.StatusID] + ']</span></p></h3></a></li>');
2836 });
2837 $('#guestsList').listview('refresh');
2838 $.mobile.loading("hide");
2839 },
2840 error: function (request,error) {
2841 $.mobile.loading("hide");
2842 if(request.status == 401){
2843 // Unauthorized
2844 navigator.notification.alert(
2845 "Votre session a expir\351, veuillez-vous identifier \340 nouveau",
2846 alertDismissed,
2847 "Notification",
2848 "Ok"
2849 );
2850
2851 $.mobile.changePage( "#loginPage", { transition: "slide", reverse: true, changeHash: false });
2852 }
2853 navigator.notification.alert(
2854 "Erreur lors du chargement des invit\351s",
2855 alertDismissed,
2856 "Notification",
2857 "Ok"
2858 );
2859 }
2860 });
2861 }
2862
2863 }
2864 }
2865 else if(page[0].id == "guestsPageLocal" && guestsList.dialog != 6){
2866 if(guestsList.nbRecord == guestsList.startRecord){
2867 $.mobile.loading("show", {
2868 text: "Chargement...",
2869 textVisible: true,
2870 theme: "b"
2871 });
2872
2873 var db = window.sqlitePlugin.openDatabase({name: "my.db", location: 2, createFromLocation: 1});
2874
2875 if(guestsList.prestations){
2876 db.transaction(function(tx) {
2877 tx.executeSql("select *, ID_STATUT_A39 from A09_PARTICIPANT as a left join A07_INSCRIPTION as b on a.ID=b.ID_PARTICIPANT where PRESTATION_A10=? limit " + guestsList.nbRecord + ", 100;", [guestsList.prestationId], function(tx, res) {
2878 for (i = 0; i < res.rows.length; i++) {
2879 $('#guestsListLocal').append('<li><a href="" data-id="' +
2880 res.rows.item(i).ID + '"><h3><i class="fa fa-user fa-2x"></i>' + res.rows.item(i).LastName + '<p>' + res.rows.item(i).FirstName +
2881 '<span class="statusListView status' + res.rows.item(i).ID_STATUT_A39 + ' ">[' + guestsList.statusPar[res.rows.item(i).ID_STATUT_A39] + ']</span></p></h3></a></li>');
2882 }
2883 $("#guestsListLocal").listview("refresh");
2884 guestsList.startRecord += 100;
2885 guestsList.nbRecord += res.rows.length;
2886
2887 $.mobile.loading("hide");
2888 });
2889 });
2890 }
2891 else{
2892 db.transaction(function(tx) {
2893 tx.executeSql("select * from A09_PARTICIPANT limit " + guestsList.nbRecord + ", 100;", [], function(tx, res) {
2894 for (i = 0; i < res.rows.length; i++) {
2895 $('#guestsListLocal').append('<li><a href="" data-id="' +
2896 res.rows.item(i).ID + '"><h3><i class="fa fa-user fa-2x"></i>' + res.rows.item(i).LastName + '<p>' + res.rows.item(i).FirstName +
2897 '<span class="statusListView status' + res.rows.item(i).StatusID + ' ">[' + guestsList.statusPar[res.rows.item(i).StatusID] + ']</span></p></h3></a></li>');
2898 }
2899
2900 $("#guestsListLocal").listview("refresh");
2901 guestsList.startRecord += 100;
2902 guestsList.nbRecord += res.rows.length;
2903
2904 $.mobile.loading("hide");
2905 });
2906 });
2907 }
2908 }
2909 }
2910 }
2911
2912 /* scroll event */
2913 $(document).on("scrollstop", function (e) {
2914 var activePage = $.mobile.pageContainer.pagecontainer("getActivePage"),
2915 screenHeight = $.mobile.getScreenHeight(),
2916 contentHeight = $(".ui-content", activePage).outerHeight(),
2917 scrolled = $(window).scrollTop(),
2918 header = $(".ui-header", activePage).hasClass("ui-header-fixed") ? $(".ui-header", activePage).outerHeight() - 1 : $(".ui-header", activePage).outerHeight(),
2919 footer = $(".ui-footer", activePage).hasClass("ui-footer-fixed") ? $(".ui-footer", activePage).outerHeight() - 1 : $(".ui-footer", activePage).outerHeight(),
2920 scrollEnd = contentHeight - screenHeight + header + footer;
2921 if ((activePage[0].id == "guestsPage" || activePage[0].id == "guestsPageLocal") && scrolled >= scrollEnd) {
2922 addMore(activePage);
2923 }
2924 });
2925
2926 /***********************************************/
2927 /*********** #region Swipe ******************/
2928 /***********************************************/
2929 $("#loginPage").swiperight(function() {
2930 $.mobile.changePage("#mainPage", { transition: "slide", reverse: true, changeHash: false });
2931 });
2932
2933 $("#infoGuestPage").swiperight(function() {
2934 $.mobile.changePage("#guestsPage", { transition: "slide", reverse: true, changeHash: false });
2935 });
2936
2937 $("#eventsPage").swiperight(function() {
2938 $.mobile.changePage("#loginPage", { transition: "slide", reverse: true, changeHash: false });
2939 });