Source: services/camera.js

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

    Camera.$inject = ['Base', '$q']

   /**	
	* @method Camera
	* @param {*} Base
	* @param {*} id
	*/
    function Camera(Base, $q) {
        var service = {
            obterPorId: obterPorId,
            obterTodas: obterTodas,
            obterCamerasPorCategoria: obterCamerasPorCategoria
        };

       /**	
		* @method obterPorId
		* @param {*} id
		*/
        function obterPorId(id) {
            return Base.obter('cameras/' + id);
        }

       /**	
		* @method obterTodas
		*/
        function obterTodas() {
            return Base.obter('categoria_camera')
                .then(function (categorias) {
                    var promissesArray = [];
                    _.each(categorias, function (categoria) {
                        promissesArray.push(Base.obter('cameras/categoria/' + categoria.id + '/geojson'));
                    });

                    return $q.all(promissesArray)
                        .then(function (result) {
                            var featuresArray = [];
                            _.each(result, function (res) {
                                featuresArray.push(res.features);
                            })

                            return _.flatten(featuresArray);
                        });
                });
        }

       /**	
		* @method obterCamerasPorCategoria
		* @param {*} categoria
		*/
        function obterCamerasPorCategoria(categorias) {
            return Base.salvar('cameras/categorias/', categorias); //Usei post pois preciso passar um array de parametros e o Spring não está aceitando via GET.
        }

        return service;
    }
}());