controller.js 8.94 KB
angular.module('focaAbmVendedorCobrador')
    .controller('focaAbmVendedoresCobradoresController', [
        '$scope', 'focaAbmVendedorCobradorService', '$location', '$filter',
        '$uibModal', 'focaBotoneraLateralService',
        function($scope, focaAbmVendedorCobradorService, $location, $filter,
            $uibModal, focaBotoneraLateralService) {

            $scope.now = new Date();
            $scope.vendedoresCobradores = [];
            $scope.filters = '';
            $scope.numPerPage = 10;
            $scope.currentPageVendedoresCobradores = [];
            $scope.filteredVendedoresCobradores = [];

            //SETEO BOTONERA LATERAL
            focaBotoneraLateralService.showSalir(true);
            focaBotoneraLateralService.showPausar(false);
            focaBotoneraLateralService.showCancelar(false);
            focaBotoneraLateralService.showGuardar(false);
            
            focaAbmVendedorCobradorService.getVendedoresCobradores().then(function(res) {
                $scope.vendedoresCobradores = res.data;

                $scope.search();
            });

            $scope.editar = function(id) {
                $location.path('/vendedor-cobrador/' + id);
            };

            $scope.selectPage = function(page) {
                var start = (page - 1) * $scope.numPerPage;
                var end = start + $scope.numPerPage;
                $scope.paginas = [];
                $scope.paginas = calcularPages(page);
                $scope.currentPageVendedoresCobradores =
                    $scope.filteredVendedoresCobradores.slice(start, end);
                $scope.currentPage = page;
            };

            $scope.resetPage = function() {
                $scope.currentPage = 1;
                $scope.selectPage(1);
            };

            $scope.search = function() {
                $scope.filteredVendedoresCobradores = $filter('filter')(
                    $scope.vendedoresCobradores, {$: $scope.filters}
                );

                $scope.lastPage = Math.ceil(
                    $scope.filteredVendedoresCobradores.length / $scope.numPerPage
                );

                $scope.resetPage();
            };

            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.selectedClientes = 0;
            }

            function anterior() {
                if ($scope.selectedClientes === 0 && $scope.currentPage > 1) {
                    retrocederPagina();
                } else {
                    $scope.selectedClientes--;
                }
            }

            function siguiente() {
                if ($scope.selectedClientes < $scope.currentPageVendedoresCobradores.length - 1 ) {
                    $scope.selectedClientes++;
                } else {
                        avanzarPagina();
                }
            }

            function retrocederPagina() {
                if ($scope.currentPage > 1) {
                    $scope.selectPage($scope.currentPage - 1);
                    $scope.selectedClientes = $scope.numPerPage - 1;
                }
            }

            function avanzarPagina() {
                if ($scope.currentPage < $scope.lastPage) {
                    $scope.selectPage($scope.currentPage + 1);
                    $scope.selectedClientes = 0;
                }
            }
        }
    ])
    .controller('focaAbmVendedorCobradorController', [
        '$scope', 'focaAbmVendedorCobradorService', '$routeParams', 'focaBotoneraLateralService',
        '$timeout', '$uibModal', '$location', 'focaModalService',
        function($scope, focaAbmVendedorCobradorService, $routeParams, focaBotoneraLateralService,
            $timeout, $uibModal, $location, focaModalService) {

            $scope.now = new Date();
            $scope.vendedorCobrador = {
                CodVen: 0,
                ES_COBRADOR: false,
                DNI: ' ',
                ClaVen: '',
                ComVen: '0.00',
                provincia: {
                    NOMBRE: ''
                },
                localidad: {
                    NOMBRE: ''
                }
            };
            //SETEO BOTONERA LATERAL
            $timeout(function() {
                focaBotoneraLateralService.showSalir(false);
                focaBotoneraLateralService.showPausar(true);
                focaBotoneraLateralService.showCancelar(true);
                focaBotoneraLateralService.showGuardar(true, $scope.guardar);
            });

            focaAbmVendedorCobradorService
                .getVendedorCobradorById($routeParams.id)
                .then(function(res) {
                    if(res.data){
                        $scope.vendedorCobrador = res.data;
                        delete $scope.vendedorCobrador.FCVEN;
                        delete $scope.vendedorCobrador.FEC;
                    }
                });

            $scope.guardar = function() {
                if($scope.vendedorCobrador.ClaVen !== $scope.vendedorCobrador.ClaVen2) {
                    focaModalService.alert('Las contraseñas deben coincidir');
                        return;
                }
                $scope.vendedorCobrador.PciVen = $scope.vendedorCobrador.provincia.ID;
                $scope.vendedorCobrador.LocVen = $scope.vendedorCobrador.localidad.ID;

                delete $scope.vendedorCobrador.provincia;
                delete $scope.vendedorCobrador.localidad;
                delete $scope.vendedorCobrador.ClaVen2;

                focaAbmVendedorCobradorService
                    .guardarVendedorCobrador($scope.vendedorCobrador)
                    .then(function() {
                        $location.path('/vendedor-cobrador');
                    });
            };

            $scope.seleccionarProvincia = function(key) {
                if(key === 13) {
                    var modalInstance = $uibModal.open(
                        {
                            ariaLabelledBy: 'Búsqueda de provincias',
                            templateUrl: 'modal-provincias.html',
                            controller: 'focaModalProvinciaController',
                            size: 'md',
                            resolve: {
                                filters: function() {
                                    return $scope.vendedorCobrador.provincia.NOMBRE;
                                }
                            }
                        }
                    );
                    modalInstance.result.then(function(provincia) {
                        $scope.vendedorCobrador.provincia = provincia;
                        $timeout(function() {
                            $scope.focused = 5;
                        });
                    }, function() {
                        //TODO: función llamada cuando cancela el modal
                    });
                }
            };
            $scope.seleccionarLocalidad = function(key) {
                if(!$scope.vendedorCobrador.provincia.ID) {
                    //TODO: Poner modal alert de foca 
                    alert('Seleccione una provincia');
                    return;
                }
                if(key === 13) {
                    var modalInstance = $uibModal.open(
                        {
                            ariaLabelledBy: 'Búsqueda de localidades',
                            templateUrl: 'modal-localidades.html',
                            controller: 'focaModalLocalidadController',
                            size: 'md',
                            resolve: {
                                filters: {
                                    idProvincia: $scope.vendedorCobrador.provincia.ID,
                                    busqueda: $scope.vendedorCobrador.localidad.NOMBRE
                                }
                            }
                        }
                    );
                    modalInstance.result.then(function(localidad) {
                        $scope.vendedorCobrador.localidad = localidad;
                    }, function() {
                        //TODO: función llamada cuando cancela el modal
                    });
                }
            };
        }
    ]);