angular.module('odoo') /** * ----------------------------------------------------------------------------- * Description: Native SQL util instructions * ----------------------------------------------------------------------------- */ .factory('sqlFactory', function () { // Execute native SQL SELECT instruction var select = function(tableName, success, error) { var sql = 'SELECT * FROM ' + tableName; db.executeSql(sql, [], function(result) { success(result.rows); }, function(err) { error(err); }); }; // Execute native SQL SELECT instruction with a constraint var selectByConstraint = function(tableName, constraint, success, error) { var sql = 'SELECT * FROM ' + tableName + ' WHERE ' + constraint; db.executeSql(sql, [], function(result) { success(result.rows); }, function(err) { error(err); }); }; // Execute native SQL SELECT instruction with count instruction var count = function(tableName, success, error) { var sql = 'SELECT COUNT(*) AS total FROM ' + tableName; db.executeSql(sql, [], function(result) { success(result.rows.item(0).total); }, function(err) { error(err); }); }; return { select: select, selectByConstraint: selectByConstraint, count: count } }) /** * ----------------------------------------------------------------------------- * Description: Get user configuration from local database * ----------------------------------------------------------------------------- */ .factory('config', function (sqlFactory) { return function (success, error) { sqlFactory.select('user', function (users) { if (users.length == 1) { success(users.item(0)); } else { var configs = []; for (var i = 0; i < users.length; i++) { configs.push(users.item(i)) } success(configs); } }, function (err) { error(err); }); }; }) /** * ----------------------------------------------------------------------------- * Description: Async loop util v2 * ----------------------------------------------------------------------------- */ .factory('asyncLoop', function () { return function (iterations, func, callback) { var index = 0; var done = false; var loop = { next: function () { if (done) { return; } if (index < iterations) { index++; func(loop); } else { done = true; callback(); } }, iteration: function() { return index - 1; }, break: function() { done = true; callback(); } }; loop.next(); return loop; } }) /** * ----------------------------------------------------------------------------- * Description: Native camera manager * ----------------------------------------------------------------------------- */ .factory('camera', function ($cordovaCamera) { // Take a picture using native camera var takePicture = function (success, error) { var options = { quality: 75, destinationType: Camera.DestinationType.DATA_URL, sourceType: Camera.PictureSourceType.CAMERA, allowEdit: true, encodingType: Camera.EncodingType.JPEG, targetWidth: 300, targetHeight: 300, popoverOptions: CameraPopoverOptions, saveToPhotoAlbum: false, correctOrientation:true }; $cordovaCamera.getPicture(options).then(function(imageData) { success(imageData); }, function(err) { error(err); }); }; return { takePicture: takePicture } }) /** * ----------------------------------------------------------------------------- * Description: Native contacts manager * ----------------------------------------------------------------------------- */ .factory('contact', function ($cordovaContacts) { // Save customer information to device contacts var save = function (customer, success, error) { if(!customer.mobile && !customer.phone && !customer.email) { error(); return; } var contact = { name: { givenName: customer.name, familyName: '', formatted: '' }, nickname: '', phoneNumbers: [ { value: customer.phone, type: 'phone' }, { value: customer.mobile, type: 'mobile' } ], emails: [ { value: customer.email, type: 'home' } ], addresses: [ { type: 'home', formatted: '', streetAddress: customer.street, locality: customer.city, region: '', postalCode: '', country: 'Paraguay' } ], ims: null, organizations: null, birthday: null, note: null, photos: null, categories: null, urls: null }; $cordovaContacts.save(contact).then(function (result) { success(result); }, function (err) { error(err); }); }; return { save: save } });