controller-general-unidad.js 7.73 KB
angular.module('focaModalInforme')
    .controller('focaModalInformeGeneralUnidadController', 
        [
            '$filter',
            '$scope',
            '$uibModalInstance',
            'focaModalInformeGeneralUnidadService',
            'i18nService',
            'focaModalService',
            function($filter, $scope, $uibModalInstance,
                focaModalInformeGeneralUnidadService, i18nService, focaModalService
            ) {
                i18nService.setCurrentLang('es');
                var fecha = new Date();
                $scope.generando = false;
                $scope.buscar = true;
                $scope.informe = {};
                $scope.params = {
                    fechaHasta: new Date(),
                    fechaDesde: new Date(fecha.setMonth(fecha.getMonth() - 1)),
                    sector: undefined,
                    diferenciarProductos: false,
                    detallarPorMes: false
                };
                $scope.gridOptions = {
                    enableGridMenu: true,
                    exporterMenuCsv: false,
                    exporterPdfPageSize: 'A4',
                    exporterPdfFooter: function (currentPage, pageCount) {
                        return {
                            columns: [
                                {text: $filter('date')(new Date(), 'dd/MM/yyyy'),
                                    margin: [40, 0]},
                                {text: currentPage + ' de ' + pageCount,
                                    margin: [28, 0], alignment: 'right'}
                            ]
                        };
                    },
                    columnDefs: [
                        {
                            field: 'vehiculo',
                            enableSorting: false,
                            cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) {
                                if (grid.getCellValue(row,col).indexOf('Sector:') !== -1) 
                                    return 'yellow w-100';
                                if (grid.getCellValue(row,col).indexOf('Producto:') !== -1) 
                                    return 'red w-100';
                                if (grid.getCellValue(row,col).indexOf('Mes:') !== -1) 
                                    return 'green w-100';
                            }
                        },
                        { 
                            field: 'kmRecorridos',
                            enableSorting: false,
                            cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) {
                                if (!grid.getCellValue(row,col)) 
                                    return 'd-none';
                            }
                        },
                        {
                            field: 'litrosRepartidos',
                            enableSorting: false,
                            cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) {
                                if (!grid.getCellValue(row,col)) 
                                    return 'd-none';
                            }
                        },
                        { 
                            field: 'viajes',
                            enableSorting: false,
                            cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) {
                                if (!grid.getCellValue(row,col)) 
                                    return 'd-none';
                            }
                        }
                    ]
                };
                $scope.generarInforme = function() {
                    $scope.generando = true;
                    focaModalInformeGeneralUnidadService
                        .getInformeData($scope.params)
                        .then(function(res) {
                            console.log(res);
                            var result = [];

                            res.data.forEach(function(sector) {
                                if (!$scope.params.sector ||
                                    $scope.params.sector.ID === sector.idSector) {
                                    result.push({
                                        vehiculo: 'Sector: ' +
                                            $filter('rellenarDigitos')(sector.idSector, 2, '0') +
                                            ' - ' + sector.sector.trim()
                                    });
                                    sector.productos.forEach(function(producto) {
                                        result.push({
                                            vehiculo: 'Producto: ' +
                                                producto.idProducto +
                                                ' - ' + producto.producto
                                        });
                                        producto.fechas.forEach(function(fecha) {
                                            result.push({
                                                vehiculo: 'Mes: ' + fecha.fecha
                                            });
                                            fecha.vehiculos.forEach(function(vehiculo) {
                                                result.push({
                                                    vehiculo: vehiculo.vehiculo,
                                                    kmRecorridos: $filter('number')(vehiculo.data.kms, 2),
                                                    litrosRepartidos: $filter('number')(vehiculo.data.lts, 2),
                                                    viajes: $filter('number')(vehiculo.data.viajes, 0)
                                                });
                                            });
                                        });
                                    });
                                }
                            });


                            $scope.gridOptions.data = result;
                            $scope.generando = false;
                            $scope.buscar = false;
                        });
                };

                $scope.seleccionarSector = function(key) {
                    if (key === 13) {
                        var parametrosModal = {
                            titulo: 'Búsqueda de Sector',
                            query: '/sector',
                            columnas: [
                                {
                                    nombre: 'Código',
                                    propiedad: 'ID'
                                },
                                {
                                    nombre: 'Nombre',
                                    propiedad: 'NOMBRE'
                                }
                            ],
                            size: 'md'
                        };
                        focaModalService.modal(parametrosModal).then(
                            function(sector) {
                                $scope.params.sector = sector;
                            }, function() {}
                        );
                    }
                };
                $scope.volver = function() {
                    $scope.buscar = true;
                };
                $scope.cancel = function() {
                    $uibModalInstance.dismiss('Cancelar');
                };

                function agruparProductos(productos) {
                    console.log('productos', productos);
                    var result = {
                        vehiculos: []
                    };
                    productos.forEach(function(producto) {
                        result.vehiculos = result.vehiculos.concat();
                    });
                    return productos;
                }
            }
        ]
    );