controllerMail.js 2.76 KB
angular.module('focaModal')
    .controller('focaModalMailController', [
        '$scope',
        '$uibModalInstance',
        'FileSaver',
        'Blob',
        'focaModalService',
        'options',
        function($scope, $uibModalInstance, FileSaver, Blob,
            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;
                focaModalService
                    .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});

                    focaModalService
                        .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;
            }
        }
    ]);