Source: directives/planejamento/planejamento.service.js

/**
 * @ngdoc directives
 * @name PlanejamentoService
 * @module s4c.directives.planejamento.PlanejamentoService
 *
 * @description
 * `PlanejamentoService` Componente para acesso a api do backend e/ou comunicação entre controllers
 * 
 * 
 */
(function () {
    'use strict';

    function PlanejamentoService($http, $q, API_ENDPOINT, Base) {
        return {
            salvarPlanejamento: salvarPlanejamento,
            enviarPlanejamento: enviarPlanejamento,
            salvarCamada: salvarCamada,
            getPlanejamento: getPlanejamento,
            getPlanejamentoGeoJSON: getPlanejamentoGeoJSON,
            searchUsuarioByName: searchUsuarioByName,
            searchDepartamentoByName: searchDepartamentoByName,
            findAndDelete: findAndDelete,
            searchCategoriaByName: searchCategoriaByName,
            searchAcervoByName: searchAcervoByName,
            removerCamada: removerCamada,
            getAttachedFile: getAttachedFile
        };

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

            $http.get(API_ENDPOINT + 'planejamento/' + id)
                .then(function (res) {
                    if (typeof res.data === 'object') {
                        deferred.resolve(res.data);
                    } else {
                        deferred.reject(res);
                    }
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

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

            $http.get(API_ENDPOINT + 'planejamento/' + id + '/geojson')
                .then(function (res) {
                    if (typeof res.data === 'object') {
                        deferred.resolve(res.data);
                    } else {
                        deferred.reject(res);
                    }
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

        /**
         * @method salvarPlanejamento
         * @param {*} data 
         */
        function salvarPlanejamento(data) {
            var deferred = $q.defer();
            if (data.id) {

                $http.post(API_ENDPOINT + 'planejamento/' + data.id, data)
                    .then(function (res) {
                        if (typeof res.data === 'object') {
                            deferred.resolve(res.data);
                        } else {
                            deferred.reject(res);
                        }
                    }, function (err) {
                        deferred.reject(err);
                    });
            } else {

                $http.put(API_ENDPOINT + 'planejamento', data)
                    .then(function (res) {
                        if (typeof res.data === 'object') {
                            deferred.resolve(res.data);
                        } else {
                            deferred.reject(res);
                        }
                    }, function (err) {
                        deferred.reject(err);
                    });
            }

            return deferred.promise;
        }

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

            $http.post(API_ENDPOINT + 'planejamento/enviar/' + data.id, data)
                .then(function (res) {
                    if (typeof res.data === 'object') {
                        deferred.resolve(res.data);
                    } else {
                        deferred.reject(res);
                    }
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

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

            if (data.id) {

                $http.post(API_ENDPOINT + 'camadas/' + data.id, data)
                    .then(function (res) {
                        if (typeof res.data === 'object') {
                            deferred.resolve(res.data);
                        } else {
                            deferred.reject(res);
                        }
                    }, function (err) {
                        deferred.reject(err);
                    });
            } else {

                $http.post(API_ENDPOINT + 'planejamento/camada/' + data.PlanejamentoId, data)
                    .then(function (res) {
                        if (typeof res.data === 'object') {
                            deferred.resolve(res.data);
                        } else {
                            deferred.reject(res);
                        }
                    }, function (err) {
                        deferred.reject(err);
                    });
            }

            return deferred.promise;
        }

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

            $http.get(API_ENDPOINT + 'departamentos/find/' + searchTerm)
                .then(function (res) {
                    if (typeof res.data === 'object') {
                        deferred.resolve(res.data);
                    } else {
                        deferred.reject(err);
                    }
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

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

            $http.get(API_ENDPOINT + 'usuarios/find/' + searchTerm)
                .then(function (res) {
                    if (typeof res.data === 'object') {
                        deferred.resolve(res.data);
                    } else {
                        deferred.reject(err);
                    }
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

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

            $http.delete(API_ENDPOINT + 'planejamento/' + id)
                .then(function (res) {
                    deferred.resolve(res.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

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

            $http.get(API_ENDPOINT + 'categorias/find/' + searchTerm)
                .then(function (res) {
                    if (typeof res.data === 'object') {
                        deferred.resolve(res.data);
                    } else {
                        deferred.reject(err);
                    }
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

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

            $http.get(API_ENDPOINT + 'acervos/find/' + searchTerm)
                .then(function (res) {
                    if (typeof res.data === 'object') {
                        deferred.resolve(res.data);
                    } else {
                        deferred.reject(err);
                    }
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

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

            $http
                .get(API_ENDPOINT + 'filemanager/' + id, { responseType: 'arraybuffer' })
                .then(function (res) {
                    deferred.resolve(res.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

        /**
         * @method removerCamada
         * @param {*} id 
         */
        function removerCamada(id) {
            return Base.remover('planejamento/camadas/' + id);
        }
    }

    PlanejamentoService.$inject = ['$http', '$q', 'API_ENDPOINT', 'Base'];

    angular.module('s4c.components.planejamento')
        .service('PlanejamentoService', PlanejamentoService);

})();