/* global api_url, angular */

angular.module("app").service("VentasTagService", [
    '$uhttp',
    function ($uhttp) {
        var controller = "ventas_tag/";
        
        this.getRecargasReporte = function (filtros) {
            // Evitar manipular el objeto original
            var params = angular.copy(filtros);
            
            // Limpiar parámetros undefined o null
            Object.keys(params).forEach(function(key) {
                if (params[key] === undefined || params[key] === null) {
                    delete params[key];
                }
            });
            
            // Asegurar que tipo_movimiento se envía correctamente
            if (params.tipo_movimiento && params.tipo_movimiento === 'TODOS') {
                delete params.tipo_movimiento;
            }
            
            return $uhttp({
                url: api_url + controller + 'get_recargas_reporte',
                method: 'GET',
                params: params
            });
        };
        
        this.exportarRecargasExcel = function (filtros) {
            // Crear una copia de los filtros
            var params = angular.copy(filtros);
            
            // Formatear fechas si son objetos moment
            if (params.fecha_inicio && moment.isMoment(params.fecha_inicio)) {
                params.fecha_inicio = params.fecha_inicio.format('YYYY-MM-DD');
            }
            if (params.fecha_fin && moment.isMoment(params.fecha_fin)) {
                params.fecha_fin = params.fecha_fin.format('YYYY-MM-DD');
            }
            
            // Limpiar valores null o undefined
            Object.keys(params).forEach(key => {
                if (params[key] === null || params[key] === undefined) {
                    delete params[key];
                }
            });
            
            return $uhttp({
                url: api_url + controller + 'exportar_recargas_excel',
                method: 'GET',
                params: params
            });
        };
        
        this.getUrlTicketRecarga = function (id) {
            return api_url + controller + 'imprime_ticket_recarga/' + id;
        };

        this.getUrlHistoricoRecargas = function(tag_id) {
            return api_url + controller + 'exportar_historico_recargas/' + tag_id;
        };
        
        this.getUrlExportarRecargasPdf = function (filtros) {
            // Normalizar formato de fechas
            var params = angular.copy(filtros);
            
            if (params.fecha_inicio && typeof params.fecha_inicio === 'object') {
                params.fecha_inicio = params.fecha_inicio.format('YYYY-MM-DD');
            }
            
            if (params.fecha_fin && typeof params.fecha_fin === 'object') {
                params.fecha_fin = params.fecha_fin.format('YYYY-MM-DD');
            }
            
            // Crear URL con parámetros
            var url = api_url + controller + 'exportar_recargas_pdf';
            var queryParams = [];
            
            for (var key in params) {
                if (params[key] !== null && params[key] !== undefined) {
                    queryParams.push(key + '=' + encodeURIComponent(params[key]));
                }
            }
            
            if (queryParams.length > 0) {
                url += '?' + queryParams.join('&');
            }
            
            return url;
        };
        this.getAllMovimientos = function() {
            return $uhttp({
                url: api_url + controller + 'get_all_movimientos',
                method: 'GET'
            });
        };
    }
]);