Source: directives/participantes/participantes.service.js

/**
 * @ngdoc directives
 * @name ParticipantesService
 * @module s4c.directives.participantes.ParticipantesService
 *
 * @description
 * `ParticipantesService` Componente para acesso a api do backend e/ou comunicação entre controllers
 * 
 * 
 */
(function () {

    function ParticipantesService(Base, $q) {

        return {
            pesquisar: pesquisar,
            categorizarResultado: categorizarResultado
        }

        /**
         * @method categorizarResultado
         * @param {*} array 
         * @param {*} tipo 
         */
        function categorizarResultado(array, tipo) {
            _.each(array, function (item) {
                item._tipo = tipo;
            });
        }

        /**
         * @method pesquisar
         * @param {*} texto 
         */
        function pesquisar(texto) {
            return $q.all([

                Base.obter('grupo_usuarios/find/' + texto),
                Base.obter('usuarios/find/' + texto),
                Base.obter('departamentos/find/' + texto),

            ]).then(function (results) {
                var gruposUsuarios = results[0],
                    usuarios = results[1],
                    agencias = results[2];

                categorizarResultado(gruposUsuarios, 'grupo');
                categorizarResultado(usuarios, 'usuario');
                categorizarResultado(agencias, 'agencia');

                return gruposUsuarios.concat(usuarios).concat(agencias);
            })
        }
    }

    ParticipantesService.$inject = ['Base', '$q'];

    angular.module('s4c.components.participantes')
        .service('ParticipantesService', ParticipantesService);

})();