zupit.service('Zupit.Core.HttpClient', [ 'Zupit.Core.NotificationService', '$http', '$q', 'config', '$rootScope', function (notify, $http, $q, config, $rootScope) { var re = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/; var fixDateFromServer = function (o) { if (o === null || o === undefined) return; for (var i in o) { if (o.hasOwnProperty(i)) { if ((typeof o[i] === 'string' || o[i] instanceof String) && re.test(o[i])) { o[i] = moment(o[i]).tz($rootScope.timezone._z.name).toDate(); continue; } if (o[i] !== null && typeof (o[i]) == "object") { //going on step down in the object tree!! fixDateFromServer(o[i]); } } } } var fixDateToServer=function(o) { if (o === null || o === undefined) return; for (var i in o) { if (o.hasOwnProperty(i)) { if (o[i] instanceof Date) { o[i] = moment(o[i]).toISOString(); continue; } if (o[i] !== null && typeof (o[i]) == "object") { //going on step down in the object tree!! fixDateFromServer(o[i]); } } } } return { get: function (url,conf) { var deferred = $q.defer(); $http.get(config.apiUrl + url, conf).then(function (response) { fixDateFromServer(response.data); deferred.resolve(response.data); },function(response) { var message = response.statusText; if (response.data !== undefined && response.data['error_description'] !== undefined) message = response.data['error_description']; notify.error(message); deferred.reject(response); }); return deferred.promise; }, delete: function (url, conf) { var deferred = $q.defer(); $http.delete(config.apiUrl + url, conf).then(function (response) { deferred.resolve(response.data); }, function (response) { var message = response.statusText; if (response.data !== undefined && response.data['error_description'] !== undefined) message = response.data['error_description']; notify.error(message); deferred.reject(response); }); return deferred.promise; }, post: function (url, data, conf) { var deferred = $q.defer(); var d = angular.copy(data); fixDateToServer(d); $http.post(config.apiUrl + url, d, conf).then(function (response) { deferred.resolve(response.data); }, function (response) { var message = response.statusText; if (response.data !== undefined && response.data['error_description'] !== undefined) message = response.data['error_description']; notify.error(message); deferred.reject(response); }); return deferred.promise; }, put: function (url, data, conf) { var deferred = $q.defer(); var d = angular.copy(data); fixDateToServer(d); $http.put(config.apiUrl + url, d, conf).then(function (response) { deferred.resolve(response.data); }, function (response) { var message = response.statusText; if (response.data !== undefined && response.data['error_description'] !== undefined) message = response.data['error_description']; notify.error(message); deferred.reject(response); }); return deferred.promise; }, patch: function (url, data, conf) { var deferred = $q.defer(); var d = angular.copy(data); fixDateToServer(d); $http.patch(config.apiUrl + url, d, conf).then(function (response) { deferred.resolve(response.data); }, function (response) { var message = response.statusText; if (response.data !== undefined && response.data['error_description'] !== undefined) message = response.data['error_description']; notify.error(message); deferred.reject(response); }); return deferred.promise; } } } ]);