controller.js 4.97 KB
angular.module('focaEstadoCisternas')
    .controller('focaEstadoCisternasController', [
        '$scope', 'focaEstadoCisternasService', 'focaModalService',
        '$uibModal', 'focaBotoneraLateralService', '$timeout',
        function($scope, focaEstadoCisternasService, focaModalService,
            $uibModal, focaBotoneraLateralService, $timeout) {

            $scope.now = new Date();
            $scope.fecha = new Date();
            $scope.cisternas = [];
            $scope.botonera = focaEstadoCisternasService.getBotonera();

            //SETEO BOTONERA LATERAL
            focaBotoneraLateralService.showSalir(true);
            focaBotoneraLateralService.showPausar(false);
            focaBotoneraLateralService.showCancelar(false);
            focaBotoneraLateralService.showGuardar(false);

            $timeout(function() {
                $scope.$broadcast('addCabecera', {
                    label: 'Fecha:',
                    valor: $scope.fecha.toLocaleDateString()
                });
            });

            $scope.seleccionarTransportista = function() {
                var modalInstance = $uibModal.open(
                    {
                        ariaLabelledBy: 'Busqueda de Transportista',
                        templateUrl: 'modal-proveedor.html',
                        controller: 'focaModalProveedorCtrl',
                        size: 'lg',
                        resolve: {
                            transportista: function() {
                                return true;
                            }
                        }
                    }
                );
                return modalInstance.result;
            };

            $scope.seleccionarVehiculo = function() {
                $scope.seleccionarTransportista().then(
                    function(transportista) {
                        elegirTransportista(transportista);

                        var query = '/vehiculo/transportista/' + $scope.idTransportista;
                        var columnas = {
                            nombre: ['Código', 'tractor', 'Semi', 'Capacidad'],
                            propiedad: ['codigo', 'tractor', 'semi', 'capacidadTotalCisternas']
                        };
                        var titulo = 'Búsqueda de vehículos';

                        focaModalService.modal(columnas, query, titulo).then(
                            function(vehiculo) {
                                $scope.$broadcast('addCabecera', {
                                    label: 'Vehículo:',
                                    valor: vehiculo.codigo
                                });
                                $scope.cisternas = vehiculo.cisternas;
                                getEstadosCisternas($scope.cisternas);
                            }, function() {
                                $scope.seleccionarVehiculo();
                            });
                });
            };

            $scope.seleccionarFechaEntrega = function() {
                focaModalService.modalFecha('Fecha').then(function(fecha) {
                    $scope.$broadcast('addCabecera', {
                        label: 'Fecha:',
                        valor: fecha.toLocaleDateString()
                    });
                    $scope.fecha = fecha;
                    if($scope.cisternas)
                        getEstadosCisternas($scope.cisternas);
                });
            };

            $scope.seleccionarGrafico = function() {
                if(!$scope.cisternas.length){
                    focaModalService.alert('Primero seleccione un vehículo con cisternas');
                    return;
                }
                $uibModal.open(
                    {
                        ariaLabelledBy: 'Grafico de cisternas',
                        templateUrl: 'modal-grafico-cisternas.html',
                        controller: 'focaModalGraficoCisternasController',
                        size: 'md',
                        resolve:{
                            filters: {
                                cisternas: $scope.cisternas
                            }
                        }
                    }
                );
            };

            function elegirTransportista(transportista) {
                var codigo = ('00000' + transportista.COD).slice(-5);
                $scope.idTransportista = transportista.COD;
                $scope.filtros = transportista.NOM.trim();
                $scope.$broadcast('addCabecera', {
                    label: 'Transportista:',
                    valor: codigo + ' - ' + transportista.NOM
                });
            }

            function getEstadosCisternas(cisternas) {
                cisternas.forEach(function(cisterna) {
                    focaEstadoCisternasService
                        .getEstadoCisterna(cisterna.id, $scope.fecha)
                        .then(function(res) {
                            cisterna.estado = res.data;
                        });
                });
            }
        }
    ]);