<?php

namespace App\Http\Controllers;

use App\Custom\SQLConnection;
use Illuminate\Http\Request;
use Validator; 
use stdClass;
use Response;
use DateTime;
use Session;

class AdministrarFuentesController extends Controller  
{
   /**
     * Consulta para el control de fuentes del BBVA.
     *
     * Se envia una opcion para la consulta de datos de la fuente BBVA junto con un mes
     * Se consulta la opcion seleccionada en el rango de fecha seleccionado y se devuelve los datos de la fuente
     * 
     * @return \Illuminate\Http\JsonResponse
     *  
     */
    public static function consultarTipoBbva() {
        $opcionBbva = request()->input('opcionesBbva');            
        $mesConsulta = request()->input('mesConsulta');

        switch ($opcionBbva) {
            case 'FootPr':
                $opcionBbva = 'BBF';
                break;                
            case 'limAle':
                $opcionBbva = 'BBL';
                break;
            default:
                return response()->json(['error' => 'Opción inválida.'], 400);
        }            

        $consultaRespuesta = '';
        // Verificar si el mes de consulta no esta vacio
        if (!empty($mesConsulta)) {                
            $consultaRespuesta = SQLConnection::backendStoreProcedure('control_fuente', [$opcionBbva, $mesConsulta]); 
        } else {
            return response()->json(['error' => 'Mes de consulta no proporcionado.'], 400);
        }

        return response()->json($consultaRespuesta);
    }
    
    /**
     * Logs de procesamiento de fuentes
     * 
     * Esta funcion se encarga de devolver el log de una fuente selecccionada
     * 
     * @return \Illuminate\Http\JsonResponse
     */
    public static function logsFuentes() {
        $idFuente = request()->input('idFuente');
    
        // Verificar si el ID de la fuente no esta vacio
        if (!empty($idFuente)) {
            // Store para obtener el log de la fuente
            $fuenteLog = SQLConnection::backendStoreProcedure('Fuentes_procesados_por_tipo', [$idFuente]);
    
            // Retornar el log 
            return response()->json($fuenteLog);
        } else {
            // Retornar un error si el ID de la fuente esta vacio
            return response()->json(['error' => 'ID de fuente no proporcionado o vacío.'], 400);
        }
    }

    /**
     * Logs de fuentes con periodo (mensual o anual)
     * 
     * Esta funcion se encarga de devolver los datos de edictos por periodo
     * Puede ser mensual (sp_reporte_mensual_edictos) o anual (sp_reporte_anual_edictos)
     * 
     * @return \Illuminate\Http\JsonResponse
     */
    public static function logsFuentesEdictos() {
        $fuente = request()->input('fuente', 'BORA'); // Por defecto BORA
        $tipoPeriodo = request()->input('tipoPeriodo', 'anual'); // 'anual' o 'mensual'
        $periodo = request()->input('periodo'); // '2025' para anual o '2025-01' para mensual

        // Si no se envía periodo, usar el actual
        if (empty($periodo)) {
            if ($tipoPeriodo === 'mensual') {
                $periodo = date('Y-m'); // Mes actual
            } else {
                $periodo = date('Y'); // Año actual
            }
        }

        try {
            if ($tipoPeriodo === 'mensual') {
                // EXEC sp_reporte_mensual_edictos 'BORA', '2025-01'
                $resultado = SQLConnection::backendStoreProcedure('sp_reporte_mensual_edictos', [$fuente, $periodo]);
            } else {
                // EXEC sp_reporte_anual_edictos 'BORA', '2025'
                $resultado = SQLConnection::backendStoreProcedure('sp_reporte_anual_edictos', [$fuente, $periodo]);
            }

            // Si el resultado es nulo, devolver array vacío
            $resultado = $resultado ?? [];

            return response()->json([
                'success' => true,
                'data' => $resultado,
                'tipoPeriodo' => $tipoPeriodo,
                'periodo' => $periodo,
                'fuente' => $fuente
            ]);
        } catch (\Exception $e) {
            return response()->json([
                'success' => false,
                'error' => 'Error al obtener los datos: ' . $e->getMessage()
            ], 500);
        }
    }

    /**
     * 
     * Control de fuente aporcrifa
     * 
     * Control para la tarea de fuentes apocrifas
     * Consulta datos y los devuelve en una tabla en la vista
     * 
     * @return \Illuminate\View\View
     * 
     */
    public static function controlFuenteApocrifa() {
        $contraparte = request()->input('contraparte');
        $gestion = request()->input('gestion');
        $tarea = request()->input('tarea');
    
        // Store para obtener el informe
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', [
                'SELECCIONAR_INFORME',
                $contraparte,
                NULL, 
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                $gestion
            ], 
            'selectOne'
        );
    
        // Verificar si se obtuvo el informe
        if (!$report_data) {
            return response()->json(['error' => 'Informe no encontrado.'], 404);
        }
    
        // Store para obtener las tareas
        $tareas = SQLConnection::backendStoreProcedure('LN_Blue_Tareas_Informe',[
                'tareas_informe',
                NULL,
                $report_data->informe
            ]
        );
    
        // Verificar si se obtuvieron tareas
        if (empty($tareas)) {
            return response()->json(['error' => 'Tareas no encontradas.'], 404);
        }
    
        // Buscar la tarea especifica
        $orden = NULL;
        foreach ($tareas as $t) {
            if ($t->tarea === $tarea) {
                $orden = $t->ordTarea;
                break;
            }
        }
    
        // Determinar si es la ultima tarea
        $ultima_tarea = (count($tareas) === $orden) ? 1 : 0;
        $id_tipo_informe = $tareas[0]->idTipoInforme ?? NULL; // Manejo de posibles errores
    
        $producto = $report_data->producto;
        unset($report_data);
    
        // Store para obtener datos de fuentes
        $datosFuentes = SQLConnection::backendStoreProcedure('control_fuente', ['FA']);            
    
        return view('/informes-blue/actividades-tarea/control_calidad_fuente')->with(compact('contraparte', 'tarea', 'producto', 'ultima_tarea', 'id_tipo_informe', 'datosFuentes'));
    }

    /**
     * Control de fuente BBVA
     * 
     * Control para la tarea de fuentes BBVA
     * Consulta datos y devuelve una vista, en el caso que arroje un error devuelve un json
     * 
     * @return \Illuminate\View\View
     * @return \Illuminate\Http\JsonResponse
     * 
     */
    public static function controlFuenteBbva() {
        $contraparte = request()->input('contraparte');
        $gestion = request()->input('gestion');
        $tarea = request()->input('tarea');
    
        // Store para obtener el informe
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', [
                'SELECCIONAR_INFORME',
                $contraparte,
                NULL, 
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                $gestion
            ], 
            'selectOne'
        );
    
        // Verificar si se obtuvo el informe
        if (!$report_data) {
            return response()->json(['error' => 'Informe no encontrado.'], 404);
        }
    
        // Store para obtener las tareas
        $tareas = SQLConnection::backendStoreProcedure('LN_Blue_Tareas_Informe',[
                'tareas_informe',
                NULL,
                $report_data->informe
            ]
        );
    
        // Verificar si se obtuvieron tareas
        if (empty($tareas)) {
            return response()->json(['error' => 'Tareas no encontradas.'], 404);
        }
    
        // Buscar la tarea especifica
        $orden = NULL;
        foreach ($tareas as $t) {
            if ($t->tarea === $tarea) {
                $orden = $t->ordTarea;
                break;
            }
        }
    
        // Determinar si es la ultima tarea
        $ultima_tarea = (count($tareas) === $orden) ? 1 : 0;
        $id_tipo_informe = $tareas[0]->idTipoInforme ?? NULL; 
    
        $producto = $report_data->producto;
        unset($report_data);
    
        return view('/informes-blue/actividades-tarea/control_fuente_bbva')->with(compact('contraparte', 'tarea', 'producto', 'ultima_tarea', 'id_tipo_informe'));
    }

    /**
     * 
     * Control de fuente de Juicios
     * 
     * Control para la tarea de fuentes de juicios
     * Consulta los datos y devuelve una vista si no se produce un error
     * si se produce un error deuelve un json
     * 
     * @return \Illuminate\View\View
     * @return \Illuminate\Http\JsonResponse
     * 
     */
    public static function controlFuenteJuicios() {
        $contraparte = request()->input('contraparte');
        $gestion = request()->input('gestion');
        $tarea = request()->input('tarea');

        // Store para obtener el informe
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', [
                'SELECCIONAR_INFORME',
                $contraparte,
                NULL, 
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                $gestion
            ], 
            'selectOne'
        );

        // Verificar si se obtuvo el informe
        if (!$report_data) {
            return response()->json(['error' => 'Informe no encontrado.'], 404);
        }

        // Store para obtener las tareas
        $tareas = SQLConnection::backendStoreProcedure(
            'LN_Blue_Tareas_Informe',
            [
                'tareas_informe',
                NULL,
                $report_data->informe
            ]
        );

        // Verificar si se obtuvieron tareas
        if (empty($tareas)) {
            return response()->json(['error' => 'Tareas no encontradas.'], 404);
        }

        // Buscar la tarea especifica
        $orden = NULL;
        foreach ($tareas as $t) {
            if ($t->tarea === $tarea) {
                $orden = $t->ordTarea;
                break;
            }
        }

        // Determinar si es la ultima tarea
        $ultima_tarea = (count($tareas) === $orden) ? 1 : 0;
        $id_tipo_informe = $tareas[0]->idTipoInforme ?? NULL; 

        $producto = $report_data->producto;
        unset($report_data);
        $provincias = SQLConnection::backendStoreProcedure('obtener_provincias', []);

        return view('/informes-blue/actividades-tarea/control_fuente_juicios')->with(compact('contraparte', 'tarea', 'producto', 'ultima_tarea', 'id_tipo_informe', 'provincias'));
    }

    /**
     * Funcion que obtiene los datos de la fuente de juicios discriminando por pais
     * 
     * Se obtiene la provincia seleccionada, con esta se le agrega un valor de dos letras y se consulta un store
     * En el caso que los store devuelva un NULL, este se estandariza con un array vacio
     * 
     * @return \Illuminate\Http\JsonResponse
     */
    public function obtenerFuenteJuicios() {
        // Validar los datos de entrada usando el validador
        $validar = Validator::make(request()->all(), [
            // 'opcJuicios' => 'required|in:1,2,3,4', 
            'fecha_fuente' => 'required|date_format:Y-m' 
        ]);
    
        // Si la validacion falla, devolver un error en formato JSON
        if ($validar->fails()) {
            return response()->json(['error' => $validar->errors()], 422);
        }
    
        $opcJuicios = request()->input('opcJuicios');
        $fechaFuente = request()->input('fecha_fuente') . '-01';
        
        // Asignar un valor a '$opcJuicios'
        switch ($opcJuicios) {
            case '28':
                $valorProvincia = 'JUICIOSXLS_CABA'; 
                break;
            case '33':
                $valorProvincia = 'JUICIOSXLS_CORRIENTES'; 
                break;
            case '35':
                $valorProvincia = 'JUICIOSXLS_MENDOZA'; 
                break;
            case '36':
                $valorProvincia = 'JUICIOSXLS_MISIONES'; 
                break;
            case '34':
                $valorProvincia = 'JUICIOSXLS_SANTIAGO_DEL_ESTERO'; 
                break;
            case '37':
                $valorProvincia = 'JUICIOSXLS_SAN_LUIS'; 
                break;
            case '38':
                $valorProvincia = 'JUICIOSXLS_TUCUMAN'; 
                break;
            default:
                $valorProvincia = 'JUICIOS'; 
        }
    
        $juiciosC = SQLConnection::backendStoreProcedure('control_fuente_juicios', ['C', $valorProvincia, $fechaFuente]);
        $juiciosE = SQLConnection::backendStoreProcedure('control_fuente_juicios', ['E', $valorProvincia, $fechaFuente]);
        
        // Si $juiciosC es nulo, asignar un array vacio
        $juiciosC = $juiciosC ?? []; 
        // Si $juiciosE es nulo, asignar un array vacio
        $juiciosE = $juiciosE ?? []; 
        
    
        // Devuelve una respuesta en formato JSON
        return response()->json(['juiciosE' => $juiciosE, 'juiciosC' => $juiciosC]); // Respuesta JSON con los juicios obtenidos
    }


    /**
     * Control de fuente de cheques
     * 
     * Se devuelve una vista con los datos de la fuente de cheques para controlar
     * En el caso que no se obtengan datos se devuelve un json
     * 
     * @return \Illuminate\View\View
     * @return \Illuminate\Http\JsonResponse
     * 
     */
    public static function controlFuenteCheques() {        
        $contraparte = request()->input('contraparte');
        $gestion = request()->input('gestion');
        $tarea = request()->input('tarea');
    
        // Store para obtener el informe
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', [
                'SELECCIONAR_INFORME',
                $contraparte,
                NULL, 
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                $gestion
            ], 
            'selectOne'
        );
    
        // Verificar si se obtuvo el informe
        if (!$report_data) {
            return response()->json(['error' => 'Informe no encontrado.'], 404);
        }
    
        // Store para obtener las tareas
        $tareas = SQLConnection::backendStoreProcedure(
            'LN_Blue_Tareas_Informe',
            [
                'tareas_informe',
                NULL,
                $report_data->informe
            ]
        );
    
        // Verificar si se obtuvieron tareas
        if (empty($tareas)) {
            return response()->json(['error' => 'Tareas no encontradas.'], 404);
        }
    
        // Buscar la tarea especifica
        $orden = NULL;
        foreach ($tareas as $t) {
            if ($t->tarea === $tarea) {
                $orden = $t->ordTarea;
                break;
            }
        }
    
        // Determinar si es la ultima tarea
        $ultima_tarea = (count($tareas) === $orden) ? 1 : 0;
        $id_tipo_informe = $tareas[0]->idTipoInforme ?? NULL; 
    
        $producto = $report_data->producto;
        unset($report_data);
        $datosCheques = SQLConnection::backendStoreProcedure('control_fuente', ['CH']);
        foreach ($datosCheques as $datos) {
            $date = new DateTime($datos->fecha_rechazo);
            $datos->fecha_rechazo = $date->format('Y-m-d');
        }          
    
        // Procesar datos de cheques
       /*  $datosCheques = [];
        foreach ($datosFuentes as $datos) {
            $cuit = substr($datos->contenido, 0, 11);
            $numeroCheque = trim(substr($datos->contenido, 12, 9));
    
            $datosCheques[] = [
                'cuit' => $cuit,
                'numeroCheque' => $numeroCheque,
            ];
        } */
    
        return view('/informes-blue/actividades-tarea/control_fuente_cheques')->with(compact('contraparte', 'tarea', 'producto', 'ultima_tarea', 'id_tipo_informe', 'datosCheques'));
    }

    /**
     * Control de fuente de contribuyentes inscriptos
     * 
     * Se devuelve una vista con los datos de la fuente de contribuyentes inscruptos para relizar su control
     * En el caso que no se obtengan datos se devuelve un json
     * 
     * @return \Illuminate\View\View
     * @return \Illuminate\Http\JsonResponse
     * 
     */
    public static function controlFuenteInscriptos() {
        $contraparte = request()->input('contraparte');
        $gestion = request()->input('gestion');
        $tarea = request()->input('tarea');
    
        // Store para obtener el informe
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', [
                'SELECCIONAR_INFORME',
                $contraparte,
                NULL, 
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                $gestion
            ], 
            'selectOne'
        );
    
        // Verificar si se obtuvo el informe
        if (!$report_data) {
            return response()->json(['error' => 'Informe no encontrado.'], 404);
        }
    
        // Store para obtener las tareas
        $tareas = SQLConnection::backendStoreProcedure(
            'LN_Blue_Tareas_Informe',
            [
                'tareas_informe',
                NULL,
                $report_data->informe
            ]
        );
    
        // Verificar si se obtuvieron tareas
        if (empty($tareas)) {
            return response()->json(['error' => 'Tareas no encontradas.'], 404);
        }
    
        // Buscar la tarea especifica
        $orden = NULL;
        foreach ($tareas as $t) {
            if ($t->tarea === $tarea) {
                $orden = $t->ordTarea;
                break;
            }
        }
    
        // Determinar si es la ultima tarea
        $ultima_tarea = (count($tareas) === $orden) ? 1 : 0;
        $id_tipo_informe = $tareas[0]->idTipoInforme ?? NULL; 
    
        $producto = $report_data->producto;
        unset($report_data);
        $datosInscriptos = SQLConnection::backendStoreProcedure('control_fuente', ['IN']);
    
        // Procesar datos de inscriptos
        $datosContribuyentes = [];
        foreach ($datosInscriptos as $datos) {
            $cuit = substr($datos->inscripciones, 0, 11);
            $nombrePersona = trim(substr($datos->inscripciones, 11, 29));
    
            $datosContribuyentes[] = [
                'cuit' => $cuit,
                'nombrePersona' => $nombrePersona,
            ];
        }
    
        return view('/informes-blue/actividades-tarea/control_fuente_inscriptos')->with(compact('contraparte', 'tarea', 'producto', 'ultima_tarea', 'id_tipo_informe', 'datosContribuyentes'));
    }

    /**
     * Control de fuente de deudores en situacion uno
     * 
     * Se devuelve una vista con los datos de la fuente de deudores situcion uno para su control
     * En el caso que no obtengamos datos se devuleve un json
     * 
     * @return \Illuminate\View\View
     * @return \Illuminate\Http\JsonResponse 
     */
    public static function controlFuenteSituacionUno()
    {
        $contraparte = request()->input('contraparte');
        $gestion = request()->input('gestion');
        $tarea = request()->input('tarea');

        // Store para obtener el informe
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', [
                'SELECCIONAR_INFORME',
                $contraparte,
                NULL, 
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                $gestion
            ], 
            'selectOne'
        );

        // Verificar si se obtuvo el informe
        if (!$report_data) {
            return response()->json(['error' => 'Informe no encontrado.'], 404);
        }

        // Store para obtener las tareas
        $tareas = SQLConnection::backendStoreProcedure('LN_Blue_Tareas_Informe',[
                'tareas_informe',
                NULL,
                $report_data->informe
            ]
        );

        // Verificar si se obtuvieron tareas
        if (empty($tareas)) {
            return response()->json(['error' => 'Tareas no encontradas.'], 404);
        }

        // Buscar la tarea especifica
        $orden = NULL;
        foreach ($tareas as $t) {
            if ($t->tarea === $tarea) {
                $orden = $t->ordTarea;
                break;
            }
        }

        // Determinar si es la ultima tarea
        $ultima_tarea = (count($tareas) === $orden) ? 1 : 0;
        $id_tipo_informe = $tareas[0]->idTipoInforme ?? NULL; 

        $producto = $report_data->producto;
        unset($report_data);
        $datosSitUno = SQLConnection::backendStoreProcedure('control_fuente', ['SU']);

        return view('/informes-blue/actividades-tarea/control_fuente_situacion_uno')->with(compact('contraparte', 'tarea', 'producto', 'ultima_tarea', 'id_tipo_informe', 'datosSitUno'));
    }
    
    public static function controlFuenteIGJ()
    {
        $contraparte = request()->input('contraparte');
        $gestion = request()->input('gestion');
        $tarea = request()->input('tarea');

        // Store para obtener el informe
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', [
                'SELECCIONAR_INFORME',
                $contraparte,
                NULL, 
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                $gestion
            ], 
            'selectOne'
        );

        // Verificar si se obtuvo el informe
        if (!$report_data) {
            return response()->json(['error' => 'Informe no encontrado.'], 404);
        }

        // Store para obtener las tareas
        $tareas = SQLConnection::backendStoreProcedure(
            'LN_Blue_Tareas_Informe',
            [
                'tareas_informe',
                NULL,
                $report_data->informe
            ]
        );

        // Verificar si se obtuvieron tareas
        if (empty($tareas)) {
            return response()->json(['error' => 'Tareas no encontradas.'], 404);
        }

        // Buscar la tarea especifica
        $orden = NULL;
        foreach ($tareas as $t) {
            if ($t->tarea === $tarea) {
                $orden = $t->ordTarea;
                break;
            }
        }

        // Determinar si es la ultima tarea
        $ultima_tarea = (count($tareas) === $orden) ? 1 : 0;
        $id_tipo_informe = $tareas[0]->idTipoInforme ?? NULL; 

        $producto = $report_data->producto;
        unset($report_data);

        return view('/informes-blue/actividades-tarea/control_fuente_igj')->with(compact('contraparte', 'tarea', 'producto', 'ultima_tarea', 'id_tipo_informe'));
    }

    public function obtenerFuenteIGJ()
    {
        
        // Validar los datos de entrada usando el validador
        $validar = Validator::make(request()->all(), [
            'tipo_fuente' => 'required|in:1,2,3', 
            'fecha_fuente' => 'required|date_format:Y-m' 
        ]);
    
        // Si la validacion falla, devolver un error en formato JSON
        if ($validar->fails()) {
            return response()->json(['error' => $validar->errors()], 422);
        }
    
        $tipoFuente = request()->input('tipo_fuente');
        $fechaFuente = request()->input('fecha_fuente') . '-01';
        
        // Asignar un valor a '$tipoFuente'
        switch ($tipoFuente) {
            case '1':
                $valorFuente = 'GE'; 
                break;
            case '2':
                $valorFuente = 'GA'; 
                break;
            case '3':
                $valorFuente = 'GU'; 
                break;          
            default:
                $valorFuente = 'ERROR_OPCION'; 
        }       
        $datosFuenteIGJ = SQLConnection::backendStoreProcedure('control_fuente', [$valorFuente, NULL,$fechaFuente]); 
                
        // Si $datosFuenteIGJ es nulo, asignar un array vacio
        $datosFuenteIGJ = $datosFuenteIGJ ?? [];       
        
    
        // Devuelve una respuesta en formato JSON
        return response()->json(['datosFuenteIGJ' => $datosFuenteIGJ]); // Respuesta JSON con los juicios obtenidos
    }

    public static function controlFuenteRepsal() {        
        $contraparte = request()->input('contraparte');
        $gestion = request()->input('gestion');
        $tarea = request()->input('tarea');
    
        // Store para obtener el informe
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', [
                'SELECCIONAR_INFORME',
                $contraparte,
                NULL, 
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                $gestion
            ], 
            'selectOne'
        );
    
        // Verificar si se obtuvo el informe
        if (!$report_data) {
            return response()->json(['error' => 'Informe no encontrado.'], 404);
        }
    
        // Store para obtener las tareas
        $tareas = SQLConnection::backendStoreProcedure(
            'LN_Blue_Tareas_Informe',
            [
                'tareas_informe',
                NULL,
                $report_data->informe
            ]
        );
    
        // Verificar si se obtuvieron tareas
        if (empty($tareas)) {
            return response()->json(['error' => 'Tareas no encontradas.'], 404);
        }
    
        // Buscar la tarea especifica
        $orden = NULL;
        foreach ($tareas as $t) {
            if ($t->tarea === $tarea) {
                $orden = $t->ordTarea;
                break;
            }
        }
    
        // Determinar si es la ultima tarea
        $ultima_tarea = (count($tareas) === $orden) ? 1 : 0;
        $id_tipo_informe = $tareas[0]->idTipoInforme ?? NULL; 
    
        $producto = $report_data->producto;
        unset($report_data);
        $datosCheques = SQLConnection::backendStoreProcedure('control_fuente', ['RE']);
       // dd($datosCheques);
        // foreach ($datosCheques as $datos) {
        //     $date = new DateTime($datos->fecha_rechazo);
        //     $datos->fecha_rechazo = $date->format('Y-m-d');
        // }          
    
        // Procesar datos de cheques
       /*  $datosCheques = [];
        foreach ($datosFuentes as $datos) {
            $cuit = substr($datos->contenido, 0, 11);
            $numeroCheque = trim(substr($datos->contenido, 12, 9));
    
            $datosCheques[] = [
                'cuit' => $cuit,
                'numeroCheque' => $numeroCheque,
            ];
        } */
        
        return view('/informes-blue/actividades-tarea/control_fuente_repsal')->with(compact('contraparte', 'tarea', 'producto', 'ultima_tarea', 'id_tipo_informe', 'datosCheques'));
    }
}