Advertisement
Guest User

Untitled

a guest
Jun 7th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 135.30 KB | None | 0 0
  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.  
  59. var 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. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement