Source: directives/aviso-operacional/novo-aviso/novo-aviso.directive.js

/**
 * @ngdoc directive
 * @name s4c.components.avisoOperacional.s4cAvisoOperacionalNovo
 * @module s4c.components.avisoOperacional
 *
 * @description
 * `novoAvisoCtrl` Responsável por exibir as funções de Novos Avisos Operacionais na Tela, bem como o seu funcionamento.
 * 
 *
 */
(function () {
    'use strict';

    function novoAvisoCtrl($scope, TelegramService) {
        $scope.res = $scope.$root.res;
        $scope.$watch('ativo', function (newVal, oldVal) {
            if (newVal === true && oldVal === false) {
                $scope.editarNovoDetalhamentoAtivo = false;
                $scope.aviso = {
                    groups: [],
                    users: [],
                    message: '',
                    list: []
                };
            }
        });

 	  /**
        * Fecha a diretiva
        *
        * @method desativar
        * 
        */
        $scope.desativar = function () {
            $scope.ativo = false;
        };

 	  /**
        * Edita as informações do novo aviso 
        *
        * @method editarDestinatarios
        * 
        * 
        */
        $scope.editarDestinatarios = function () {
            $scope.editarNovoDetalhamentoAtivo = true;
        };

 	  /**
        * Envia o novo aviso 
        * 
        * @method enviarNovoAviso
        * 
        * 
        * 
        */
        $scope.enviarNovoAviso = function () {
            _.forEach($scope.aviso.list, function (value) {
                if (value.isGroup && value.selected)
                    $scope.aviso.groups.push(value);
                if (value.isUser && value.selected)
                    $scope.aviso.users.push(value);
            });

            TelegramService.sendMessageBulk($scope.aviso).then(function (mensagem) {
                TelegramService.getMessages().then(function (messages) {
                    $scope.mensagens = messages;
                    $scope.ativo = false;
                });
            });
        };

    }

    novoAvisoCtrl.$inject = ['$scope', 'TelegramService'];

    angular.module('s4c.components.avisoOperacional')
        .directive('s4cAvisoOperacionalNovo', function () {
            return {
                restrict: 'EA',
                templateUrl: 'app/directives/aviso-operacional/novo-aviso/novo-aviso.html',
                replace: true,
                scope: {
                    'ativo': '=ativo',
                    'mensagens': '=mensagens'
                },
                controller: novoAvisoCtrl
            };
        });

}());