controller.js 3.04 KB
angular.module('focaModalEnviarMail')
    .controller('focaModalEnviarMailController', [
        '$timeout',
        '$filter',
        '$scope',
        '$uibModalInstance',
        'FileSaver',
        'Blob',
        'focaModalEnviarMailService',
        'focaModalService',
        'parametros',
        function($timeout, $filter, $scope, $uibModalInstance, FileSaver, Blob,
            focaModalEnviarMailService, focaModalService, parametros) {

            var regexMail = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            $scope.descargado = false;
            $scope.correoEnviado = false;
            $scope.correoNoEnviado = false;
            $scope.esperando = false;
            $scope.titulo = parametros.titulo;
            $scope.mailCliente = parametros.mailCliente;

            $scope.aceptar = function() {
                $uibModalInstance.close();
            };
            
            $scope.salir = function() {
                $uibModalInstance.close($scope.descargado);
            };

            $scope.imprimir = function () {
                $scope.descargado = true;
                $scope.esperando = true;
                focaModalEnviarMailService
                    .imprimirComprobanteById(parametros.urlImprimir, parametros.idComprobante)
                    .then(function(res) {
                        var data = new Blob([res.data], {type: 'application/pdf'});

                        FileSaver.saveAs(
                            data,
                            parametros.nombrePdf
                        );
                        $scope.esperando = false;
                    });
            };

            $scope.enviarCorreo = function(key) {
                if (key === 13) {
                    if (!validarMail()) {
                        focaModalService.alert('Ingrese email/s válido/s');
                        return;
                    }
                    $scope.descargado = true;
                    $scope.esperando = true;
                    var options = {
                        para: parametros.mailCliente,
                        idComprobante: parametros.idComprobante
                    };
    
                    focaModalEnviarMailService
                        .enviarCorreo(parametros.urlMail, options)
                        .then(function() {
                            $scope.correoEnviado = true;
                            $scope.esperando = false;
                        }, function() {
                            $scope.esperando = false;
                            $scope.correoNoEnviado = true;
                        });
                }
            };

            function validarMail() {
                var emails = $scope.mailCliente.split(',');
                var result = true;
                emails.forEach(function(email) {
                    if (!regexMail.test(email.trim())) result = false;
                });
                return result;
            }
        }]
    );