Commit e180278ae0303440051a7a5a76876ff9b152d343

Authored by Nicolás Guarnieri
Exists in master and in 1 other branch develop

Merge branch 'master' into 'master'

Master

See merge request !9
src/js/controller.js
1 angular.module('focaModalDomicilio') 1 angular.module('focaModalDomicilio')
2 .controller('focaModalDomicilioController', 2 .controller('focaModalDomicilioController',
3 [ 3 [
4 '$timeout', 4 '$timeout',
5 '$filter', 5 '$filter',
6 '$scope', 6 '$scope',
7 '$uibModalInstance', 7 '$uibModalInstance',
8 'focaModalDomicilioService', 8 'focaModalDomicilioService',
9 '$uibModal', 9 '$uibModal',
10 'idCliente', 10 'idCliente',
11 'esNuevo', 11 'esNuevo',
12 'articulos',
13 function($timeout, $filter, $scope, $uibModalInstance, focaModalDomicilioService, 12 function($timeout, $filter, $scope, $uibModalInstance, focaModalDomicilioService,
14 $uibModal, idCliente, esNuevo, articulos) { 13 $uibModal, idCliente, esNuevo) {
15 14
16 $scope.buscar = function() { 15 $scope.buscar = function() {
17 focaModalDomicilioService 16 focaModalDomicilioService
18 .getDomiciliosEntregaByIdCliente($scope.idCliente) 17 .getDomiciliosEntregaByIdCliente($scope.idCliente)
19 .then(function(res) { 18 .then(function(res) {
20 $scope.domicilios = res.data; 19 $scope.domicilios = res.data;
21 $scope.search(); 20 $scope.search();
22 $scope.primerBusqueda = true; 21 $scope.primerBusqueda = true;
23 } 22 }
24 ); 23 );
25 }; 24 };
26 $scope.filters = ''; 25 $scope.filters = '';
27 $scope.idCliente = idCliente; 26 $scope.idCliente = idCliente;
28 $scope.buscar(); 27 $scope.buscar();
29 $scope.ingreso = esNuevo; 28 $scope.ingreso = esNuevo;
30 $scope.primerBusqueda = false; 29 $scope.primerBusqueda = false;
31 $scope.contactos = [{}]; 30 $scope.contactos = [{}];
32 // pagination 31 // pagination
33 $scope.numPerPage = 5; 32 $scope.numPerPage = 5;
34 $scope.currentPage = 1; 33 $scope.currentPage = 1;
35 $scope.filteredDomicilios = []; 34 $scope.filteredDomicilios = [];
36 $scope.currentPageDomicilios = []; 35 $scope.currentPageDomicilios = [];
37 $scope.selectedDomicilio = -1; 36 $scope.selectedDomicilio = -1;
38 $scope.focused = 1; 37 $scope.focused = 1;
39 var puntosDescarga = []; 38 var puntosDescarga = [];
40 39
41 //METODOS 40 //METODOS
42 $scope.search = function(pressed) { 41 $scope.search = function(pressed) {
43 $scope.filteredDomicilios = $filter('filter')( 42 $scope.filteredDomicilios = $filter('filter')(
44 $scope.domicilios, 43 $scope.domicilios,
45 {$: $scope.filters} 44 {$: $scope.filters}
46 ); 45 );
47 46
48 if(pressed) { 47 if(pressed) {
49 if($scope.filteredDomicilios.length === 0) { 48 if($scope.filteredDomicilios.length === 0) {
50 $timeout(function() { 49 $timeout(function() {
51 angular.element('#search')[0].focus(); 50 angular.element('#search')[0].focus();
52 $scope.filters = ''; 51 $scope.filters = '';
53 }); 52 });
54 }else { 53 }else {
55 primera(); 54 primera();
56 } 55 }
57 } 56 }
58 57
59 $scope.lastPage = Math.ceil( 58 $scope.lastPage = Math.ceil(
60 $scope.filteredDomicilios.length / $scope.numPerPage 59 $scope.filteredDomicilios.length / $scope.numPerPage
61 ); 60 );
62 61
63 $scope.resetPage(); 62 $scope.resetPage();
64 }; 63 };
65 64
66 $scope.resetPage = function() { 65 $scope.resetPage = function() {
67 $scope.currentPage = 1; 66 $scope.currentPage = 1;
68 $scope.selectPage(1); 67 $scope.selectPage(1);
69 }; 68 };
70 69
71 $scope.selectPage = function(page) { 70 $scope.selectPage = function(page) {
72 var start = (page - 1) * $scope.numPerPage; 71 var start = (page - 1) * $scope.numPerPage;
73 var end = start + $scope.numPerPage; 72 var end = start + $scope.numPerPage;
74 $scope.paginas = []; 73 $scope.paginas = [];
75 $scope.paginas = calcularPages(page); 74 $scope.paginas = calcularPages(page);
76 $scope.currentPageDomicilios = $scope.filteredDomicilios.slice(start, end); 75 $scope.currentPageDomicilios = $scope.filteredDomicilios.slice(start, end);
77 $scope.currentPage = page; 76 $scope.currentPage = page;
78 }; 77 };
79 78
80 $scope.select = function(domicilio) { 79 $scope.select = function(domicilio) {
81 $uibModalInstance.close(domicilio); 80 $uibModalInstance.close(domicilio);
82 }; 81 };
83 82
84 $scope.cancel = function() { 83 $scope.cancel = function() {
85 $uibModalInstance.dismiss('cancel'); 84 $uibModalInstance.dismiss('cancel');
86 }; 85 };
87 86
88 $scope.busquedaDown = function(key) { 87 $scope.busquedaDown = function(key) {
89 if (key === 40) { 88 if (key === 40) {
90 primera(key); 89 primera(key);
91 } 90 }
92 }; 91 };
93 92
94 $scope.busquedaPress = function(key) { 93 $scope.busquedaPress = function(key) {
95 if (key === 13) { 94 if (key === 13) {
96 $scope.search(true); 95 $scope.search(true);
97 } 96 }
98 }; 97 };
99 98
100 $scope.itemDomicilio = function(key) { 99 $scope.itemDomicilio = function(key) {
101 if (key === 38) { 100 if (key === 38) {
102 anterior(key); 101 anterior(key);
103 } 102 }
104 103
105 if (key === 40) { 104 if (key === 40) {
106 siguiente(key); 105 siguiente(key);
107 } 106 }
108 107
109 if (key === 37) { 108 if (key === 37) {
110 retrocederPagina(); 109 retrocederPagina();
111 } 110 }
112 111
113 if (key === 39) { 112 if (key === 39) {
114 avanzarPagina(); 113 avanzarPagina();
115 } 114 }
116 }; 115 };
117 116
118 $scope.agregarDomicilio = function() { 117 $scope.agregarDomicilio = function() {
119 $scope.domicilio.valores = []; 118 $scope.domicilio.valores = [];
120 $scope.domicilio.idCliente = $scope.idCliente; 119 $scope.domicilio.idCliente = $scope.idCliente;
121 if($scope.domicilio.calle) { 120 if($scope.domicilio.calle) {
122 $scope.domicilio.valores.push({ 121 $scope.domicilio.valores.push({
123 ID_ADAC_1: 1, 122 ID_ADAC_1: 1,
124 dato: $scope.domicilio.calle 123 dato: $scope.domicilio.calle
125 }); 124 });
126 } 125 }
127 if($scope.domicilio.numeroCalle) { 126 if($scope.domicilio.numeroCalle) {
128 $scope.domicilio.valores.push({ 127 $scope.domicilio.valores.push({
129 ID_ADAC_1: 2, 128 ID_ADAC_1: 2,
130 dato: $scope.domicilio.numeroCalle 129 dato: $scope.domicilio.numeroCalle
131 }); 130 });
132 } 131 }
133 if($scope.domicilio.localidad) { 132 if($scope.domicilio.localidad) {
134 $scope.domicilio.valores.push({ 133 $scope.domicilio.valores.push({
135 ID_ADAC_1: 3, 134 ID_ADAC_1: 3,
136 dato: $scope.domicilio.localidad 135 dato: $scope.domicilio.localidad
137 }); 136 });
138 } 137 }
139 if($scope.domicilio.provincia) { 138 if($scope.domicilio.provincia) {
140 $scope.domicilio.valores.push({ 139 $scope.domicilio.valores.push({
141 ID_ADAC_1: 4, 140 ID_ADAC_1: 4,
142 dato: $scope.domicilio.provincia 141 dato: $scope.domicilio.provincia
143 }); 142 });
144 } 143 }
145 if($scope.domicilio.latitud) { 144 if($scope.domicilio.latitud) {
146 $scope.domicilio.valores.push({ 145 $scope.domicilio.valores.push({
147 ID_ADAC_1: 23, 146 ID_ADAC_1: 23,
148 dato: $scope.domicilio.latitud 147 dato: $scope.domicilio.latitud
149 }); 148 });
150 } 149 }
151 if($scope.domicilio.longitud) { 150 if($scope.domicilio.longitud) {
152 $scope.domicilio.valores.push({ 151 $scope.domicilio.valores.push({
153 ID_ADAC_1: 24, 152 ID_ADAC_1: 24,
154 dato: $scope.domicilio.longitud 153 dato: $scope.domicilio.longitud
155 }); 154 });
156 } 155 }
157 //domicilios de entrega corresponden al 1 156 //domicilios de entrega corresponden al 1
158 focaModalDomicilioService 157 focaModalDomicilioService
159 .obtenerUltimoPorNivelPadre(1) 158 .obtenerUltimoPorNivelPadre(1)
160 .then(function(res) { 159 .then(function(res) {
161 $scope.domicilio.nivel1 = 1;//domicilio de entrega corresponde 1 160 $scope.domicilio.nivel1 = 1;//domicilio de entrega corresponde 1
162 $scope.domicilio.nivel2 = res.data[0].ultimo + 1; 161 $scope.domicilio.nivel2 = res.data[0].ultimo + 1;
163 focaModalDomicilioService 162 focaModalDomicilioService
164 .guardarDomicilio($scope.domicilio) 163 .guardarDomicilio($scope.domicilio)
165 .then(function() { 164 .then(function() {
166 $scope.buscar(); 165 $scope.buscar();
167 $scope.ingreso = false; 166 $scope.ingreso = false;
168 $scope.domicilio = {}; 167 $scope.domicilio = {};
169 }); 168 });
170 }); 169 });
171 }; 170 };
172 171
173 $scope.verPuntosDescarga = function(key) { 172 $scope.verPuntosDescarga = function(key) {
174 173
175 var modalInstance = $uibModal.open( 174 $scope.currentPageDomicilios[key].verPuntos = true;
176 { 175 $scope.select($scope.currentPageDomicilios[key]);
177 ariaLabelledBy: 'Busqueda de Puntos de descarga',
178 templateUrl: 'modal-punto-descarga.html',
179 controller: 'focaModalPuntoDescargaController',
180 size: 'lg',
181 resolve: {
182 filters: {
183 idDomicilio: $scope.domicilios[key].id,
184 idCliente: idCliente,
185 articulos: articulos
186 }
187 }
188 }
189 );
190 modalInstance.result.then(function(puntosDescarga) {
191 $scope.domicilios[key].puntosDescarga = puntosDescarga;
192 $scope.select($scope.domicilios[key]);
193 }, function() {
194 //TODO: función llamada cuando cancela el modal
195 });
196 }; 176 };
197 177
198 $scope.localizarDomicilio = function(localizar) { 178 $scope.localizarDomicilio = function(localizar) {
199 var direccion = null; 179 var direccion = null;
200 if(localizar) { 180 if(localizar) {
201 direccion = { 181 direccion = {
202 calle: $scope.domicilio.calle, 182 calle: $scope.domicilio.calle,
203 numero: $scope.domicilio.numeroCalle, 183 numero: $scope.domicilio.numeroCalle,
204 localidad: $scope.domicilio.localidad, 184 localidad: $scope.domicilio.localidad,
205 provincia: $scope.domicilio.provincia 185 provincia: $scope.domicilio.provincia
206 }; 186 };
207 } 187 }
208 var modalInstance = $uibModal.open( 188 var modalInstance = $uibModal.open(
209 { 189 {
210 ariaLabelledBy: 'Buscar domicilio', 190 ariaLabelledBy: 'Buscar domicilio',
211 templateUrl: 'modal-localizar.html', 191 templateUrl: 'modal-localizar.html',
212 controller: 'focaModalLocalizarController', 192 controller: 'focaModalLocalizarController',
213 size: 'lg', 193 size: 'lg',
214 resolve: { 194 resolve: {
215 direccion: direccion 195 direccion: direccion
216 } 196 }
217 } 197 }
218 ); 198 );
219 modalInstance.result.then(function(res) { 199 modalInstance.result.then(function(res) {
220 $scope.domicilio.latitud = res.latitud; 200 $scope.domicilio.latitud = res.latitud;
221 $scope.domicilio.longitud = res.longitud; 201 $scope.domicilio.longitud = res.longitud;
222 }, function() { 202 }, function() {
223 //TODO: función llamada cuando cancela el modal 203 //TODO: función llamada cuando cancela el modal
224 }); 204 });
225 }; 205 };
226 206
227 $scope.next = function(key) { 207 $scope.next = function(key) {
228 if(key === 13) $scope.focused++; 208 if(key === 13) $scope.focused++;
229 }; 209 };
230 210
231 function calcularPages(paginaActual) { 211 function calcularPages(paginaActual) {
232 var paginas = []; 212 var paginas = [];
233 paginas.push(paginaActual); 213 paginas.push(paginaActual);
234 214
235 if (paginaActual - 1 > 1) { 215 if (paginaActual - 1 > 1) {
236 216
237 paginas.unshift(paginaActual - 1); 217 paginas.unshift(paginaActual - 1);
238 if (paginaActual - 2 > 1) { 218 if (paginaActual - 2 > 1) {
239 paginas.unshift(paginaActual - 2); 219 paginas.unshift(paginaActual - 2);
240 } 220 }
241 } 221 }
242 222
243 if (paginaActual + 1 < $scope.lastPage) { 223 if (paginaActual + 1 < $scope.lastPage) {
244 paginas.push(paginaActual + 1); 224 paginas.push(paginaActual + 1);
245 if (paginaActual + 2 < $scope.lastPage) { 225 if (paginaActual + 2 < $scope.lastPage) {
246 paginas.push(paginaActual + 2); 226 paginas.push(paginaActual + 2);
247 } 227 }
248 } 228 }
249 229
250 if (paginaActual !== 1) { 230 if (paginaActual !== 1) {
251 paginas.unshift(1); 231 paginas.unshift(1);
252 } 232 }
253 233
254 if (paginaActual !== $scope.lastPage) { 234 if (paginaActual !== $scope.lastPage) {
255 paginas.push($scope.lastPage); 235 paginas.push($scope.lastPage);
256 } 236 }
257 237
258 return paginas; 238 return paginas;
259 } 239 }
260 240
261 function primera() { 241 function primera() {
262 $scope.selectedDomicilio = 0; 242 $scope.selectedDomicilio = 0;
263 } 243 }
264 244
265 function anterior() { 245 function anterior() {
266 if ($scope.selectedDomicilio === 0 && $scope.currentPage > 1) { 246 if ($scope.selectedDomicilio === 0 && $scope.currentPage > 1) {
267 retrocederPagina(); 247 retrocederPagina();
268 } else { 248 } else {
269 $scope.selectedDomicilio--; 249 $scope.selectedDomicilio--;
270 } 250 }
271 } 251 }
272 252
273 function siguiente() { 253 function siguiente() {
274 if ($scope.selectedDomicilio < $scope.currentPageDomicilios.length ) { 254 if ($scope.selectedDomicilio < $scope.currentPageDomicilios.length ) {
275 $scope.selectedDomicilio++; 255 $scope.selectedDomicilio++;
276 } else { 256 } else {
277 avanzarPagina(); 257 avanzarPagina();
278 } 258 }
279 } 259 }
280 260
281 function retrocederPagina() { 261 function retrocederPagina() {
282 if ($scope.currentPage > 1) { 262 if ($scope.currentPage > 1) {
283 $scope.selectPage($scope.currentPage - 1); 263 $scope.selectPage($scope.currentPage - 1);
284 $scope.selectedDomicilio = $scope.numPerPage - 1; 264 $scope.selectedDomicilio = $scope.numPerPage - 1;
285 } 265 }
286 } 266 }
287 267
288 function avanzarPagina() { 268 function avanzarPagina() {
289 if ($scope.currentPage < $scope.lastPage) { 269 if ($scope.currentPage < $scope.lastPage) {
290 $scope.selectPage($scope.currentPage + 1); 270 $scope.selectPage($scope.currentPage + 1);
291 $scope.selectedDomicilio = 0; 271 $scope.selectedDomicilio = 0;
292 } 272 }
293 } 273 }
294 } 274 }
295 ] 275 ]
296 ); 276 );
297 277