Summary Table
| Categories |
Total Count |
| PII |
0 |
| URL |
0 |
| DNS |
0 |
| EKL |
0 |
| IP |
0 |
| PORT |
0 |
| VsID |
0 |
| CF |
0 |
| AI |
0 |
| VPD |
0 |
| PL |
0 |
| Other |
0 |
File Content
define(['angular', 'app', 'formatter'], function (angular, app) {
"use strict";
app.service('BaseCRUDMockService', function ($http, $q, $parse, $filter, formatter) {
//Constructor
var BaseCRUDService = function(config) {
this.config = config;
this.requests = {
change : [],
retrieve : []
};
this.mock = window.localStorage[config.dependency.linkTitles.GET] ? angular.fromJson(window.localStorage[config.dependency.linkTitles.GET]) : { collection : [], trackId : 0 };
this.idGetter = $parse(this.config.object.uidKey);
};
//Methods
BaseCRUDService.prototype = {};
//Requires Override
BaseCRUDService.prototype.transformRequest = function(item) {
return this.config.object.requestTransform ? this.config.object.requestTransform(item) : item;
};
BaseCRUDService.prototype._makeRequest = function (httpConfig, linkTitle) {
var that = this;
var defer = $q.defer();
function sendRequest(httpConfig) {
var httpMock = function(config) {
var defer = $q.defer();
var item = config.data;
switch(config.method) {
case "GET" :
var responseObj = {"object-type" : that.config.collection.objectType};
responseObj[that.config.collection.name] = angular.copy(that.mock.collection);
defer.resolve(responseObj)
break;
case "PUT" :
var expression = {};
expression[that.config.object.uidKey] = config.url;
var updateVal = $filter("filter")(that.mock.collection, expression, true);
that.mock.collection[that.mock.collection.indexOf(updateVal)[0]] = item;
defer.resolve(angular.copy(item));
break;
case "POST" :
item[that.config.object.uidKey] = (that.mock.trackId++).toString();
item["object-type"] = "thing";
item["link"] = [{rel: "self", href: item[that.config.object.uidKey]}];
that.mock.collection.push(item);
defer.resolve(angular.copy(item));
break;
case "DELETE" :
var expression = {};
expression[that.config.object.uidKey] = '!' + config.url;
that.mock.collection = $filter("filter")(that.mock.collection, expression, true);
defer.resolve("");
break;
}
window.localStorage[that.config.dependency.linkTitles.GET] = angular.toJson(that.mock)
return defer.promise;
};
if(httpConfig.method === "POST" || httpConfig.method === "PUT") {
httpConfig.data = that.transformRequest(httpConfig.data);
}
var waitForIt = httpConfig.method === "GET" ? that.requests.change : that.requests.retrieve;
$q.all(waitForIt).finally(function(){
var request = httpMock(httpConfig).then(function (response) {
defer.resolve(response);
}, function (error) {
defer.reject(error);
}).finally(function(){
waitForIt.splice(waitForIt.indexOf(request), 1);
})
if(httpConfig.method === "GET") {
that.requests.retrieve.push(request);
} else {
that.requests.change.push(request);
}
});
}
sendRequest(httpConfig);
return defer.promise;
};
//Requires Override
BaseCRUDService.prototype.createEmpty = function() {
return {};
};
BaseCRUDService.prototype.fetch = function (queryParams, preventLocalUpdate) {
return this._makeRequest({method: "GET", params: queryParams});
};
BaseCRUDService.prototype.save = function (item) {
var method = !this.idGetter(item) || this.config.dependency.linkTitles.PUT === "none" ? "POST" : "PUT";
return this._makeRequest({method: method, data: item, url : (method === "PUT" ? item.link[0].href : null)});
};
BaseCRUDService.prototype.delete = function (item) {
if(this.idGetter(item)) {
return this._makeRequest({method: "DELETE", url : item.link[0].href});
} else {
var defer = $q.defer();
defer.reject();
return defer.promise;
}
};
return BaseCRUDService;
});
});