angular.module('focaAbmVehiculo') .controller('focaAbmVehiculoCisternaController', [ '$scope', 'focaAbmVehiculoService', '$routeParams', '$location', '$uibModal', 'focaModalService', 'focaBotoneraLateralService', '$timeout', '$window','$localStorage', function($scope, focaAbmVehiculoService, $routeParams, $location, $uibModal, focaModalService, focaBotoneraLateralService, $timeout, $window, $localStorage) { $scope.nuevo = ($routeParams.idx > -1) ? false : true; $scope.editar = false; $scope.now = new Date(); $scope.cisterna = { codigo: '', capacidad: '', unidadMedida: {} }; $scope.focused = $scope.nuevo ? 1 : 2; $scope.next = function(key) { if (key === 13) $scope.focused++; }; $scope.capacidadVechiulo = 0; $scope.transportista = ''; //SETEO BOTONERA LATERAL $timeout(function() { focaBotoneraLateralService.showSalir(false); focaBotoneraLateralService.showPausar(true); focaBotoneraLateralService.showCancelar(false); focaBotoneraLateralService.showGuardar(true, $scope.guardar); focaBotoneraLateralService.addCustomButton('Salir', $scope.salir); }); $timeout(function (){getLSCisterna();}); if ($routeParams.idx !== -1) { $scope.cisterna = [$routeParams.idx]; focaAbmVehiculoService .getCisternas($routeParams.idVehiculo) .then(function(res) { $scope.cisterna = res[$routeParams.idx]; }); } focaAbmVehiculoService.getVehiculo($routeParams.idVehiculo).then(function(res) { var codigo = ('00000' + res.data.transportista.COD).slice(-5); $scope.transportista = res.data.transportista.COD; $scope.capacidadVechiulo = res.data.capacidad; $scope.$broadcast('addCabecera', { label: 'Transportista:', valor: codigo + ' - ' + res.data.transportista.NOM }); $scope.$broadcast('addCabecera', { label: 'Unidad:', valor: res.data.codigo }); $scope.$broadcast('addCabecera', { label: 'Capacidad total vehículo:', valor: res.data.capacidad }); }); $scope.salir = function() { if (!$scope.formCisterna.$pristine) { focaModalService.confirm( '¿Está seguro de que desea salir? Se perderán todos los datos cargados.' ).then(function(data) { if (data) { $location.path('/vehiculo/' + $routeParams.idVehiculo + '/' + $scope.transportista); } }); } else { $location.path('/vehiculo/' + $routeParams.idVehiculo + '/' + $scope.transportista); } }; $scope.guardar = function() { if ($scope.formCisterna.$pristine) { $scope.salir(); return; } else if (!$scope.cisterna.codigo) { focaModalService.alert('Ingrese codigo de cisterna'); return; } else if (!$scope.cisterna.capacidad) { focaModalService.alert('Ingrese capacidad'); return; } else if (!$scope.cisterna.idUnidadMedida) { focaModalService.alert('Ingrese unidad de medida'); return; } validaCodigo() .then(function() { $scope.cisterna.idVehiculo = parseInt($routeParams.idVehiculo); delete $scope.cisterna.vehiculo; focaAbmVehiculoService .guardarCisterna($scope.cisterna, $routeParams.idx); $timeout(function() { $location.path('/vehiculo/' + $routeParams.idVehiculo + '/' + $scope.transportista); }, 0); }, function(err) { focaModalService.alert(err); }); }; $scope.seleccionarUnidadMedida = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Unidades de medida', templateUrl: 'modal-unidad-medida.html', controller: 'focaModalUnidadMedidaCtrl', size: 'lg' } ); modalInstance.result.then(function(unidaMedida) { $scope.cisterna.idUnidadMedida = unidaMedida.ID; $scope.cisterna.unidadMedida = unidaMedida; }); }; $scope.$watch('cisterna', function(newValue) { focaBotoneraLateralService.setPausarData({ label:'cisterna', val: newValue }); }, true); function getLSCisterna() { var cisterna = JSON.parse($localStorage.cisterna|| null); if (cisterna) { setearVehiculo(cisterna); delete $localStorage.cisterna; } } function setearVehiculo(cisterna) { $scope.cisterna = cisterna; $scope.$broadcast('addCabecera', { label: 'Codigo de Cisterna:', valor: cisterna.codigo }); } function validaCodigo() { return new Promise(function(resolve, reject) { focaAbmVehiculoService .getCisternas($routeParams.idVehiculo) .then(function(res) { var cisternas = res; var totalCargado = 0; cisternas.forEach(function(cisterna, idx) { //SI EL CODIGO YA EXISTE if (cisterna.codigo === $scope.cisterna.codigo && idx != $routeParams.idx && !cisterna.desactivado) { reject('Código de cisterna existente'); } if (idx !== $routeParams.idx && !cisterna.desactivado) { totalCargado += cisterna.capacidad; } }); resolve(); }); }); } } ]);