<?php

    require 'get_infouser.php';
    $json = file_get_contents('php://input');   
    $obj = json_decode($json);
    $id = $obj->flag;
    // Returns a Json
    header('Content-Type: application/json');
    
    $id_cliente = $obj->id_cliente;
    
    $conn = new mysqli("directoriofitness.com.mx","direct18","L4LL4v3M@3str@","$obj->bd");
    $conn -> set_charset("utf8");
            
        $array = array();
        $nombre;
        $nombreSuc;
        $activo;
        $foto = "";
        $array_planes;
        $fechaFin;
        $email = "Sin registro";
        $telefono = "Sin registro";
        $fechaIngreso;
        $date = date('Y-m-d');
        $fecha_hoy = strtotime($date);
        $query = "SELECT 
				CONCAT(socios.Nombre, ' ', socios.Apellidos) AS nombre,
                socios.Foto,
                socios.TelefonoCelular,
                socios.fechaIngreso,
                socios.Email,
                socios.Activo,
                sucursal.NombreSucursal
            FROM 
                socios INNER JOIN sucursal ON socios.sucursal_idSucursal = sucursal.idSucursal
            WHERE
                socios.idSocio = '$obj->id'
            ";
        $resultado = $conn->query($query);
        
        /*$query = "SELECT socio_servicio.idSocio as id,servicios.NombreServicio, Foto, Email,TelefonoCelular,FechaIngreso,
        MAX(socio_servicio.idSocio_Servicio) AS idSocio_Servicio,CONCAT(socios.Nombre,' ',socios.Apellidos) AS nombre,MAX(pagos.FechaFin) AS FechaFin, Activo 
        FROM socio_servicio INNER JOIN servicios 
        ON socio_servicio.idServicio = servicios.idServicio INNER JOIN socios ON socio_servicio.idSocio = socios.idSocio 
        INNER JOIN pagos ON socio_servicio.idSocio_Servicio = pagos.idSocio_Servicio WHERE socio_servicio.idSocio = '$obj->id' 
        AND pagos.Cancelado = 0 AND pagos.Visible = 1 GROUP BY servicios.NombreServicio ORDER BY servicios.NombreServicio ASC";
        $resultado = $conn->selectQuery($query, "directoriofitness.com.mx","direct18","L4LL4v3M@3str@",$obj->bd);*/
        
       /* $nombre;
        $foto;*/
        
        while($row = $resultado->fetch_assoc()){
            $nombreSuc = $row["NombreSucursal"];
            $activo = $row["Activo"];
            $status = 'vigente';
            $nombre = $row['nombre'];
            if($row['Foto'] != ""){
                $foto = "https://manager.progymcloud.com/style/img/Socios/".$row['Foto'];
            }
            
            if($row['Email'] != ""){
                $email = $row['Email'];
            }
            if($row['TelefonoCelular'] != ""){
                $telefono = $row['TelefonoCelular'];
            }
            
            /*$fechaIngreso = $row['fechaIngreso'];
            $fechaV = strtotime($row['FechaFin']);
            if($fechaV < $fecha_hoy){
                $status = 'vencido';
            }*/
            //date("d-m-Y",$fechaV);
            //$array_planes[] = ['Plan' => $row['NombreServicio'],'Vence' => date("d-m-Y",$fechaV), 'status' => $status];
            
        }
        
$id = $obj->id; 

$queryplanes = "
    SELECT *
    FROM (
      SELECT 
        t.id,
        t.id_p,
        t.NombreServicio,
        t.idSocio_Servicio,
        t.Nombre,
        t.FechaFin,
        ms.ses_restantes AS BanderaSesiones,
        COALESCE(ms.ses_restantes, 0) AS Sesiones,
        t.ConSesion AS cs,
        t.t_sesion,
        t.Activo
      FROM (
        -- A) Servicios activos del socio
        SELECT
          ss.idSocio            AS id,
          ss.idServicio         AS id_p,
          s.NombreServicio,
          ss.idSocio_Servicio,
          so.Nombre,
          p.FechaFin,
          s.ConSesion,
          s.t_sesion,
          so.Activo
        FROM socio_servicio ss
        INNER JOIN pagos p
          ON ss.idSocio_Servicio = p.idSocio_Servicio
          AND p.Cancelado = 0
          AND p.Visible   = 1
        INNER JOIN servicios s
          ON ss.idServicio = s.idServicio
        INNER JOIN socios so
          ON ss.idSocio = so.idSocio
        WHERE ss.idSocio = $id
      ) AS t
      LEFT JOIN (
        -- B) Último idSocio_Servicio por idServicio, basado en la última asistencia
        SELECT 
          ss.idServicio AS id_p,
          MAX(ss.idSocio_Servicio) AS max_ss
        FROM asistencia_por_sesiones aps
        INNER JOIN socio_servicio ss
          ON aps.paq_idPaquete = ss.idServicio
        INNER JOIN (
          SELECT 
            paq_idPaquete,
            MAX(id_asistencia_s) AS max_as
          FROM asistencia_por_sesiones
          WHERE cli_idCliente = $id
          GROUP BY paq_idPaquete
        ) ult
          ON aps.paq_idPaquete = ult.paq_idPaquete
         AND aps.id_asistencia_s = ult.max_as
        WHERE ss.idSocio = $id
        GROUP BY ss.idServicio
      ) AS latest
        ON t.id_p = latest.id_p AND t.idSocio_Servicio = latest.max_ss
      LEFT JOIN (
        -- C) Últimas sesiones registradas
        SELECT aps.paq_idPaquete AS id_p, aps.ses_restantes, ss.idSocio_Servicio
        FROM asistencia_por_sesiones aps
        INNER JOIN socio_servicio ss
          ON aps.paq_idPaquete = ss.idServicio AND aps.cli_idCliente = ss.idSocio
        INNER JOIN (
          SELECT 
            paq_idPaquete,
            MAX(id_asistencia_s) AS max_as
          FROM asistencia_por_sesiones
          WHERE cli_idCliente = $id
          GROUP BY paq_idPaquete
        ) ult
          ON aps.paq_idPaquete = ult.paq_idPaquete
         AND aps.id_asistencia_s = ult.max_as
        WHERE aps.cli_idCliente = $id
      ) AS ms
        ON t.id_p = ms.id_p AND t.idSocio_Servicio = ms.idSocio_Servicio
    ) AS servicios_completos
    INNER JOIN (
      -- D) Me quedo con el idSocio_Servicio más reciente por servicio
      SELECT id_p, MAX(idSocio_Servicio) AS max_ss
      FROM (
        SELECT
          ss.idServicio AS id_p,
          ss.idSocio_Servicio
        FROM socio_servicio ss
        INNER JOIN pagos p
          ON ss.idSocio_Servicio = p.idSocio_Servicio
          AND p.Cancelado = 0 AND p.Visible = 1
        WHERE ss.idSocio = $id
      ) AS base
      GROUP BY id_p
    ) AS filtro
      ON servicios_completos.id_p = filtro.id_p 
     AND servicios_completos.idSocio_Servicio = filtro.max_ss
    ORDER BY servicios_completos.idSocio_Servicio DESC
";

$resultadoplanes = $conn->query($queryplanes);

$array_planes = [];

if ($resultadoplanes && $resultadoplanes->num_rows > 0) {
    while ($row = $resultadoplanes->fetch_assoc()) {
        $fechaV = strtotime($row['FechaFin']);
        $status = ($fechaV < $fecha_hoy) ? 'vencido' : 'activo';

        $array_planes[] = [
            'Plan'          => $row['NombreServicio'],
            'id_plan'       => $row['id_p'],
            'Vence'         => date("d-m-Y", $fechaV),
            'status'        => $status,
            'ConSesion'     => $row['cs'],
            't_sesion'      => $row['t_sesion'],
            'ses_restantes' => $row['Sesiones'] ?? null,
            'Activo'        => $row['Activo']
        ];
    }
} else {
    $array_planes[] = [
        'Plan'          => 'Sin plan',
        'id_plan'       => null,
        'Vence'         => '-',
        'status'        => '-',
        'ConSesion'     => null,
        't_sesion'      => null,
        'ses_restantes' => null,
        'Activo'        => null
    ];
}


        
        mysqli_close($conn);
        
        $conn = new mysqli("directoriofitness.com.mx","direct18","L4LL4v3M@3str@","direct18_ProGymCloud");
        $conn -> set_charset("utf8");
        //locker
        $queryLocker ="SELECT 
              	lockers_socios.Socios_idSocio as 'id', 
                lockers.idLocker as 'id_gl', 
                locker.id_locker as 'idlk_c', 
                CONCAT(socios.Nombre, ' ', socios.Apellidos) as 'name', 
                lockers.Clave as 'grupo',
                locker.num_locker as 'num_locker', 
                lockers_socios.FechaAsignacion as 'pago', 
                lockers_socios.FechaVencimiento, 
                lockers_socios.concepto_pago as 'concepto', 
                lockers_socios.importe as 'total', 
                lockers_socios.estado 'status',
                lockers_socios.cancelado,
                sucursal.NombreSucursal as 'sucursal',
                IF(lockers_socios.FechaVencimiento < DATE_FORMAT(NOW(), '%d/%m/%Y') 
            		AND lockers_socios.cancelado = 0 AND lockers_socios.estado = 1, 'TRUE', 'FALSE') as 'vencimiento'
            FROM 
                lockers_socios, 
                socios, 
                lockers, 
                sucursal, 
                locker 
            WHERE 
                lockers_socios.Lockers_idLocker = lockers.idLocker 
                AND lockers_socios.Socios_idSocio = socios.idSocio 
                AND lockers_socios.sucursal_idSucursal = sucursal.idSucursal 
                AND socios.idSocio = $obj->id
                AND lockers_socios.locker_asignado = locker.id_locker
                AND lockers_socios.cancelado = 0
            ORDER BY 
                lockers_socios.id_lockers_socios DESC LIMIT 1";

           $resLocker = $conn->query($queryLocker);
            
            if($resLocker->num_rows == 0){
                $arrayLocker[] = ['FechaVencimiento' => 'Sin Locker', "Vencimiento" => '-', "numLocker" => '-']; 
                //echo json_encode($array);
            }else{
                while($rowL = $resLocker->fetch_assoc()){ //date("d-m-Y",strtotime($rowL['FechaVencimiento']))
                    if($rowL['status'] == '1'){
                        $arrayLocker[] = ['FechaVencimiento' => date("d-m-Y",strtotime($rowL['FechaVencimiento'])), "Vencimiento" => $rowL['vencimiento'], "numLocker" => $rowL['num_locker']]; 
                    }else{
                        $arrayLocker[] = ['FechaVencimiento' => 'Sin Locker', "Vencimiento" => '-', "numLocker" => '-'];
                    }
                }
                //$conn->jsonQuery($query, "directoriofitness.com.mx","direct18","L4LL4v3M@3str@",$obj->bd);
            }
            
        $bd_e = explode('_',$obj->bd); 
        $db_1 = $bd_e[1];
        $query_redes = "SELECT 
            CASE
                WHEN redes_sociales_gym.facebook_link IS NULL THEN 'Sin registro'
                WHEN redes_sociales_gym.facebook_link = '' THEN 'Sin registro'
                ELSE redes_sociales_gym.facebook_link
            END AS facebook,
            CASE
                WHEN redes_sociales_gym.instagram_link IS NULL THEN 'Sin registro'
                 WHEN redes_sociales_gym.instagram_link = '' THEN 'Sin registro'
                ELSE redes_sociales_gym.instagram_link
            END AS instagram,
            CASE
                WHEN redes_sociales_gym.whatsapp_gym IS NULL THEN 'Sin registro'
                WHEN redes_sociales_gym.whatsapp_gym = '' THEN 'Sin registro'
                ELSE redes_sociales_gym.whatsapp_gym
            END AS whatsapp
            FROM redes_sociales_gym INNER JOIN gimnasios ON redes_sociales_gym.gimnasio_idGym = gimnasios.idGimnasio WHERE gimnasios.BaseDatos = '$db_1'";
        
        $resRedes = $conn->query($query_redes);
        
        $fb = "sin registro"; $wp = "sin registro"; $insta = "sin registro";
        
        while($rowR = $resRedes->fetch_assoc()){
            $fb = $rowR['facebook'];
            $insta = $rowR['instagram'];
            $wp = $rowR['whatsapp'];
        }
            
        //date("d-m-Y",strtotime($fechaIngreso))
        $array[] = ['nombre' => $nombre, 'foto' => $foto, 'activo' => $activo, 'nombre_suc' => $nombreSuc, 'facebook' => $fb, 'instagram' => $insta, 'whats' => $wp,
        'email' => $email, 'telefono' => $telefono, 'fechaIngreso' => date("d-m-Y",strtotime($fechaIngreso)), 'planes' => $array_planes, 'locker' => $arrayLocker];
        //echo $conn->jsonQuery($query, "directoriofitness.com.mx","direct18","L4LL4v3M@3str@",$obj->bd);
        
        echo json_encode($array);
        
        mysqli_close($conn);

?>