Source: services/base.js

    /**
     * @ngdoc service
     * @name Base
     * @module s4c.services.Base
     * 
     * @description  Componente para acesso a api do backend e/ou comunicação entre controllers
     * 
     *
     */
     
(function () {
    angular.module('s4c.services', [])
        .factory('Base', Base);

    Base.$inject = ['$rootScope', '$q', '$http', 'API_ENDPOINT', 'API_ENDPOINT_COB', 'API_ENDPOINT_MULTIVIS_MANAGER', '$mdDialog', '$timeout'];

   /**	
	* @method Base
	* @param {*} $http
	* @param {*} $q
	* @param {*} API_ENDPOINT
	* @param {*} $rootScope
	* @param {*} $mdDialog
	* @param {*} $timeout
	* @param {*} API_ENDPOINT_COB
	* @param {*} API_ENDPOINT_MULTIVIS_MANAGER
	*/
    function Base($rootScope, $q, $http, API_ENDPOINT, API_ENDPOINT_COB, API_ENDPOINT_MULTIVIS_MANAGER, $mdDialog, $timeout) {
        var service = {
            obter: obter,
            salvar: salvar,
            atualizar: atualizar,
            remover: remover,
            obterCob: obterCob,
            multivisManagerPost: multivisManagerPost,
            obterDoManager: obterDoManager,
        };

        var res = $rootScope.res;
        var showDialog = true;

   	   /**	
		* @method obterCob
		* @param {*} url
		* @param {*} param
		* @param {*} headers
		*/
        function obterCob(url, params, headers) {
            var deferred = $q.defer();

            $http.get(API_ENDPOINT_COB + url, {
                params: params
            })
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject({
                        message: err.data,
                        status: err.status
                    });

                    if (showDialog) {
                        if (err.data.message) {
                            $mdDialog
                                .show($mdDialog.alert()
                                    .title(res('COMUM_ERRO'))
                                    .content(res(err.data.message))
                                    .ok(res('COMUM_OK')));

                            showDialog = false;

                            $timeout(function () {
                                showDialog = true;
                            }, 30000);
                        }
                    }

                });

            return deferred.promise;
        }

   	   /**	
		* @method obter
		* @param {*} url
		* @param {*} param
		* @param {*} headers
		*/
        function obter(url, params, headers) {
            var deferred = $q.defer();

            $http.get(API_ENDPOINT + url, {
                params: params,
                headers: headers
            })
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject({
                        message: err.data,
                        status: err.status
                    });

                    if (showDialog) {
                        if (err.data.message) {
                            $mdDialog
                                .show($mdDialog.alert()
                                    .title(res('COMUM_ERRO'))
                                    .content(res(err.data.message))
                                    .ok(res('COMUM_OK')));

                            showDialog = false;

                            $timeout(function () {
                                showDialog = true;
                            }, 30000);
                        }
                    }

                });

            return deferred.promise;
        }
   	   /**	
		* @method obterDoManager
		* @param {*} url
		* @param {*} param
		* @param {*} headers
		*/
        function obterDoManager(url, params, headers) {
            var deferred = $q.defer();

            $http.get(API_ENDPOINT_MULTIVIS_MANAGER + url, {
                params: params,
                headers: headers
            })
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject({
                        message: err.data,
                        status: err.status
                    });

                    if (showDialog) {
                        if (err.data.message) {
                            $mdDialog
                                .show($mdDialog.alert()
                                    .title(res('COMUM_ERRO'))
                                    .content(res(err.data.message))
                                    .ok(res('COMUM_OK')));

                            showDialog = false;

                            $timeout(function () {
                                showDialog = true;
                            }, 30000);
                        }
                    }

                });

            return deferred.promise;
        }

   	   /**	
		* @method salvar
		* @param {*} url
		* @param {*} objeto
		*/
        function salvar(url, objeto) {
            var deferred = $q.defer();

            $http.post(API_ENDPOINT + url, objeto)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject({
                        message: err.data,
                        status: err.status
                    });

                    if (showDialog) {
                        if (err.data.message) {
                            $mdDialog
                                .show($mdDialog.alert()
                                    .title(res('COMUM_ERRO'))
                                    .content(res(err.data.message))
                                    .ok(res('COMUM_OK')));

                            showDialog = false;

                            $timeout(function () {
                                showDialog = true;
                            }, 30000);
                        }
                    }

                });

            return deferred.promise;
        }

   	   /**	
		* @method multivisManagerPost
		* @param {*} url
		* @param {*} objeto
		*/
        function multivisManagerPost(url, objeto) {
            var deferred = $q.defer();

            $http.post(API_ENDPOINT_MULTIVIS_MANAGER + url, objeto)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject({
                        message: err.data,
                        status: err.status
                    });

                    if (showDialog) {
                        if (err.data.message) {
                            $mdDialog
                                .show($mdDialog.alert()
                                    .title(res('COMUM_ERRO'))
                                    .content(res(err.data.message))
                                    .ok(res('COMUM_OK')));

                            showDialog = false;

                            $timeout(function () {
                                showDialog = true;
                            }, 30000);
                        }
                    }

                });

            return deferred.promise;
        }

   	   /**	
		* @method atualizar
		* @param {*} url
		* @param {*} objeto
		*/
        function atualizar(url, objeto) {
            var deferred = $q.defer();

            $http.put(API_ENDPOINT + url, objeto)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject({
                        message: err.data,
                        status: err.status
                    });

                    if (showDialog) {
                        if (err.data.message) {
                            $mdDialog
                                .show($mdDialog.alert()
                                    .title(res('COMUM_ERRO'))
                                    .content(res(err.data.message))
                                    .ok(res('COMUM_OK')));

                            showDialog = false;

                            $timeout(function () {
                                showDialog = true;
                            }, 30000);
                        }
                    }

                });

            return deferred.promise;
        }

   	   /**	
		* @method remover
		* @param {*} url
		*/
        function remover(url) {
            var deferred = $q.defer();

            $http.delete(API_ENDPOINT + url)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject({
                        message: err.data,
                        status: err.status
                    });

                    if (showDialog) {
                        if (err.data.message) {
                            $mdDialog
                                .show($mdDialog.alert()
                                    .title(res('COMUM_ERRO'))
                                    .content(res(err.data.message))
                                    .ok(res('COMUM_OK')));

                            showDialog = false;

                            $timeout(function () {
                                showDialog = true;
                            }, 30000);
                        }
                    }

                });

            return deferred.promise;
        }

        return service;
    }
}());