controller.js 4.94 KB
angular.module('focaModal')
.controller('focaModalConfirmController', [
    '$uibModalInstance', '$scope', 'textoModal',
    function($uibModalInstance, $scope, textoModal) {
        $scope.textoModal = textoModal;
        $scope.cancelar = function() {
            $uibModalInstance.dismiss(false);
        };
        $scope.aceptar = function() {
            $uibModalInstance.close(true);
        };
    }
])
.controller('focaModalAlertController', [
    '$uibModalInstance', '$scope', 'textoModal',
    function($uibModalInstance, $scope, textoModal) {
        $scope.textoModal = textoModal;
        $scope.aceptar = function() {
            $uibModalInstance.close(true);
        };
    }
])
.controller('focaModalFechaController', [
    '$uibModalInstance', '$scope', 'parametros',
    function($uibModalInstance, $scope, parametros) {
        $scope.parametros = parametros;
        $scope.fecha = new Date();
        $scope.options = {};
        
        if (parametros.minDate) $scope.options.minDate = parametros.minDate;
        
        $scope.cancelar = function() {
            $uibModalInstance.dismiss();
        };
        $scope.aceptar = function() {
            $uibModalInstance.close($scope.fecha);
        };
    }
])
.controller('focaModalPromptController', [
    '$uibModalInstance', '$scope', 'options', 'focaModalService',
    function($uibModalInstance, $scope, options, focaModalService) {
        
        $scope.options = options;
        $scope.cancelar = function() {
            $uibModalInstance.dismiss();
        };
        $scope.aceptar = function(key) {
            if (key === 13) {
                if (options.email && !validateEmails($scope.options.value)) {
                    focaModalService.alert('Ingrese email/s válido/s');
                    return;
                }
                $uibModalInstance.close($scope.options.value);
            }
        };

        function validateEmails(emails) {
            var re = /^(([^<>()\[\]\\.,;:\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,}))$/;
            var arr = emails.split(',');
            var result = true;

            arr.forEach(function(email) {
                var val = String(email).trim().toLowerCase();

                if (!re.test(val)) result = false;
            });

            return result;
        }
    }
])
.controller('focaModalMailController', [
    '$scope',
    '$uibModalInstance',
    'FileSaver',
    'Blob',
    'focaModalEnviarMailService',
    'focaModalService',
    'options',
    function($scope, $uibModalInstance, FileSaver, Blob,
        focaModalEnviarMailService, focaModalService, options) {

        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 = options.titulo;
        $scope.mailCliente = options.envio.mailCliente;

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

        $scope.imprimir = function () {
            $scope.descargado = true;
            $scope.esperando = true;
            focaModalEnviarMailService
                .imprimirComprobante(options.descarga.url, options.options)
                .then(function(res) {
                    var data = new Blob([res.data], {type: 'application/pdf'});

                    FileSaver.saveAs(
                        data,
                        options.descarga.nombre
                    );
                    $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;
                Object.assign(options.options, {receiver: $scope.mailCliente});

                focaModalEnviarMailService
                    .enviarCorreo(options.envio.url, options.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;
        }
    }
]);