<?php 
    $json = file_get_contents('php://input');   
    $obj = json_decode($json);
    $id = $obj->flag;
    // Returns a Json
    header('Content-Type: application/json');
    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    
    $conn = new mysqli("directoriofitness.com.mx", "direct18", "L4LL4v3M@3str@","direct18_ProGymCloud");
    $conn -> set_charset("utf8");
    
    $query = "SELECT * FROM gimnasios WHERE NombreGimnasio = '$obj->gym';";
    
    $res = $conn->query($query);
    
    if($res && $res->num_rows > 0){
        $row = $res->fetch_assoc();
        $idGym = $row["idGimnasio"];
    } else {
        echo 'sin rutina';
        exit;
    }
    
    $conn->close();
    
    $conn = new mysqli("directoriofitness.com.mx", "direct18", "L4LL4v3M@3str@","direct18_ProGymWorkout");
    $conn -> set_charset("utf8");
    

    $query = "SELECT idprograma AS 'id_p', idobjetivo AS 'id_o' 
                FROM programas 
                WHERE idGym = '$idGym'
                AND idsocio = '$obj->id_cliente'
                AND DATE(NOW()) BETWEEN DATE(pro_finicio) AND DATE(pro_ffin)
                AND borrado = 0;";
    
    $resultado = $conn->query($query);
    
    if($resultado && $resultado->num_rows > 0){
        $row = $resultado->fetch_assoc();
        
        $id_programa = $row['id_p'];
        $id_programa = !empty($id_programa) ? $id_programa : null;
        $id_objetivo = $row['id_o'];
        $id_objetivo = !empty($id_objetivo) ? $id_objetivo : null;
    } else {
        echo 'sin rutina';
        $conn->close();
        exit;
    }
    

    if($id_programa != null){

        $query = "SELECT DISTINCT
                	obj_des AS 'name_obj',
                    obj_nivel AS 'lvl_obj',
                    objetivos.idrutina AS 'id_rut',
                    objetivos.obj_nosesiones AS 'sesiones',
                    obj_indice AS 'no_sesion',
                    programas.idprograma,
                    programas.idobjetivo,
          			pdf.url as 'urlpdf'
                FROM objetivos
                INNER JOIN programas
                	ON objetivos.idobjetivo = programas.idobjetivo
                LEFT JOIN pdf 
                	ON objetivos.id_pdf = pdf.id
                WHERE 
                	objetivos.idobjetivo = '$id_objetivo'
                	AND programas.idGym = '$idGym'
                	AND programas.idprograma = '$id_programa'
                	AND objetivos.idGym = '$idGym'
                ORDER BY 
                	objetivos.obj_indice asc";
        
        $resultado_r = $conn->query($query);
        
        if(!$resultado_r || $resultado_r->num_rows == 0){
            echo 'sin rutina';
            $conn->close();
            exit;
        }
        

        $query_rutinas = "SELECT idrutina, nombre_rutina FROM rutinas WHERE idGym = '$idGym'";
        $resultado_rutinas = $conn->query($query_rutinas);
        $rutinas_nombres = array();
        while($row_rut = $resultado_rutinas->fetch_assoc()){
            $rutinas_nombres[$row_rut['idrutina']] = $row_rut['nombre_rutina'];
        }
        

        $rutinas_base = array();
        
        // Procesar cada sesión
        while($row = $resultado_r->fetch_assoc()){
            $no_sesion = $row['no_sesion'];
            
            // Agregar el nombre de la rutina
            $row['name_rut'] = isset($rutinas_nombres[$row['id_rut']]) ? $rutinas_nombres[$row['id_rut']] : 'Sin nombre';
            
            // Contar cuántas veces se ha completado esta sesión específica EN TIEMPO REAL
            $query_count = "SELECT COUNT(*) as total 
                           FROM registro_entrenamientos 
                           WHERE idprograma = '$id_programa' 
                           AND num_sesion = '$no_sesion'";
            $resultado_count = $conn->query($query_count);
            $row_count = $resultado_count->fetch_assoc();
            $completadas = intval($row_count['total']);
            
            $rutinas_base[$no_sesion] = array(
                'data' => $row,
                'completadas' => $completadas
            );
        }
        
        // Ordenar rutinas_base por no_sesion para mantener el orden 1, 2, 3...
        ksort($rutinas_base);
        
        // Obtener el número total de sesiones del programa
        $total_sesiones = 0;
        if(count($rutinas_base) > 0){
            $primera = reset($rutinas_base);
            $total_sesiones = intval($primera['data']['sesiones']);
        } else {
            echo 'sin rutina';
            $conn->close();
            exit;
        }
        
        // Calcular cuántas sesiones totales se han completado
        $total_completadas = 0;
        foreach($rutinas_base as $info){
            $total_completadas += $info['completadas'];
        }
        
        // Verificar si el programa ya fue completado
        if($total_completadas >= $total_sesiones){
            echo 'sin rutina';
        } else {
            // Calcular cuál es la siguiente sesión en el ciclo rotativo
            $num_rutinas = count($rutinas_base);
            $indice_siguiente = $total_completadas % $num_rutinas;
            
            // Obtener la sesión correspondiente
            $sesiones_ordenadas = array_values($rutinas_base);
            $sesion_actual = $sesiones_ordenadas[$indice_siguiente];
            
            $rutina = $sesion_actual['data'];
            $completadas = $sesion_actual['completadas'];
            
            // Calcular en qué repetición está esta sesión específica
            $repeticiones_por_rutina = floor($total_sesiones / $num_rutinas);
            $numero_repeticion = $completadas + 1; // La próxima repetición a completar
            
            // Verificar que esta sesión no haya alcanzado su límite
            if($completadas < $repeticiones_por_rutina){
                $rutina['numero_repeticion'] = $numero_repeticion;
                $rutina['entrenamiento_registrado'] = '0';
                $rutina['fecha_entrenamiento'] = NULL;
                $rutina['sesion_actual'] = $total_completadas + 1; 
                
                echo json_encode(array($rutina));
            } else {
                // Esta sesión ya alcanzó su límite, buscar la siguiente disponible
                $encontrada = false;
                for($i = 1; $i < $num_rutinas; $i++){
                    $siguiente_indice = ($indice_siguiente + $i) % $num_rutinas;
                    $sesion_siguiente = $sesiones_ordenadas[$siguiente_indice];
                    
                    if($sesion_siguiente['completadas'] < $repeticiones_por_rutina){
                        $rutina = $sesion_siguiente['data'];
                        $rutina['numero_repeticion'] = $sesion_siguiente['completadas'] + 1;
                        $rutina['entrenamiento_registrado'] = '0';
                        $rutina['fecha_entrenamiento'] = NULL;
                        $rutina['sesion_actual'] = $total_completadas + 1; 
                        
                        echo json_encode(array($rutina));
                        $encontrada = true;
                        break;
                    }
                }
                
                if(!$encontrada){
                    echo 'sin rutina';
                }
            }
        }

        
    }else{
        echo 'sin rutina';
    }
    
    $conn->close();
?>