diff --git a/www/js/controllers.js b/www/js/controllers.js index 75ac03dd89b344a534699d77e1e1f365ba440e9e..775ed855c8e69456fcfe74543a1d5a8dc087269b 100644 --- a/www/js/controllers.js +++ b/www/js/controllers.js @@ -1,41 +1,46 @@ angular.module('app.controllers', []) .controller('ceitificatorCtrl', function($scope, $ionicPlatform, EventsService) { - $ionicPlatform.ready(function (){ - $scope.events = EventsService.getEvents(); - console.log($scope.events); + $ionicPlatform.ready(function () { + $scope.events = EventsService.getEvents(); }); }) .controller('novoEventoCtrl', function($scope, EventsService) { $scope.formData = {}; - $scope.addNewEvent = function (){ + $scope.addNewEvent = function () { + // insere um novo evento no banco if ((!$scope.formData.eventName || $scope.formData.eventName.length === 0 || !$scope.formData.eventName.trim()) || (!$scope.formData.eventDesc || $scope.formData.eventDesc.length === 0 || !$scope.formData.eventDesc.trim()) || - (!$scope.formData.eventDate || $scope.formData.eventDate.length === 0 || !$scope.formData.eventDate.trim()) || - (!$scope.formData.eventPlace || $scope.formData.eventPlace.length === 0 || !$scope.formData.eventPlace.trim()) || - (!$scope.formData.eventHours || $scope.formData.eventHours.length === 0 || !$scope.formData.eventHours.trim())) - alert("WTF?"); - else - EventsService.addNewEvent({eventName: $scope.formData.eventName, eventDesc: $scope.formData.eventDesc, eventDate: $scope.formData.eventDate, eventPlace: $scope.formData.eventPlace, eventHours: $scope.formData.eventHours}); + (!$scope.formData.eventDate || $scope.formData.eventDate.length === 0 || !$scope.formData.eventDate.trim()) || + (!$scope.formData.eventPlace || $scope.formData.eventPlace.length === 0 || !$scope.formData.eventPlace.trim()) || + (!$scope.formData.eventHours || $scope.formData.eventHours.length === 0 || !$scope.formData.eventHours.trim())) + alert("WTF?"); // se deixou algum campo em branco, leva um alert na cara + else // se tá tudo certo, manda inserir o novo evento no banco + EventsService.addNewEvent({eventName: $scope.formData.eventName, eventDesc: $scope.formData.eventDesc, eventDate: $scope.formData.eventDate, eventPlace: $scope.formData.eventPlace, eventHours: $scope.formData.eventHours}); + }; + $scope.showCertText = function () { + // mostra o texto final (ou quase) que ficará no certificado + alert("Certificamos que !NOME! participou " + $scope.formData.eventDesc + " " + $scope.formData.eventName + ", realizada " + $scope.formData.eventDate + " na Universidade Federal do Paraná, " + $scope.formData.eventPlace + ", em Curitiba – PR, com a carga horária total de " + $scope.formData.eventHours + "."); }; - $scope.showCertText = function (){ - alert("Certificamos que !NOME! participou " + $scope.formData.eventDesc + " " + $scope.formData.eventName + ", realizada " + $scope.formData.eventDate + " na Universidade Federal do Paraná, " + $scope.formData.eventPlace + ", em Curitiba – PR, com a carga horária total de " + $scope.formData.eventHours + "."); - } }) -.controller('listaDePresenAEventoXCtrl', function($scope, PeopleService) { - $scope.people = PeopleService.getPeople(); - $scope.scan = function(){ +.controller('listaDePresenAEventoXCtrl', function($scope, PeopleService, eventX) { + $scope.eventX = eventX; + $scope.people = PeopleService.getPeople(eventX.id); + $scope.scan = function() { + // faz o scan do qr code e marca a presença da pessoa cordova.plugins.barcodeScanner.scan( function (result) { - console.log(result.text.split(',')); - PeopleService.addNewPerson({name: result.text.split(',')[0].trim(), grr: result.text.split(',')[1].trim(), email: result.text.split(',')[2].trim()}); - $scope.people = PeopleService.getPeople(); + if (result && result.text.split(',').length == 3) { + // pega o que veio do scanner, separa nos devidos campos e insere no banco + PeopleService.addPersonInEvent({name: result.text.split(',')[0].trim(), grr: result.text.split(',')[1].trim(), email: result.text.split(',')[2].trim()}, eventX.id); + } }, function (error) { alert("Scanning failed: " + error); } ); + $scope.people = PeopleService.getPeople(eventX.id); }; }); diff --git a/www/js/routes.js b/www/js/routes.js index 6fc1e0943ddf51f2746a6a16ca2732ff8de32efb..ce8035f7b38899934c5cfefa4178567483d5a78e 100644 --- a/www/js/routes.js +++ b/www/js/routes.js @@ -8,8 +8,6 @@ angular.module('app.routes', []) // Each state's controller can be found in controllers.js $stateProvider - - .state('ceitificator', { url: '/home', templateUrl: 'templates/ceitificator.html', @@ -21,6 +19,7 @@ angular.module('app.routes', []) templateUrl: 'templates/novoEvento.html', controller: 'novoEventoCtrl' }) + .state('listaDePresenAEventoX', { url: '/presenca/:eventId', templateUrl: 'templates/listaDePresenAEventoX.html', @@ -34,6 +33,4 @@ angular.module('app.routes', []) $urlRouterProvider.otherwise('/home'); - - }); diff --git a/www/js/services.js b/www/js/services.js index 2e2aa8cdb52b5f2d0b735efc3a35a8d729a8b41b..dd76b8a36075aef3af7e8dcd622aefafcc8453fd 100644 --- a/www/js/services.js +++ b/www/js/services.js @@ -1,65 +1,108 @@ angular.module('app.services', []) -.factory('BlankFactory', [function(){ +.factory('BlankFactory', [function() { }]) -.service('BlankService', [function(){ +.service('BlankService', [function() { }]) -.service('EventsService', function($cordovaSQLite) { +.service('EventsService', function($cordovaSQLite, $q) { return { getEvents: function() { - events = []; + // pega no banco todos os eventos e retorna + var events = []; var db = $cordovaSQLite.openDB({name: 'ceitificator.db', iosDatabaseLocation: 'default'}); $cordovaSQLite.execute(db, "SELECT * FROM events") - .then(function(res){ - for(var i = 0; i < res.rows.length; i++){ + .then(function(res) { + for(var i = 0; i < res.rows.length; i++) { events.push(res.rows.item(i)); } - }, - function(err){ - console.log("Error"); + }, function(err) { + console.log(err); }); return events; }, - addNewEvent: function(event){ + addNewEvent: function(event) { + // adiciona um novo evento no banco var db = $cordovaSQLite.openDB({name: 'ceitificator.db', iosDatabaseLocation: 'default'}); var query = "INSERT INTO events (name, desc, date, place, hours) VALUES (?,?,?,?,?)"; $cordovaSQLite.execute(db, query, [event.eventName, event.eventDesc, event.eventDate, event.eventPlace, event.eventHours]) - .then(function(res){ + .then(function(res) { console.log("res: " + res); - }, function (err){ + }, function (err) { console.error(err); }); + }, + getEventById: function(eventId) { + // dado um id, retorna a palestra com o mesmo id + var dfd = $q.defer(); + var db = $cordovaSQLite.openDB({name: 'ceitificator.db', iosDatabaseLocation: 'default'}); + var query = "SELECT * FROM events WHERE id=\"" + eventId + "\""; + $cordovaSQLite.execute(db, query) + .then(function(res) { + console.log(res.rows); + dfd.resolve(res.rows.item(0)); + }, function(err) { + console.log(err); + }); + return dfd.promise } - }; + } }) .service('PeopleService', function($cordovaSQLite) { return { - getPeople: function() { - people = []; + getPeople: function(eventId) { + // pega no banco todas as pessoas + var people = []; var db = $cordovaSQLite.openDB({name: 'ceitificator.db', iosDatabaseLocation: 'default'}); - $cordovaSQLite.execute(db, "SELECT * FROM people") - .then(function(res){ - for(var i = 0; i < res.rows.length; i++){ + $cordovaSQLite.execute(db, "SELECT people.* FROM people, people_events WHERE people.id=people_events.person_id AND people_events.event_id=" + eventId) + .then(function(res) { + for(var i = 0; i < res.rows.length; i++) { people.push(res.rows.item(i)); } - }, - function(err){ - console.log("Error"); + }, function(err) { + console.log(err); }); return people; }, - addNewPerson: function(person){ + addPersonInEvent: function(person, eventId) { + // procura a pessoa, se existir, insere direto na tabela people_events, se não existir, cria a pessoa primeiro var db = $cordovaSQLite.openDB({name: 'ceitificator.db', iosDatabaseLocation: 'default'}); - var query = "INSERT INTO people (name, grr, email) VALUES (?,?,?)"; - $cordovaSQLite.execute(db, query, [person.name, person.grr, person.email]) - .then(function(res){ - console.log("res: " + res); - }, function (err){ + var query = "SELECT * FROM people WHERE name=\"" + person.name + "\"AND grr=\"" + person.grr + "\"AND email=\"" + person.email + "\""; + $cordovaSQLite.execute(db, query) + .then(function(res) { + if (res.rows.length == 0) { + console.log("pessoa não existe"); + query = "INSERT INTO people (name, grr, email) VALUES (?,?,?)"; + $cordovaSQLite.execute(db, query, [person.name, person.grr, person.email]) + .then(function(res) { + console.log("id: " + res.insertId); + query = "INSERT INTO people_events (event_id, person_id) VALUES (?,?)"; + $cordovaSQLite.execute(db, query, [eventId, res.insertId]) + .then(function(res) { + console.log("inseriu em people_events"); + }, function (err) { + console.error(err); + }); + }, function (err) { + console.error(err); + }); + } + else{ + console.log("pessoa já existe:" + res.rows.item(0)); + console.log("id: " + res.rows.item(0).id); + query = "INSERT INTO people_events (event_id, person_id) VALUES (?,?)"; + $cordovaSQLite.execute(db, query, [eventId, res.rows.item(0).id]) + .then(function(res) { + console.log("inseriu em people_events"); + }, function (err) { + console.error(err); + }); + } + }, function (err) { console.error(err); }); }