Source: services/AvisoOperacional.js

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

   /**	
	* @method TelegramService
	* @param {*} $http
	* @param {*} $q
	* @param {*} API_ENDPOINT
	*/
    function TelegramService($http, $q, API_ENDPOINT) {
        var service = {};

	   /**	
		* @method getGroups
		*/
        service.getGroups = function getGroups() {
            var deferred = $q.defer();

            $http.get(API_ENDPOINT + 'mensageria_externa/telegram/grupos')
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        };

	   /**	
		* @method getGroupMessages
		* @param {*} id
		* @param {*} page
		* @param {*} page_to
		*/
        service.getGroupMessages = function getGroupMessages(id, page, page_to) {
            var deferred = $q.defer();
            var url = API_ENDPOINT + 'mensageria_externa/telegram/grupos/' + id + '/messages?page=' + page;

            if (page_to) {
                url += '&page_to=' + page_to;
            }

            $http.get(url)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

	   /**	
		* @method getAllGroupMessages
		* @param {*} page
		* @param {*} page_to
		*/
        service.getAllGroupMessages = function getAllGroupMessages(page, page_to) {
            var deferred = $q.defer();
            var url = API_ENDPOINT + 'mensageria_externa/telegram/all/messages?page=' + page;

            if (page_to) {
                url += '&page_to=' + page_to;
            }

            $http.get(url)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

	   /**	
		* @method getUsers
		*/
        service.getUsers = function getUsers() {
            var deferred = $q.defer();

            $http.get(API_ENDPOINT + 'mensageria_externa/telegram/usuarios')
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.resolve(err);
                });

            return deferred.promise;
        }

	   /**	
		* @method getMessages
		*/
        service.getMessages = function getUsers() {
            var deferred = $q.defer();

            $http.get(API_ENDPOINT + 'mensageria_externa/telegram/messages')
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.resolve(err);
                });

            return deferred.promise;
        }

	   /**	
		* @method saveGroup
		* @param {*} grupo
		*/
        service.saveGroup = function saveGroup(grupo) {
            var deferred = $q.defer();

            $http.post(API_ENDPOINT + 'mensageria_externa/telegram/grupos', grupo)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

	   /**	
		* @method changeStatusUsuarioMensageriaExterna
		* @param {*} id
		* @param {*} status
		*/
        service.changeStatusUsuarioMensageriaExterna = function (id, status) {
            var deferred = $q.defer();

            $http.put(`${API_ENDPOINT}mensageria_externa/telegram/usuarios/${id}`,
                { ativo: status })
                .then((response) => {
                    deferred.resolve(response.data);
                }, (error) => {
                    deferred.reject(error);
                });

            return deferred.promise;
        };

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

            $http.delete(`${API_ENDPOINT}mensageria_externa/telegram/usuarios/${id}`,
                { ativo: status })
                .then((response) => {
                    deferred.resolve(response.data);
                }, (error) => {
                    deferred.reject(error);
                });

            return deferred.promise;
        };

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

            $http.delete(API_ENDPOINT + 'mensageria_externa/telegram/grupos/' + id)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        };

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

            $http.get(API_ENDPOINT + 'mensageria_externa/telegram/grupos/' + id + '/usuarios')
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        };

	   /**	
		* @method deleteUsersFromGroup
		* @param {*} id
		* @param {*} usersArray
		*/
        service.deleteUsersFromGroup = function deleteUsersFromGroup(id, usersArray) {
            var deferred = $q.defer();

            $http.post(API_ENDPOINT + 'mensageria_externa/telegram/grupos/' + id + '/usuarios/delete', usersArray)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        };

	   /**	
		* @method addUsersToGroup
		* @param {*} id
		* @param {*} usersArray
		*/
        service.addUsersToGroup = function addUsersToGroup(id, usersArray) {
            var deferred = $q.defer();

            $http.post(API_ENDPOINT + 'mensageria_externa/telegram/grupos/' + id + '/usuarios', usersArray)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        };

	   /**	
		* @method sendMessageBulk
		* @param {*} message
		*/
        service.sendMessageBulk = function sendMessageBulk(message) {
            var deferred = $q.defer();

            $http.post(API_ENDPOINT + 'mensageria_externa/telegram/messages/bulk', message)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        };

	   /**	
		* @method sendGroupMessageBulk
		* @param {*} message
		*/
        service.sendGroupMessageBulk = function sendGroupMessageBulk(message) {
            var deferred = $q.defer();

            $http.post(API_ENDPOINT + 'mensageria_externa/telegram/groups/messages/bulk', message)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        };

	   /**	
		* @method enviarMensagem
		* @param {*} groupId
		* @param {*} mensagem
		*/
        service.enviarMensagem = function (grupoId, mensagem) {
            var deferred = $q.defer();

            $http.post(API_ENDPOINT + 'mensageria_externa/telegram/grupos/' + grupoId + '/messages', mensagem)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

	   /**	
		* @method findGroupMessagePages
		* @param {*} groupId
		* @param {*} text
		*/
        service.findGroupMessagePages = function (groupId, text) {
            var deferred = $q.defer();

            $http.get(API_ENDPOINT + 'mensageria_externa/telegram/grupos/' + groupId + '/messages/' + text)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        }

	   /**	
		* @method updateAvisoOperarional
		* @param {*} aviso
		*/
        service.updateAvisoOperarional = function (aviso) {
            var deferred = $q.defer();

            $http.put(API_ENDPOINT + 'mensageria_externa/aviso', aviso)
                .then(function (response) {
                    deferred.resolve(response.data);
                }, function (err) {
                    deferred.reject(err);
                });

            return deferred.promise;
        };

        return service;
    }


    angular.module('s4c.services')
        .service('TelegramService', TelegramService);

    TelegramService.$inject = ['$http', '$q', 'API_ENDPOINT'];
}());