Last active
October 16, 2017 07:11
-
-
Save ahaneef29/d3bad38a93be0ab9a9e5140cc62ea3fb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.factory('appSettings', ['$q', function ($q) { | |
var settingService = { | |
debugMode: true, | |
dbName: "gwu_mobile_v1", | |
defaultUserId: "00000000-0000-0000-0000-000000000000", | |
googleGeoCodeApiUrl: 'http://maps.googleapis.com/maps/api/geocode/json?', | |
pageSize: 12, | |
numberOfRecordsPerRowPhone: 3, | |
pageSizeTablet: 15, | |
numberOfRecordsPerRowTablet: 5, | |
googleWebAppOauthClientId: '379198281295-lo39cp5oaakhe9s2oja0umfl9envb87u.apps.googleusercontent.com', | |
defaultFontSize: 4 //4,6,8 i.e low, medium, high | |
}; | |
settingService.baseUrl = 'http://www.matjery.ae'; | |
// settingService.baseUrl = 'http://10.10.10.154:10002'; | |
settingService.apiURL = settingService.baseUrl + "/api/"; | |
return settingService; | |
}]) | |
.factory('dbStructure', function () { | |
var _appSettings = 'appSettings', | |
_topics = 'topics', | |
_localeStringResource = "localeStringResource", | |
_categories = "categories", | |
_slider = 'slider', | |
_vendors = 'vendors', | |
_products = 'products', | |
_constants = 'constants', | |
_campaigns = 'campaigns', | |
_customer = 'customer'; | |
return { | |
schema: { | |
stores: [{ | |
name: _appSettings, | |
keyPath: 'key' | |
}, | |
{ | |
name: _customer, | |
keyPath: 'id' | |
}, { | |
name: _constants, | |
keyPath: 'id', | |
indexes: [{ | |
name: 'groupName', | |
keyPath: 'groupName' | |
}] | |
}, | |
{ | |
name: _localeStringResource, | |
keyPath: 'language', | |
indexes: [{ | |
name: 'language', | |
keyPath: 'language' | |
}] | |
}, | |
{ | |
name: _topics, | |
keyPath: 'id', | |
indexes: [{ | |
name: 'id', | |
keyPath: 'id' | |
}, { | |
name: 'systemName', | |
keyPath: 'systemName' | |
}] | |
}, | |
{ | |
name: _categories, | |
keyPath: 'type' | |
}, { | |
name: _vendors, | |
keyPath: 'id' | |
}, { | |
name: _campaigns, | |
keyPath: 'id' | |
}, { | |
name: _products, | |
keyPath: 'id', | |
autoIncrement: true, | |
indexes: [{ | |
name: 'type', | |
keyPath: 'type' | |
}] | |
}, { | |
name: _slider, | |
autoIncrement: true, | |
keyPath: 'id' | |
} | |
] | |
}, | |
tables: { | |
appSettings: _appSettings, | |
customer: _customer, | |
localeStringResource: _localeStringResource, | |
topics: _topics, | |
slider: _slider, | |
vendors: _vendors, | |
products: _products, | |
constants: _constants, | |
campaigns: _campaigns, | |
categories: _categories | |
}, | |
ignoreList: { | |
//customer: ['accessToken', 'apiIV', 'apiKey', 'email', 'mobile', 'cardExpiryDate', 'dateOfBirth', 'displayName', 'mobileNumber', 'nationality', 'gender', 'udbNumber_int', 'idn', 'pran', 'fileNumber', 'issueDate', 'expiryDate'] | |
} | |
}; | |
}) | |
.factory('dbService', ['appSettings', 'dbStructure', 'cryptoHelper', '$filter', function (appSettings, dbStructure, cryptoHelper, $filter) { | |
var options = {}; | |
if (window.device && window.device.platform == "Android" && window.device.version.indexOf('4.2.') == 0) { | |
options = { | |
mechanisms: ['indexeddb', 'websql', 'localstorage'] | |
}; | |
} | |
var _db = new ydn.db.Storage(appSettings.dbName, dbStructure.schema, options), | |
_put = function (storeName, opts) { | |
var data = opts['value']; | |
if (opts['ignoreList']) { | |
// encrypt the object before inserting | |
data = cryptoHelper.encrypt(opts['value'], opts['ignoreList']); | |
} | |
if (opts['key']) { | |
return _db.put(storeName, data, opts['key']).done(opts['callback']); | |
} else { | |
return _db.put(storeName, data).done(opts['callback']); | |
} | |
}, | |
_get = function (storeName, key, opts) { | |
if (opts['ignoreList']) { | |
_db.get(storeName, key).done(function (result) { | |
var callback = opts['callback']; | |
if (callback) { | |
// decrypt the object before returning | |
callback(result ? cryptoHelper.decrypt(result, opts['ignoreList']) : null); | |
} | |
}); | |
} else { | |
_db.get(storeName, key).done(opts['callback']); | |
} | |
}, | |
_getDynamic = function (storeName, opts) { | |
var q; | |
if (opts['field']) { | |
q = _db.from(storeName).where(opts['field'], opts['operator'], opts['value']); | |
} else { | |
q = _db.from(storeName); | |
} | |
if (opts['top']) { | |
q.list(opts['top']).done(function (result) { | |
if (opts['callback']) { | |
opts['callback'](opts['ignoreList'] ? cryptoHelper.decryptList(result, opts['ignoreList']) : result); | |
} | |
}); | |
} else { | |
q.list().done(function (result) { | |
if (opts['callback']) { | |
opts['callback'](opts['ignoreList'] ? cryptoHelper.decryptList(result, opts['ignoreList']) : result); | |
} | |
}); | |
} | |
}, | |
_remove = function (storeName, key, callback) { | |
return _db.remove(storeName, key).done(callback); | |
}, | |
_removeAll = function (storeName, callback) { | |
return _db.clear(storeName).done(callback); | |
}, | |
_count = function (storeName, opts) { | |
if (opts['key']) { | |
_db.count(storeName, ydn.db.KeyRange.only(opts['key'])).done(opts['callback']); | |
} else { | |
_db.count(storeName).done(opts['callback']); | |
} | |
}; | |
return { | |
put: _put, | |
get: _get, | |
getDynamic: _getDynamic, | |
remove: _remove, | |
log: function (msg) { | |
if (appSettings.debugMode) { | |
//console..log(msg); | |
} | |
}, | |
appSettings: { | |
put: function (setting, callback) { | |
_put(dbStructure.tables.appSettings, { | |
value: setting, | |
callback: callback | |
}); | |
}, | |
load: function (key, callback) { | |
_get(dbStructure.tables.appSettings, key, { | |
callback: callback | |
}); | |
}, | |
remove: function (key, callback) { | |
return _remove(dbStructure.tables.appSettings, key, callback); | |
} | |
}, | |
customer: { | |
ignoreList: dbStructure.ignoreList.customer, | |
put: function (obj, callback) { | |
return _put(dbStructure.tables.customer, { | |
value: obj, | |
ignoreList: this.ignoreList, | |
callback: callback | |
}); | |
}, | |
load: function (key, callback) { | |
_get(dbStructure.tables.customer, key, { | |
ignoreList: this.ignoreList, | |
callback: callback | |
}); | |
}, | |
loadDynamic: function (callback) { | |
_getDynamic(dbStructure.tables.customer, { | |
ignoreList: this.ignoreList, | |
callback: callback | |
}); | |
}, | |
remove: function (key, callback) { | |
_remove(dbStructure.tables.customer, key, callback); | |
} | |
}, | |
localeStringResource: { | |
put: function (obj, callback) { | |
_put(dbStructure.tables.localeStringResource, { | |
value: obj, | |
callback: callback | |
}); | |
}, | |
count: function (callback) { | |
_count(dbStructure.tables.localeStringResource, { | |
callback: callback | |
}); | |
}, | |
load: function (key, callback) { | |
_get(dbStructure.tables.localeStringResource, key, { | |
callback: callback | |
}); | |
}, | |
removeAll: function (callback) { | |
_removeAll(dbStructure.tables.localeStringResource, callback); | |
} | |
}, | |
categories: { | |
put: function (obj, callback) { | |
return _put(dbStructure.tables.categories, { | |
value: obj, | |
callback: callback | |
}); | |
}, | |
count: function (callback) { | |
_count(dbStructure.tables.categories, { | |
callback: callback | |
}); | |
}, | |
load: function (key, callback) { | |
_get(dbStructure.tables.categories, key, { | |
callback: callback | |
}); | |
}, | |
removeAll: function (callback) { | |
_removeAll(dbStructure.tables.categories, callback); | |
} | |
}, | |
products: { | |
put: function (obj, callback) { | |
_put(dbStructure.tables.products, { | |
value: obj, | |
callback: callback | |
}); | |
}, | |
count: function (callback) { | |
_count(dbStructure.tables.products, { | |
callback: callback | |
}); | |
}, | |
loadDynamic: function (key, callback) { | |
_getDynamic(dbStructure.tables.products, { | |
top: '1', | |
field: 'type', | |
operator: '=', | |
value: key, | |
callback: callback | |
}); | |
}, | |
load: function (key, callback) { | |
_get(dbStructure.tables.products, key, { | |
callback: callback | |
}); | |
}, | |
removeAll: function (callback) { | |
return _removeAll(dbStructure.tables.products, callback); | |
} | |
}, | |
topics: { | |
put: function (obj, callback) { | |
_put(dbStructure.tables.topics, { | |
value: obj, | |
callback: callback | |
}); | |
}, | |
count: function (callback) { | |
_count(dbStructure.tables.topics, { | |
callback: callback | |
}); | |
}, | |
load: function (key, callback) { | |
_get(dbStructure.tables.topics, key, { | |
callback: callback | |
}); | |
}, | |
loadBySystemName: function (key, callback) { | |
_getDynamic(dbStructure.tables.topics, { | |
field: 'systemName', | |
operator: '=', | |
value: key, | |
callback: callback | |
}); | |
}, | |
removeAll: function (callback) { | |
_removeAll(dbStructure.tables.topics, callback); | |
} | |
}, | |
campaigns: { | |
put: function (obj, callback) { | |
_put(dbStructure.tables.campaigns, { | |
value: obj, | |
callback: callback | |
}); | |
}, | |
count: function (callback) { | |
_count(dbStructure.tables.campaigns, { | |
callback: callback | |
}); | |
}, | |
load: function (key, callback) { | |
_get(dbStructure.tables.campaigns, key, { | |
callback: callback | |
}); | |
}, | |
loadAll: function (callback) { | |
_db.from(dbStructure.tables.campaigns).list() | |
.done(function (results) { | |
callback(results); | |
}); | |
}, | |
removeAll: function (callback) { | |
_removeAll(dbStructure.tables.campaigns, callback); | |
} | |
}, | |
constants: { | |
put: function (obj, callback) { | |
_put(dbStructure.tables.constants, { | |
value: obj, | |
callback: callback | |
}); | |
}, | |
count: function (callback) { | |
_count(dbStructure.tables.constants, { | |
callback: callback | |
}); | |
}, | |
//load: function (key, callback) { | |
// _get(dbStructure.tables.constants, key, { | |
// callback: callback | |
// }); | |
//}, | |
load: function (opt) { | |
if (opt['filters'] && opt['filters'].key && opt['filters'].value) { | |
var key_range = ydn.db.KeyRange.only(opt['filters'].value); | |
_db.values(new ydn.db.IndexValueIterator(dbStructure.tables.constants, opt['filters'].key, key_range)).done(opt['callback']); | |
} else { | |
// added limit value of 5000 because YDN-DB default is 100 | |
_db.values(dbStructure.tables.constants, null, 5000).always(opt['callback']); | |
} | |
}, | |
loadAll: function (callback) { | |
//by default returns 100 per api | |
_db.from(dbStructure.tables.constants).list(5000) | |
.done(function (results) { | |
callback(results); | |
}); | |
}, | |
removeAll: function (callback) { | |
_removeAll(dbStructure.tables.constants, callback); | |
} | |
}, | |
slider: { | |
put: function (obj, callback) { | |
_put(dbStructure.tables.slider, { | |
value: obj, | |
callback: callback | |
}); | |
}, | |
loadAll: function (callback) { | |
_db.from(dbStructure.tables.slider).list() | |
.done(function (results) { | |
callback(results); | |
}); | |
}, | |
removeAll: function (callback) { | |
_removeAll(dbStructure.tables.slider, callback); | |
} | |
}, | |
vendors: { | |
put: function (obj, callback) { | |
_put(dbStructure.tables.vendors, { | |
value: obj, | |
callback: callback | |
}); | |
}, | |
load: function (key, callback) { | |
_get(dbStructure.tables.vendors, key, { | |
callback: callback | |
}); | |
}, | |
loadByPagingMerchants: function (pageIndex, pageSize, callback) { | |
//v.registerationTypeId === 1 || v.registerationTypeId === 0; | |
var key_range = ydn.db.KeyRange.bound(0, 1) | |
return _db.values(dbStructure.tables.vendors, 'registerationTypeId', key_range, pageSize, pageIndex) | |
.then(function (record) { | |
if (callback) { | |
callback(record); | |
} | |
}); | |
}, | |
loadByPagingFoundations: function (pageIndex, pageSize, callback) { | |
//v.registerationTypeId === 1 || v.registerationTypeId === 0; | |
var key_range = ydn.db.KeyRange.only(2) | |
return _db.values(dbStructure.tables.vendors, 'registerationTypeId', key_range, pageSize, pageIndex) | |
.then(function (record) { | |
if (callback) { | |
callback(record); | |
} | |
}); | |
}, | |
countMerchants: function (callback) { | |
//v.registerationTypeId === 1 || v.registerationTypeId === 0; | |
var key_range = ydn.db.KeyRange.bound(1) | |
_db.count(dbStructure.tables.vendors, key_range) | |
.done(callback); | |
}, | |
countFoundations: function (callback) { | |
var key_range = ydn.db.KeyRange.only(2) | |
_db.count(dbStructure.tables.vendors, key_range) | |
.done(callback); | |
}, | |
loadAll: function (callback) { | |
_db.from(dbStructure.tables.vendors).list(10000) | |
.done(function (results) { | |
callback(results); | |
}); | |
}, | |
removeAll: function (callback) { | |
return _removeAll(dbStructure.tables.vendors, callback); | |
}, | |
remove: function (key, callback) { | |
return _remove(dbStructure.tables.vendors, key).done(callback); | |
} | |
} | |
}; | |
}]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment