123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- /**
- * Created by robin on 12/11/16.
- */
-
- (function () {
- 'use strict';
- angular.module('luticate2Utils')
- .factory('luWebApiCrudDataAccess', ['luWebApiDataAccess', '$q', 'luUtilsDataAccess',
- function (luWebApiDataAccess, $q, luUtilsDataAccess) {
-
- var luWebApiCrudDataAccess = {};
-
- luWebApiCrudDataAccess.create = function (entry_point) {
- var DataAccess = luWebApiDataAccess.create(entry_point);
-
-
- DataAccess._initModel = function(model)
- {
- if (model == null) {
- return null;
- }
- model = angular.copy(model);
- delete model.id;
- delete model.updatedAt;
- delete model.createdAt;
- delete model._itemType;
- delete model.toString;
- return model;
- };
-
- DataAccess.initModel = function(model)
- {
- return DataAccess._initModel(model);
- };
-
- DataAccess.initListModel = function(list)
- {
- var d = [];
- for (var i = 0; i < list.length; ++i) {
- d.push(DataAccess.initModel(list[i]));
- }
- return d;
- };
-
- DataAccess.initPaginatedModel = function(data)
- {
- var d = {
- count: data.count,
- data: DataAccess.initListModel(data.data)
- };
- return d;
- };
-
- DataAccess.thenInitModel = function(promise)
- {
- var deferred = $q.defer();
- promise.then(function(data)
- {
- deferred.resolve(DataAccess.initModel(data));
- }, deferred.reject);
- return deferred.promise;
- };
-
- DataAccess.thenInitListModel = function(promise)
- {
- var deferred = $q.defer();
- promise.then(function(data)
- {
- deferred.resolve(DataAccess.initListModel(data));
- }, deferred.reject);
- return deferred.promise;
- };
-
- DataAccess.thenInitPaginatedModel = function(promise)
- {
- var deferred = $q.defer();
- promise.then(function(data)
- {
- deferred.resolve(DataAccess.initPaginatedModel(data));
- }, deferred.reject);
- return deferred.promise;
- };
-
-
-
-
- DataAccess.defaultDbo = {
- id: null,
- createdAt: null,
- updatedAt: null,
- toString: function()
- {
- return this.id;
- }
- };
-
- DataAccess.extendDeep = function extendDeep(dst) {
- angular.forEach(arguments, function(obj) {
- if (obj !== dst) {
- angular.forEach(obj, function(value, key) {
- if (dst[key] && dst[key].constructor && dst[key].constructor === Object) {
- extendDeep(dst[key], value);
- } else {
- dst[key] = value;
- }
- });
- }
- });
- return dst;
- };
-
- DataAccess._initDbo = function(model)
- {
- if (model == null) {
- return null;
- }
- var dbo = DataAccess.extendDeep({}, DataAccess.defaultDbo, model);
- dbo.createdAt = luUtilsDataAccess.stringToMomentDateTime(dbo.createdAt);
- dbo.updatedAt = luUtilsDataAccess.stringToMomentDateTime(dbo.updatedAt);
- return dbo;
- };
-
- DataAccess.initDbo = function(model)
- {
- return DataAccess._initDbo(model);
- };
-
- DataAccess.initListDbo = function(list)
- {
- var d = [];
- for (var i = 0; i < list.length; ++i) {
- d.push(DataAccess.initDbo(list[i]));
- }
- return d;
- };
-
- DataAccess.initPaginatedDbo = function(data)
- {
- var d = {
- count: data.count,
- data: DataAccess.initListDbo(data.data)
- };
- return d;
- };
-
- DataAccess.thenInitDbo = function(promise)
- {
- var deferred = $q.defer();
- promise.then(function(data)
- {
- deferred.resolve(DataAccess.initDbo(data));
- }, deferred.reject);
- return deferred.promise;
- };
-
- DataAccess.thenInitListDbo = function(promise)
- {
- var deferred = $q.defer();
- promise.then(function(data)
- {
- deferred.resolve(DataAccess.initListDbo(data));
- }, deferred.reject);
- return deferred.promise;
- };
-
- DataAccess.thenInitPaginatedDbo = function(promise)
- {
- var deferred = $q.defer();
- promise.then(function(data)
- {
- deferred.resolve(DataAccess.initPaginatedDbo(data));
- }, deferred.reject);
- return deferred.promise;
- };
-
-
-
- DataAccess.getSingleById = function (id, luBusyGroups) {
- return DataAccess.thenInitDbo(DataAccess.get(id, null, luBusyGroups));
- };
-
- DataAccess.getMultiple = function (orderBy, filter, page, perPage, luBusyGroups) {
- return DataAccess.thenInitPaginatedDbo(DataAccess.get('', {
- orderBy: orderBy,
- filter: filter,
- page: page,
- perPage: perPage
- }, luBusyGroups));
- };
-
- DataAccess.addDbo = function(data, luBusyGroups) {
- var model = DataAccess.initModel(data);
- return DataAccess.thenInitDbo(DataAccess.post('', null, model, luBusyGroups));
- };
-
- DataAccess.editSingleByIdDbo = function(id, data, luBusyGroups) {
- var model = DataAccess.initModel(data);
- return DataAccess.thenInitDbo(DataAccess.post(id, null, model, luBusyGroups));
- };
-
- DataAccess.deleteDbo = function(id, luBusyGroups) {
- return DataAccess.thenInitDbo(DataAccess.delete(id, null, null, luBusyGroups));
- };
-
- return DataAccess;
- };
-
- return luWebApiCrudDataAccess;
-
- }]);
- })();
|