<?php
  class DB{
    private $pdo=null;

    public function __construct($dbpdo){
      
      $this->pdo = new PDO('sqlite:'.$dbpdo);
      $this->pdo->setAttribute( \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION );
      $this ->pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
    }

    public function loadSchema($schema_file){
      $sql = file_get_contents($schema_file);
      $this->pdo->exec($sql);
    }

    public function insert($registro){
      $sql = 'INSERT INTO Registro (nombre,apellido,titulo,afiliacion,ciudad,'
                          .'pais,email,fechaLlegada,fechaPartida,'
                          ."cartaInvitacion,roomingPref,roommate,fechaRegistro)"
              .' VALUES (:nombre,:apellido,:titulo,:afiliacion,:ciudad,:pais,:email,:fechaLlegada,'
              .':fechaPartida,:cartaInvitacion,:roomingPref,:roommate,:fechaRegistro);';

      $stmt = $this->pdo->prepare($sql);
      $stmt->execute([
        ':nombre' => $registro['nombre'],
        ':apellido' => $registro['apellido'],
        ':titulo' => $registro['titulo'],
        ':afiliacion' => $registro['afiliacion'],
        ':ciudad' => $registro['ciudad'],
        ':pais' => $registro['pais'],
        ':email' => $registro['email'],
        ':fechaLlegada' => $registro['bda'],
        ':fechaPartida' => $registro['eda'],
        //':financiacion' => $registro['financiacion'],
        //':invitado' => $registro['invited'],
        ':cartaInvitacion' => $registro['letterinvited'],
        ':roomingPref' => $registro['roomtype'],
        ':roommate' => $registro['roomate'],
        ':fechaRegistro' => $date = date('Y-m-d H:i:s'),
        ]);
      return $this->pdo->lastInsertId();

    }
    public function getAll(){
      $stmt = $this->pdo->prepare("SELECT * FROM Registro ORDER BY apellido COLLATE NOCASE ASC");
      $stmt -> execute();
      return $stmt->fetchAll(\PDO::FETCH_BOTH);

    }
    public function getSpeakers(){
      $stmt = $this->pdo->prepare("SELECT * FROM Speakers ORDER BY apellido COLLATE NOCASE ASC");
      $stmt -> execute();
      return $stmt->fetchAll(\PDO::FETCH_BOTH);

    }
    public function findByMail($email){
      $stmt = $this->pdo->prepare("SELECT * FROM Registro WHERE email=:email");
      $stmt->bindParam(":email",$email);
      $stmt->execute();
      return $result = $stmt->fetch(\PDO::FETCH_ASSOC);

    }

  }
?>
