diff --git a/src/js/controller.js b/src/js/controller.js index b55ef10..f3486eb 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -69,4 +69,79 @@ angular.module('focaModal') 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; + } + } ]); diff --git a/src/js/service.js b/src/js/service.js index ffb166d..56fbe07 100644 --- a/src/js/service.js +++ b/src/js/service.js @@ -85,6 +85,21 @@ angular.module('focaModal') return resultado; } ); + }, + mail: function(options) { + return $uibModal.open({ + templateUrl: 'modal-mail.html', + controller: 'focaModalMailController', + size: 'md', + resolve: { + options: function() {return options;}, + } + }) + .result.then( + function(resultado) { + return resultado; + } + ); } }; } diff --git a/src/views/modal-mail.html b/src/views/modal-mail.html new file mode 100644 index 0000000..df48275 --- /dev/null +++ b/src/views/modal-mail.html @@ -0,0 +1,51 @@ + + +