<?php
require_once '../config/Database.php'; 


class GraficoModel{
    private $db;

    public function __construct() {
        $db = DataBase::getInstance();
    }

 
 public static function obtenerGeneroFemenino() {
    $query = self::$db->prepare("SELECT COUNT(*) AS Femenino FROM candidato WHERE id_genero = 2 ");
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['Femenino'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }

 public static function obtenerGeneroMasculino() {
    $query = self::$db->prepare("SELECT COUNT(*) AS Maculino FROM candidato WHERE id_genero = 1 ");
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['Maculino'];
        } 
      } 
      $query->close(); 
      self::$db->close();
  
      return $output; 
 }

 public static  function obtenerGeneroNoDefinido() {
    $query = self::$db->prepare("SELECT COUNT(*) AS NoDefinido FROM candidato WHERE id_genero = 3 ");
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['NoDefinido'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }

 public static function obtenerEdadMenor18() {
    $query = self::$db->prepare("SELECT COUNT(*) AS menorEdad FROM candidato WHERE id_rango_edad = 1");   
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['menorEdad'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }

 public static function obtenerEdad1824() {
    $query = self::$db->prepare("SELECT COUNT(*) AS edad1824 FROM candidato WHERE id_rango_edad = 2");   
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['edad1824'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }

 public static  function obtenerEdad2434() {
    $query = self::$db->prepare("SELECT COUNT(*) AS edad2434 FROM candidato WHERE id_rango_edad = 3");   
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['edad2434'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }

 public static function obtenerEdad3544() {
    $query = self::$db->prepare("SELECT COUNT(*) AS edad3544 FROM candidato WHERE id_rango_edad = 4");   
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['edad3544'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }


 public static function obtenerEdad4554() {
    $query = self::$db->prepare("SELECT COUNT(*) AS edad4554 FROM candidato WHERE id_rango_edad = 5");   
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['edad4554'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }


 public static  function obtenerEdad5564() {
    $query = self::$db->prepare("SELECT COUNT(*) AS edad5564 FROM candidato WHERE id_rango_edad = 6");   
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['edad5564'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }

 public static  function obtenerEdad65oMas() {
    $query = self::$db->prepare("SELECT COUNT(*) AS edad65oMas FROM candidato WHERE id_rango_edad = 7");   
    $query->execute();
    $resultado = $query->get_result();
    $output = "0"; 

      if($resultado->num_rows > 0) {
        while ($data = $resultado->fetch_assoc()) {
         $output= $data['edad65oMas'];
        } 
      } 
      $query->close(); 
      self::$db->close(); 
  
      return $output; 
 }

 public static function obtenerEstados() {
  try {
      $query = self::$db->prepare("SELECT estados.nombre AS estado, COUNT(*) AS cantidad
          FROM estados
          INNER JOIN info_candidatos ON info_candidatos.id_estado = estados.id
          GROUP BY estados.nombre
          ORDER BY estados.nombre
      ");
      $query->execute();
      $resultado = $query->get_result();

      $estados = [];
      while ($data = $resultado->fetch_assoc()) {
          $estados[] = $data; 
      }

      $query->close();

      error_log(json_encode($estados)); 
      return $estados;
  } catch (Exception $e) {
      error_log("Error al obtener los estados: " . $e->getMessage());
      return [];
  }
}

public static function obtenerExamenes() {
  try {
      $query = self::$db->prepare("SELECT nombre_examen AS examen , COUNT(*) AS cantidad
          FROM examen 
          INNER JOIN candidato ON candidato.id_examen = examen.id_examen 
          GROUP BY nombre_examen 
          ORDER BY nombre_examen;
      ");
      $query->execute();
      $resultado = $query->get_result();

      $examenes = [];
      while ($data = $resultado->fetch_assoc()) {
          $examenes[] = $data;
      }

      $query->close();

      error_log(json_encode($examenes)); 
      return $examenes;
  } catch (Exception $e) {
      error_log("Error al obtener los examenes: " . $e->getMessage());
      return [];
  }
}


public static function obtenerFecha($fechaInicio, $fechaFin) {
  try {
      $query = self::$db->prepare("SELECT COUNT(*) AS total
FROM candidato
WHERE DATE(fecha_entrada) = ?
  AND DATE(fecha_salida) = ?;
");
      $query->bind_param("ss", $fechaInicio, $fechaFin);
      $query->execute();
      $resultado = $query->get_result();

      $fechas = [];
      while ($data = $resultado->fetch_assoc()) {
          $fechas[] = $data;
      }

      error_log("Resultados de la consulta: " . json_encode($fechas)); // <-- Agrega este log

      $query->close();
      return $fechas;
  } catch (Exception $e) {
      error_log("Error al obtener las fechas: " . $e->getMessage());
      return [];
  }
}

}

?>