From 105ca960f6da63493a5e4538758400b3d9ca6efc Mon Sep 17 00:00:00 2001 From: mpuebla Date: Thu, 26 Mar 2020 15:36:06 -0300 Subject: [PATCH] Fix Refactor de codigo, cambio para elegir localidad y provincia --- src/js/controller.js | 626 +++++++++++++++++++++-------------------- src/js/idomicilio.js | 18 ++ src/js/service.js | 48 ++-- src/views/modal-domicilio.html | 149 +++++----- 4 files changed, 454 insertions(+), 387 deletions(-) create mode 100644 src/js/idomicilio.js diff --git a/src/js/controller.js b/src/js/controller.js index 256ce67..319067d 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -1,304 +1,332 @@ angular.module('focaModalDomicilio') - .controller('focaModalDomicilioController', - [ - '$timeout', - '$filter', - '$scope', - '$uibModalInstance', - 'focaModalDomicilioService', - '$uibModal', - 'idCliente', - 'esNuevo', - 'focaModalService', - function($timeout, $filter, $scope, $uibModalInstance, focaModalDomicilioService, - $uibModal, idCliente, esNuevo, focaModalService) { - - $scope.buscar = function() { - focaModalDomicilioService - .getDomiciliosEntregaByIdCliente($scope.idCliente) - .then(function(res) { - $scope.domicilios = res.data; - $scope.search(); - $scope.primerBusqueda = true; - } - ); - }; + .controller('focaModalDomicilioController', + ['$timeout', '$filter', '$scope', '$uibModalInstance', 'focaModalDomicilioService', + '$uibModal', 'idCliente', 'esNuevo', 'focaModalService', 'IDomicilio', + function ($timeout, $filter, $scope, $uibModalInstance, focaModalDomicilioService, + $uibModal, idCliente, esNuevo, focaModalService, IDomicilio) { + + $scope.buscar = function () { + focaModalDomicilioService + .getDomiciliosEntregaByIdCliente($scope.idCliente) + .then(function (res) { + $scope.domicilios = res.data; + $scope.search(); + $scope.primerBusqueda = true; + }); + }; + $scope.filters = ''; + $scope.idCliente = idCliente; + $scope.buscar(); + $scope.ingreso = esNuevo; + $scope.primerBusqueda = false; + $scope.contactos = [{}]; + // pagination + $scope.numPerPage = 5; + $scope.currentPage = 1; + $scope.filteredDomicilios = []; + $scope.currentPageDomicilios = []; + $scope.selectedDomicilio = -1; + $scope.focused = 1; + $scope.domicilio = IDomicilio; + + //METODOS + $scope.search = function (pressed) { + $scope.filteredDomicilios = $filter('filter')( + $scope.domicilios, + { $: $scope.filters } + ); + + if (pressed) { + if ($scope.filteredDomicilios.length === 0) { + $timeout(function () { + angular.element('#search')[0].focus(); $scope.filters = ''; - $scope.idCliente = idCliente; - $scope.buscar(); - $scope.ingreso = esNuevo; - $scope.primerBusqueda = false; - $scope.contactos = [{}]; - // pagination - $scope.numPerPage = 5; - $scope.currentPage = 1; - $scope.filteredDomicilios = []; - $scope.currentPageDomicilios = []; - $scope.selectedDomicilio = -1; - $scope.focused = 1; - $scope.domicilio = {}; - - //METODOS - $scope.search = function(pressed) { - $scope.filteredDomicilios = $filter('filter')( - $scope.domicilios, - {$: $scope.filters} - ); - - if (pressed) { - if ($scope.filteredDomicilios.length === 0) { - $timeout(function() { - angular.element('#search')[0].focus(); - $scope.filters = ''; - }); - } else { - primera(); - } - } - - $scope.lastPage = Math.ceil( - $scope.filteredDomicilios.length / $scope.numPerPage - ); - - $scope.resetPage(); - }; - - $scope.resetPage = function() { - $scope.currentPage = 1; - $scope.selectPage(1); - }; - - $scope.selectPage = function(page) { - var start = (page - 1) * $scope.numPerPage; - var end = start + $scope.numPerPage; - $scope.paginas = []; - $scope.paginas = calcularPages(page); - $scope.currentPageDomicilios = $scope.filteredDomicilios.slice(start, end); - $scope.currentPage = page; - }; - - $scope.select = function(domicilio) { - $uibModalInstance.close(domicilio); - }; - - $scope.cancel = function() { - $uibModalInstance.dismiss('cancel'); - }; - - $scope.busquedaDown = function(key) { - if (key === 40) { - primera(key); - } - }; - - $scope.busquedaPress = function(key) { - if (key === 13) { - $scope.search(true); - } - }; - - $scope.itemDomicilio = function(key) { - if (key === 38) { - anterior(key); - } - - if (key === 40) { - siguiente(key); - } - - if (key === 37) { - retrocederPagina(); - } - - if (key === 39) { - avanzarPagina(); - } - }; - - $scope.agregarDomicilio = function() { - - $scope.domicilio.valores = []; - $scope.domicilio.idCliente = $scope.idCliente; - if ($scope.domicilio.calle) { - $scope.domicilio.valores.push({ - ID_ADAC_1: 1, - dato: $scope.domicilio.calle - }); - } - if ($scope.domicilio.numeroCalle) { - $scope.domicilio.valores.push({ - ID_ADAC_1: 2, - dato: $scope.domicilio.numeroCalle - }); - } - if ($scope.domicilio.localidad) { - $scope.domicilio.valores.push({ - ID_ADAC_1: 3, - dato: $scope.domicilio.localidad - }); - } - if ($scope.domicilio.provincia) { - $scope.domicilio.valores.push({ - ID_ADAC_1: 4, - dato: $scope.domicilio.provincia - }); - } - if ($scope.domicilio.latitud) { - $scope.domicilio.valores.push({ - ID_ADAC_1: 23, - dato: $scope.domicilio.latitud.toString() - }); - } - if ($scope.domicilio.longitud) { - $scope.domicilio.valores.push({ - ID_ADAC_1: 24, - dato: $scope.domicilio.longitud.toString() - }); - } - - if (!$scope.domicilio.titulo) { - focaModalService.alert('Ingrese titulo'); - return; - } else if (!$scope.domicilio.calle) { - focaModalService.alert('Ingrese calle'); - return; - } else if (!$scope.domicilio.numeroCalle) { - focaModalService.alert('Ingrese numero de calle'); - return; - } else if (!$scope.domicilio.localidad) { - focaModalService.alert('Ingrese localidad'); - return; - } else if (!$scope.domicilio.provincia) { - focaModalService.alert('Ingrese provincia'); - return; - } - - //domicilios de entrega corresponden al 1 - focaModalDomicilioService - .obtenerUltimoPorNivelPadre(1) - .then(function(res) { - $scope.domicilio.nivel1 = 1;//domicilio de entrega corresponde 1 - $scope.domicilio.nivel2 = res.data[0].ultimo + 1; - focaModalDomicilioService - .guardarDomicilio($scope.domicilio) - .then(function() { - $scope.buscar(); - $scope.ingreso = false; - $scope.domicilio = {}; - }) - .catch(function() { - focaModalService.alert('Hubo un error al crear el domicilio'); - $scope.ingreso = false; - }); - }); - }; - - $scope.verPuntosDescarga = function(key) { - - $scope.currentPageDomicilios[key].verPuntos = true; - $scope.select($scope.currentPageDomicilios[key]); - }; - - $scope.localizarDomicilio = function(localizar) { - var direccion = null; - if (localizar) { - direccion = { - calle: $scope.domicilio.calle, - numero: $scope.domicilio.numeroCalle, - localidad: $scope.domicilio.localidad, - provincia: $scope.domicilio.provincia - }; - } - var modalInstance = $uibModal.open( - { - ariaLabelledBy: 'Buscar domicilio', - templateUrl: 'modal-localizar.html', - controller: 'focaModalLocalizarController', - size: 'lg', - resolve: { - parametros: { - direccion: direccion, - latitud: $scope.domicilio.latitud, - longitud: $scope.domicilio.longitud - } - } - } - ); - modalInstance.result.then(function(res) { - $scope.domicilio.latitud = res.latitud; - $scope.domicilio.longitud = res.longitud; - }, function() { - //TODO: función llamada cuando cancela el modal - }); - }; - - $scope.next = function(key) { - if (key === 13) $scope.focused++; - }; - - function calcularPages(paginaActual) { - var paginas = []; - paginas.push(paginaActual); - - if (paginaActual - 1 > 1) { - - paginas.unshift(paginaActual - 1); - if (paginaActual - 2 > 1) { - paginas.unshift(paginaActual - 2); - } - } - - if (paginaActual + 1 < $scope.lastPage) { - paginas.push(paginaActual + 1); - if (paginaActual + 2 < $scope.lastPage) { - paginas.push(paginaActual + 2); - } - } - - if (paginaActual !== 1) { - paginas.unshift(1); - } - - if (paginaActual !== $scope.lastPage) { - paginas.push($scope.lastPage); - } - - return paginas; - } - - function primera() { - $scope.selectedDomicilio = 0; - } - - function anterior() { - if ($scope.selectedDomicilio === 0 && $scope.currentPage > 1) { - retrocederPagina(); - } else { - $scope.selectedDomicilio--; - } - } - - function siguiente() { - if ($scope.selectedDomicilio < $scope.currentPageDomicilios.length ) { - $scope.selectedDomicilio++; - } else { - avanzarPagina(); - } - } - - function retrocederPagina() { - if ($scope.currentPage > 1) { - $scope.selectPage($scope.currentPage - 1); - $scope.selectedDomicilio = $scope.numPerPage - 1; - } + }); + } else { + primera(); + } + } + + $scope.lastPage = Math.ceil( + $scope.filteredDomicilios.length / $scope.numPerPage + ); + + $scope.resetPage(); + }; + + $scope.resetPage = function () { + $scope.currentPage = 1; + $scope.selectPage(1); + }; + + $scope.selectPage = function (page) { + var start = (page - 1) * $scope.numPerPage; + var end = start + $scope.numPerPage; + $scope.paginas = []; + $scope.paginas = calcularPages(page); + $scope.currentPageDomicilios = $scope.filteredDomicilios.slice(start, end); + $scope.currentPage = page; + }; + + $scope.select = function (domicilio) { + $uibModalInstance.close(domicilio); + }; + + $scope.cancel = function () { + $uibModalInstance.dismiss('cancel'); + }; + + $scope.busquedaDown = function (key) { + if (!key === 40) return; + primera(key); + }; + + $scope.busquedaPress = function (key) { + if (!key === 13) return; + $scope.search(true); + }; + + $scope.seleccionarLocalidad = function (key) { + if (!key === 13) return; + if (!$scope.domicilio.provincia.ID) { + focaModalService.alert('Seleccione una provincia'); + return; + } + + var parametrosModal = { + searchText: $scope.domicilio.localidad.NOMBRE, + query: '/localidad/' + parseInt($scope.domicilio.provincia.ID), + columnas: focaModalDomicilioService.getLocalidadTableFormat(), + titulo: 'Búsqueda de localidades', + size: 'md' + }; + + focaModalService.modal(parametrosModal) + .then(function (localidad) { + $scope.domicilio.localidad = localidad; + $timeout(function () { + $scope.focused = 5; + }); + }); + }; + + $scope.seleccionarProvincia = function (key) { + if (!key === 13) return; + var parametrosModal = { + searchText: $scope.domicilio.provincia.NOMBRE, + query: '/provincia', + columnas: focaModalDomicilioService.getProvinciaTableFormat(), + titulo: 'Búsqueda de provincias', + size: 'md' + }; + focaModalService.modal(parametrosModal) + .then(function (provincia) { + $scope.domicilio.provincia = provincia; + $timeout(function () { + $scope.focused = 4; + }); + }); + }; + + $scope.itemDomicilio = function (key) { + switch (key) { + case 38: + anterior(key); + break; + case 40: + siguiente(key); + break; + case 37: + retrocederPagina(); + break; + case 39: + avanzarPagina(); + break; + } + }; + + $scope.agregarDomicilio = function () { + $scope.domicilio.valores = []; + $scope.domicilio.idCliente = $scope.idCliente; + if ($scope.domicilio.calle) { + $scope.domicilio.valores.push({ + ID_ADAC_1: 1, + dato: $scope.domicilio.calle + }); + } + if ($scope.domicilio.numeroCalle) { + $scope.domicilio.valores.push({ + ID_ADAC_1: 2, + dato: $scope.domicilio.numeroCalle + }); + } + if ($scope.domicilio.localidad.ID) { + $scope.domicilio.valores.push({ + ID_ADAC_1: 3, + dato: $scope.domicilio.localidad.NOMBRE + }); + } + if ($scope.domicilio.provincia.ID) { + $scope.domicilio.valores.push({ + ID_ADAC_1: 4, + dato: $scope.domicilio.provincia.NOMBRE + }); + } + if ($scope.domicilio.latitud) { + $scope.domicilio.valores.push({ + ID_ADAC_1: 23, + dato: $scope.domicilio.latitud.toString() + }); + } + if ($scope.domicilio.longitud) { + $scope.domicilio.valores.push({ + ID_ADAC_1: 24, + dato: $scope.domicilio.longitud.toString() + }); + } + + if (!$scope.domicilio.titulo) { + focaModalService.alert('Ingrese titulo'); + return; + } else if (!$scope.domicilio.calle) { + focaModalService.alert('Ingrese calle'); + return; + } else if (!$scope.domicilio.numeroCalle) { + focaModalService.alert('Ingrese numero de calle'); + return; + } else if (!$scope.domicilio.localidad.ID) { + focaModalService.alert('Ingrese localidad'); + return; + } else if (!$scope.domicilio.provincia.ID) { + focaModalService.alert('Ingrese provincia'); + return; + } + + //domicilios de entrega corresponden al 1 + focaModalDomicilioService + .obtenerUltimoPorNivelPadre(1) + .then(function (res) { + $scope.domicilio.nivel1 = 1; //domicilio de entrega corresponde 1 + $scope.domicilio.nivel2 = res.data[0].ultimo + 1; + focaModalDomicilioService + .guardarDomicilio($scope.domicilio) + .then(function () { + $scope.buscar(); + $scope.ingreso = false; + $scope.domicilio = {}; + }) + .catch(function () { + focaModalService.alert('Hubo un error al crear el domicilio'); + $scope.ingreso = false; + }); + }); + }; + + $scope.verPuntosDescarga = function (key) { + $scope.currentPageDomicilios[key].verPuntos = true; + $scope.select($scope.currentPageDomicilios[key]); + }; + + $scope.localizarDomicilio = function (localizar) { + var direccion = null; + if (localizar) { + direccion = { + calle: $scope.domicilio.calle, + numero: $scope.domicilio.numeroCalle, + localidad: $scope.domicilio.localidad.NOMBRE, + provincia: $scope.domicilio.provincia.NOMBRE + }; + } + var modalInstance = $uibModal.open( + { + ariaLabelledBy: 'Buscar domicilio', + templateUrl: 'modal-localizar.html', + controller: 'focaModalLocalizarController', + size: 'lg', + resolve: { + parametros: { + direccion: direccion, + latitud: $scope.domicilio.latitud, + longitud: $scope.domicilio.longitud } + } + } + ); + modalInstance.result.then(function (res) { + $scope.domicilio.latitud = res.latitud; + $scope.domicilio.longitud = res.longitud; + }, function () { + //TODO: función llamada cuando cancela el modal + }); + }; + + $scope.next = function (key) { + if (key === 13) $scope.focused++; + }; + + function calcularPages(paginaActual) { + var paginas = []; + paginas.push(paginaActual); + + if (paginaActual - 1 > 1) { + + paginas.unshift(paginaActual - 1); + if (paginaActual - 2 > 1) { + paginas.unshift(paginaActual - 2); + } + } - function avanzarPagina() { - if ($scope.currentPage < $scope.lastPage) { - $scope.selectPage($scope.currentPage + 1); - $scope.selectedDomicilio = 0; - } - } + if (paginaActual + 1 < $scope.lastPage) { + paginas.push(paginaActual + 1); + if (paginaActual + 2 < $scope.lastPage) { + paginas.push(paginaActual + 2); } - ] - ); + } + + if (paginaActual !== 1) { + paginas.unshift(1); + } + + if (paginaActual !== $scope.lastPage) { + paginas.push($scope.lastPage); + } + + return paginas; + } + + function primera() { + $scope.selectedDomicilio = 0; + } + + function anterior() { + if ($scope.selectedDomicilio === 0 && $scope.currentPage > 1) { + retrocederPagina(); + } else { + $scope.selectedDomicilio--; + } + } + + function siguiente() { + if ($scope.selectedDomicilio < $scope.currentPageDomicilios.length) { + $scope.selectedDomicilio++; + } else { + avanzarPagina(); + } + } + + function retrocederPagina() { + if ($scope.currentPage > 1) { + $scope.selectPage($scope.currentPage - 1); + $scope.selectedDomicilio = $scope.numPerPage - 1; + } + } + + function avanzarPagina() { + if ($scope.currentPage < $scope.lastPage) { + $scope.selectPage($scope.currentPage + 1); + $scope.selectedDomicilio = 0; + } + } + } + ] + ); diff --git a/src/js/idomicilio.js b/src/js/idomicilio.js new file mode 100644 index 0000000..220867c --- /dev/null +++ b/src/js/idomicilio.js @@ -0,0 +1,18 @@ +angular.module('focaModalDomicilio') + .service('IDomicilio', [ + function () { + return { + provincia: { + ID: null, + NOMBRE: '', + COD_RESOL_60: null, + COD_RG1510: null, + }, + localidad: { + ID: null, + PCI: null, + NOMBRE: '' + } + } + } + ]); diff --git a/src/js/service.js b/src/js/service.js index e6ca51c..9e1921b 100644 --- a/src/js/service.js +++ b/src/js/service.js @@ -1,22 +1,30 @@ angular.module('focaModalDomicilio') - .service('focaModalDomicilioService', [ - '$http', - 'API_ENDPOINT', - function($http, API_ENDPOINT) { - return { - getDomiciliosEntregaByIdCliente: function(id) { - return $http.get(API_ENDPOINT.URL + - '/domicilio/entrega/cliente/' + id); - }, - guardarDomicilio: function(domicilio) { - return $http.post(API_ENDPOINT.URL + '/domicilio', {domicilio: domicilio}); - }, - guardarContacto: function(contacto) { - return $http.post(API_ENDPOINT.URL + '/contacto', {contacto: contacto}); - }, - obtenerUltimoPorNivelPadre: function(nivel1) { - return $http.get(API_ENDPOINT.URL + '/domicilio/ultimo/' + nivel1); - } - }; + .service('focaModalDomicilioService', [ + '$http', 'API_ENDPOINT', + function ($http, API_ENDPOINT) { + return { + getDomiciliosEntregaByIdCliente: function (id) { + return $http.get(API_ENDPOINT.URL + + '/domicilio/entrega/cliente/' + id); + }, + guardarDomicilio: function (domicilio) { + return $http.post(API_ENDPOINT.URL + '/domicilio', { domicilio: domicilio }); + }, + guardarContacto: function (contacto) { + return $http.post(API_ENDPOINT.URL + '/contacto', { contacto: contacto }); + }, + obtenerUltimoPorNivelPadre: function (nivel1) { + return $http.get(API_ENDPOINT.URL + '/domicilio/ultimo/' + nivel1); + }, + getProvinciaTableFormat: function () { + return [ + { propiedad: 'ID', nombre: 'Codigo', filtro: { nombre: 'rellenarDigitos', parametro: 3 } }, + { propiedad: 'NOMBRE', nombre: 'Nombre' } + ] + }, + getLocalidadTableFormat: function () { + return [{ propiedad: 'ID', nombre: 'Código', }, { propiedad: 'NOMBRE', nombre: 'Nombre' }] } - ]); + }; + } + ]); diff --git a/src/views/modal-domicilio.html b/src/views/modal-domicilio.html index 6c6ec88..ed3eecc 100644 --- a/src/views/modal-domicilio.html +++ b/src/views/modal-domicilio.html @@ -10,16 +10,14 @@ ng-click="ingreso = true" ng-show="!ingreso" title="Nuevo"> - +