angular.module('odoo') /** * ----------------------------------------------------------------------------- * Description: Local storage manager for customers data * ----------------------------------------------------------------------------- */ .factory('customersStorageFactory', function ($localStorage) { var configuration = $localStorage; /** * */ var save = function (data, success, error) { var query = null; if (data.id) { query = squel.update() .table('partner') .set('remote_id', data.remote_id ? data.remote_id : 0) .set('modified', 1) .set('name', data.name) .set('city', data.city ? data.city : null) .set('mobile', data.mobile ? data.mobile : null) .set('phone', data.phone ? data.phone : null) .set('fax', data.fax ? data.fax : null) .set('email', data.email ? data.email : null) .set('street', data.street ? data.street : null) .set('street2', data.street2 ? data.street2 : null) .set('image_medium', data.image_medium ? data.image_medium : null) .set('image_small', data.image_small ? data.image_small : null) .set('comment', data.comment ? data.comment : null) .set('customer', 1) .set('employee', 0) .set('is_company', 0) .set('partner_latitude', data.partner_latitude ? data.partner_latitude : 0) .set('partner_longitude', data.partner_longitude ? data.partner_longitude : 0) .set('date_localization', data.date_localization ? data.date_localization : null) .where('id = ?', data.id) .toParam(); } else { query = squel.insert() .into('partner') .set('remote_id', data.remote_id ? data.remote_id : 0) .set('name', data.name) .set('city', data.city ? data.city : null) .set('mobile', data.mobile ? data.mobile : null) .set('phone', data.phone ? data.phone : null) .set('fax', data.fax ? data.fax : null) .set('email', data.email ? data.email : null) .set('street', data.street ? data.street : null) .set('street2', data.street2 ? data.street2 : null) .set('image_medium', data.image_medium ? data.image_medium : null) .set('image_small', data.image_small ? data.image_small : null) .set('comment', data.comment ? data.comment : null) .set('customer', 1) .set('employee', 0) .set('is_company', 0) .set('debit', data.debit) .set('debit_limit', data.debit_limit) .set('opportunity_count', data.opportunity_count) .set('contracts_count', data.contracts_count) .set('journal_item_count', data.journal_item_count) .set('meeting_count', data.meeting_count) .set('phonecall_count', data.phonecall_count) .set('sale_order_count', data.sale_order_count) .set('total_invoiced', data.total_invoiced) .set('type', data.type ? data.type : 'contact') .set('active', data.active ? data.active : 1) .set('partner_latitude', data.partner_latitude ? data.partner_latitude : 0) .set('partner_longitude', data.partner_longitude ? data.partner_longitude : 0) .set('date_localization', data.date_localization ? data.date_localization : null) .set('company_id', angular.isArray(data.company_id) ? data.company_id[0] : configuration.company_id) .set('create_uid', angular.isArray(data.create_uid) ? data.create_uid[0] : configuration.id) .toParam(); } db.executeSql(query.text, query.values, function (result) { success(query.text.startsWith('INSERT') ? result.insertId : data.id); }, function (err) { console.log(err); error(err); }); }; /** * */ var get = function (id, success, error) { var query = squel.select() .from('partner') .where('id = ?', id) .toParam(); db.executeSql(query.text, query.values, function (result) { if (result.rows.length == 0) { return success({}); } success(result.rows.item(0)); }, function (err) { error(err); }) } /** * */ var getAll = function (success, error) { var query = squel.select() .from('partner') .toParam(); db.executeSql(query.text, query.values, function (result) { var data = []; for (var i = 0; i < result.rows.length; i++) { data.push(result.rows.item(i)); } success(data); }, function (err) { error(err); }); } /** * */ var remove = function (data, success, error) { var query = null; if (data.remote_id) { query = squel.update() .table('partner') .set('modified', 2) .where('id = ?', data.id) .toParam(); } else { query = squel.delete() .from('partner') .where('id = ?', data.id) .toParam(); } db.executeSql(query.text, query.values, function (result) { success(result.rowsAffected); }, function (err) { error(err); }); }; /** * */ var removeAll = function (success, error) { var query = squel.delete() .from('partner') .where('customer = ?', 1) .toParam(); db.executeSql(query.text, query.values, function (result) { success(result.rowsAffected); }, function (err) { error(err); }); }; return { save: save, get: get, getAll: getAll, remove: remove, removeAll: removeAll } });