forked from Coded/SIPRP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
6.7 KiB
203 lines
6.7 KiB
evoapp.service('dataService', function ($rootScope, $http, $q, $timeout, modelService, $filter) {
|
|
|
|
var serviceBase = 'http://java1.evo.pt:8080/siprp_fichasclinicas/rs/fichasclinicas/';
|
|
|
|
var record = function(model){
|
|
|
|
var record = arguments[1];
|
|
record = record == undefined ? {} : record;
|
|
|
|
record = modelService.toModel(model, record);
|
|
|
|
return record;
|
|
};
|
|
|
|
var store = function(){
|
|
|
|
var me = this,
|
|
args = arguments[0];
|
|
angular.copy(args, me);
|
|
|
|
this.items = [];
|
|
|
|
this.start = (this.start == null || this.start == undefined) ? 0 : this.start;
|
|
this.limit = (this.limit == null || this.limit == undefined) ? Number.MAX_VALUE : this.limit;
|
|
this.sort = (this.sort == null || this.sort == undefined) ? null : this.sort;
|
|
this.dir = (this.dir == null || this.dir == undefined) ? 'ASC' : this.dir;
|
|
|
|
this.total = 0;
|
|
|
|
var params = null;
|
|
|
|
this.extraParams = null;
|
|
this.convertToModel = true;
|
|
this.broadcastEvents = true;
|
|
|
|
this.get = function(){
|
|
|
|
var callbackFn = arguments[0];
|
|
|
|
params = {start: me.start, limit: me.limit, sort: me.sort, dir: me.dir};
|
|
|
|
if(me.extraParams != null)
|
|
{
|
|
for(property in me.extraParams)
|
|
{
|
|
params[property] = me.extraParams[property];
|
|
}
|
|
|
|
//TODO: we need to review this. maybe add a model to it?
|
|
//format dates for server
|
|
for(property in params)
|
|
{
|
|
var value = params[property];
|
|
|
|
if(angular.isDate(value))
|
|
{
|
|
//all dates going to server must be ISO8601
|
|
params[property] = moment(value).format('YYYY-MM-DD HH:mm:ss');
|
|
}
|
|
}
|
|
}
|
|
|
|
$http({
|
|
method: 'GET',
|
|
url: (serviceBase + me.actions.get),
|
|
params: params,
|
|
$$broadcastEvents: me.broadcastEvents
|
|
}).
|
|
success(function(response, status, headers, config) {
|
|
|
|
//processServerDate(response);
|
|
|
|
if(response.success)
|
|
{
|
|
//response.data = me.convertToModel ? modelService.collectionToModel(me.model, response.data, null) : response.data;
|
|
me.total = response.total;
|
|
me.items = response.data;
|
|
}
|
|
|
|
callback(callbackFn, [response, status, headers, config, me.items]);
|
|
|
|
}).
|
|
error(function(response, status, headers, config) {
|
|
|
|
callback(callbackFn, [response, status, headers, config]);
|
|
|
|
});
|
|
};
|
|
|
|
this.upsert = function(selected, editing){
|
|
|
|
var modelInstance = educando.models[me.model],
|
|
callbackFn = arguments[2], //angular.isFunction(arguments[1]) ? arguments[1] : null;
|
|
isNewRecord = false;
|
|
|
|
//var hashKey = selected['$$hashKey'] != undefined ? selected['$$hashKey'] : null;
|
|
|
|
var isArray = angular.isArray(editing);
|
|
|
|
if(isArray)
|
|
{
|
|
editing = modelService.collectionToModel(me.model, editing, 'upsert');
|
|
}
|
|
else
|
|
{
|
|
editing = modelService.toModel(me.model, editing, 'upsert');
|
|
}
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: (serviceBase + me.actions.upsert),
|
|
data: editing,
|
|
$$broadcastEvents: me.broadcastEvents
|
|
}).
|
|
success(function(response, status, headers, config) {
|
|
|
|
$rootScope.$broadcast('response', {response: response});
|
|
|
|
if(response.success)
|
|
{
|
|
// var idPropertyValue = editing[modelInstance.idProperty],
|
|
// isNewRecord = (idPropertyValue == 0 || idPropertyValue == null || idPropertyValue == undefined);
|
|
|
|
// if(response.data != null)
|
|
// {
|
|
// if(angular.isArray(response.data))
|
|
// {
|
|
// response.data = modelService.toModel(me.model, response.data[0], null);
|
|
// }
|
|
// else
|
|
// {
|
|
// response.data = modelService.toModel(me.model, response.data, null);
|
|
// }
|
|
|
|
// angular.copy(response.data, editing);
|
|
// angular.copy(response.data, selected);
|
|
// }
|
|
}
|
|
|
|
callback(callbackFn, [response, selected, editing, isNewRecord]);
|
|
}).
|
|
error(function(response, status, headers, config) {
|
|
|
|
callback(callbackFn, [response, selected, editing, isNewRecord]);
|
|
});
|
|
};
|
|
|
|
this.destroy = function(editing){
|
|
|
|
var modelInstance = educando.models[me.model],
|
|
callbackFn = arguments[1];
|
|
|
|
//isArray = angular.isArray(editing);
|
|
|
|
//if(isArray)
|
|
//{
|
|
// editing = modelService.collectionToModel(me.model, editing, null);
|
|
//}
|
|
//else
|
|
//{
|
|
// editing = modelService.toModel(me.model, editing, null);
|
|
//}
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: (serviceBase + me.actions.destroy),
|
|
data: editing,
|
|
$$broadcastEvents: me.broadcastEvents
|
|
}).
|
|
success(function(response, status, headers, config) {
|
|
|
|
$rootScope.$broadcast('response', {response: response});
|
|
|
|
callback(callbackFn, [response]);
|
|
}).
|
|
error(function(response, status, headers, config) {
|
|
|
|
callback(callbackFn, [response]);
|
|
});
|
|
};
|
|
|
|
this.loadData = function(data){
|
|
|
|
for(n = 0; n < data.length; n++)
|
|
{
|
|
this.items.push(data[n]);
|
|
}
|
|
};
|
|
};
|
|
|
|
//pass specified values to specified function arguments
|
|
function callback(fn, args) {
|
|
var fnArgs = [].concat(args);
|
|
fnArgs.push.apply(fnArgs, arguments);
|
|
return fn.apply(this, fnArgs);
|
|
};
|
|
|
|
return {
|
|
store: store,
|
|
record: record
|
|
};
|
|
})
|