<?php
/*
* script modelo/panel_de_busquedas_acceso_db.php
*	Acceso a la base de datos
*/

/*
* Base - Clase que permite guardar datos en la Base de Datos
* 
*/
class Base {
	
	/*
	* Recurso de la base de datos
	* @var object
	*/
	protected $db;
	/*
	* Nombre de la base de datos
	* @var string
	*/
	protected $base;
	/*
	* Nombre de la tabla
	* @var string
	*/
	protected $tabla;
	/*
	* Contrasena
	* @var string
	*/
	private   $password;
	/*
	* Usuario
	* @var string
	*/
	private   $usuario;



	
	/*
	* Constructor
	* @param string $var_base Nombre de la base de datos
	*/
	public function __construct($var_base = False){
                include "x.php";
		if($var_base){
			$this->base = $var_base;
		}
		$this->tabla = "kaver_busquedas";
		$this->usuario  = 'admin';
		include("y.php");
		$this->password = xsct($p,'d');
	}



	
	/*
	* Seter
	* @param string $tabla Nombre de la tabla
	*/
	public function setTabla($tabla){
	    $this->tabla = $tabla;
	}



	
	/*
	* Conectar con la Base de datos
	* @param string $var_base Nombre de la Base de datos
	*/
	public function conectar($var_base = False){
		$this->base = (isset($this->base)) ? $this->base : $var_base;
		if($this->base && $this->tabla){
			$this->db = new PDO("mysql:host=localhost:3306;dbname=$this->base;charset=utf8mb4", $this->usuario, $this->password );
		}
	}



	
	/*
	* Leer de la tabla Busquedas
	* @return array $resultado resultado de la consulta
	* @Exception PDOException
	*/
	public function &leer(){
		try {
			$resultado = array();
			$indice = 0;
			foreach($this->db->query("SELECT * FROM $this->tabla") as $row) {
				if ( $row[ 'activa' ]){
					$resultado[$indice][ 'referencia']	      = $row[ 'referencia'];		
					$resultado[$indice][ 'fecha']		      = $row[ 'fecha'];					
					$resultado[$indice][ 'titulo']                = $row[ 'titulo'];
					$resultado[$indice][ 'tecnologiasExcluyentes']= $row[ 'tecnologiasExcluyentes'];
					$resultado[$indice][ 'tecnologiasDeseables']  = $row[ 'tecnologiasDeseables'];					
					$resultado[$indice][ 'requisitos']            = $row[ 'requisitos'];
					$resultado[$indice][ 'descripcionCorta']      = $row[ 'descripcionCorta'];					
					$resultado[$indice][ 'zonaTrabajo']           = $row[ 'zonaTrabajo'];
					$resultado[$indice][ 'beneficiosOfrecidos']   = $row[ 'beneficiosOfrecidos'];
					$indice++;
				}
			}
			
			return $resultado;
			
			
		} catch(PDOException $ex) {
			echo "Ocurrio un error";
		}
	}



	
	/*
	* Leer tabla de busquedas y devolver solo las que estan cerradas
	* @return array $resultado Busquedas que no estan activas
	*/
	public function &leer_busquedas_cerradas(){
		try {
			$resultado = array();
			$indice = 0;
			foreach($this->db->query("SELECT * FROM $this->tabla") as $row) {
				if ( !$row[ 'activa' ]){
					$resultado[$indice][ 'referencia']	          = $row[ 'referencia'];		
					$resultado[$indice][ 'fecha']		          = $row[ 'fecha'];					
					$resultado[$indice][ 'titulo']                = $row[ 'titulo'];
					$resultado[$indice][ 'tecnologiasExcluyentes']= $row[ 'tecnologiasExcluyentes'];
					$resultado[$indice][ 'tecnologiasDeseables']  = $row[ 'tecnologiasDeseables'];					
					$resultado[$indice][ 'requisitos']            = $row[ 'requisitos'];
					$resultado[$indice][ 'descripcionCorta']      = $row[ 'descripcionCorta'];					
					$resultado[$indice][ 'zonaTrabajo']           = $row[ 'zonaTrabajo'];
					$resultado[$indice][ 'beneficiosOfrecidos']   = $row[ 'beneficiosOfrecidos'];
					$indice++;
				}
			}
			
			return $resultado;
			
			
		} catch(PDOException $ex) {
			echo "Ocurrio un error";
		}
	}	



	
	/*
	* Leer una sola busqueda
	* @return array $resultado
	* @Exception PDOException
	*/
	public function &leer_una_busqueda($referencia){
		try {
			$resultado = array();
			$sql = "SELECT * FROM $this->tabla WHERE referencia = :referencia";
			$stmt = $this->db->prepare($sql);
			$stmt->bindParam(':referencia',            $referencia);
			$stmt->execute();
			$resultado = $stmt->fetch(PDO::FETCH_ASSOC);
			return $resultado;
			
			
		} catch(PDOException $ex) {
			echo "Ocurrio un error";
		}
	}



	
	/*
	* Insertar una busqueda en la tabla
	* @param object $busqueda
	*/
	public function escribir($busqueda){
		
		$titulo                = $busqueda->getTitulo                  ();
		$referencia            = $busqueda->getReferencia              ();
		$requisitos            = $busqueda->getRequisitos              ();
		$descripcionCorta      = $busqueda->getDescripcionCorta        ();
		$zonaTrabajo           = $busqueda->getZonaTrabajo             ();
		$tecnologiasExcluyentes= $busqueda->getTecnologiasExcluyentes  ();
		$tecnologiasDeseables  = $busqueda->getTecnologiasDeseables    ();		
		$beneficiosOfrecidos   = $busqueda->getBeneficiosOfrecidos     ();
		$fecha                 = $busqueda->getFecha                   ();
		$activa                = $busqueda->getActiva                  ();
				
		
		try {
			$sql  = "INSERT INTO $this->tabla "."( referencia, fecha, titulo, requisitos, descripcionCorta, zonaTrabajo, tecnologiasExcluyentes, tecnologiasDeseables, beneficiosOfrecidos, activa )  ";
			$sql .= "VALUES                      (:referencia,:fecha,:titulo,:requisitos,:descripcionCorta,:zonaTrabajo,:tecnologiasExcluyentes,:tecnologiasDeseables, :beneficiosOfrecidos,:activa ) ";
		
			$stmt = $this->db->prepare($sql);
			$stmt->bindParam(':titulo',                $titulo);
			$stmt->bindParam(':referencia',            $referencia);
			$stmt->bindParam(':requisitos',            $requisitos);
			$stmt->bindParam(':descripcionCorta',      $descripcionCorta      );			
			$stmt->bindParam(':zonaTrabajo',           $zonaTrabajo           );
			$stmt->bindParam(':tecnologiasExcluyentes',$tecnologiasExcluyentes);
			$stmt->bindParam(':tecnologiasDeseables',  $tecnologiasDeseables  );						
			$stmt->bindParam(':beneficiosOfrecidos',   $beneficiosOfrecidos   );
			$stmt->bindParam(':fecha',                 $fecha);			
			$stmt->bindParam(':activa',                $activa);
						
			$stmt->execute();
			$affected_rows = $stmt->rowCount();

		} catch(PDOException $ex) {
			echo "Ocurrio un error";
		}
	}



	
	/**
	 *  Actualizar una busqueda
	 * @param object $busqueda
	 */
	public function actualizar_una_busqueda($busqueda){
		$titulo                = $busqueda->getTitulo                  ();
		$referencia            = $busqueda->getReferencia              ();
		$requisitos            = $busqueda->getRequisitos              ();
		$descripcionCorta      = $busqueda->getDescripcionCorta        ();
		$zonaTrabajo           = $busqueda->getZonaTrabajo             ();
		$tecnologiasExcluyentes= $busqueda->getTecnologiasExcluyentes  ();
		$tecnologiasDeseables  = $busqueda->getTecnologiasDeseables    ();		
		$beneficiosOfrecidos   = $busqueda->getBeneficiosOfrecidos     ();
				
		
		try {
		    
			$sql  = "UPDATE $this->tabla SET titulo = :titulo, requisitos = :requisitos, descripcionCorta = :descripcionCorta, zonaTrabajo = :zonaTrabajo, tecnologiasExcluyentes = :tecnologiasExcluyentes, tecnologiasDeseables = :tecnologiasDeseables, beneficiosOfrecidos = :beneficiosOfrecidos WHERE referencia = :referencia LIMIT 1 ";

			$stmt = $this->db->prepare($sql);
			
			$stmt->bindValue(':titulo',                $titulo                , PDO::PARAM_STR);
			$stmt->bindValue(':requisitos',            $requisitos            , PDO::PARAM_STR);
			$stmt->bindValue(':descripcionCorta',      $descripcionCorta      , PDO::PARAM_STR);			
			$stmt->bindValue(':zonaTrabajo',           $zonaTrabajo           , PDO::PARAM_STR);
			$stmt->bindValue(':tecnologiasExcluyentes',$tecnologiasExcluyentes, PDO::PARAM_STR);
			$stmt->bindValue(':tecnologiasDeseables',  $tecnologiasDeseables  , PDO::PARAM_STR);						
			$stmt->bindValue(':beneficiosOfrecidos',   $beneficiosOfrecidos   , PDO::PARAM_STR);
			
			$stmt->bindValue(':referencia',            $referencia            , PDO::PARAM_STR);
			

			$stmt->execute();
			$affected_rows = $stmt->rowCount();
			


		} catch(PDOException $ex) {
			echo "Ocurrio un error";
		}	    
	}
	
	
	
	
    /*
    * Actualizar el estado de una busqueda
    * actualizando la fecha al dia de reapertura de la busqueda
    * @param object $busqueda
    */
	public function actualizar_estado($busqueda){			
	
		$referencia          = $busqueda->getReferencia         ();
		$activa              = $busqueda->getActiva             ();
		$fecha               = $busqueda->getFecha              ();
		
		try{
			$sql  = "UPDATE $this->tabla SET activa = :activa, fecha = :fecha WHERE referencia = :referencia LIMIT 1";
			$stmt = $this->db->prepare($sql);
			$stmt->bindParam(':referencia',          $referencia);	
			$stmt->bindParam(':activa',              $activa);
			$stmt->bindParam(':fecha',               $fecha);
			
			$stmt->execute();
					
		} catch(PDOException $ex) {
			echo "Ocurrio un error";
		}

	}

    /**
     *  Dar de baja una postulacion
     *  @param  object $postulacion
     */
     public function bajar_postulacion($postulacion){
         
         $email             = $postulacion->getEmail          ();

         try{
             $sql  =  "UPDATE $this->tabla SET olvidar = 1 WHERE email = :email LIMIT 1";
             $stmt = $this->db->prepare($sql);
             $stmt->bindParam(':email',  $email);
             
             $stmt->execute();
             
         } catch(PDOException $ex){
             echo "Ocurrio un error";
         }
     }


	/*
	* Postulacion
	* @param object $postulacion Datos de un postulante
	* @Exception PDOException
	*/
	public function escribirPostulacion($postulacion){
	
	    //                    idPostulacion es autoincrement
	    $fecha          = $postulacion->getFecha              ();
	    $nombreApellido = $postulacion->getNombreApellido     ();
	    $email          = $postulacion->getEmail              ();
	    $mensaje        = $postulacion->getMensaje            ();
	    $curriculum     = $postulacion->getCurriculum         ();
	    $referencia     = $postulacion->getReferencia         ();

	    try {
	        $sql     = "INSERT INTO $this->tabla "."( nombreApellido, email, mensaje, fecha, curriculum, referencia ) ";
	        $sql    .= "VALUES                      (:nombreApellido,:email,:mensaje,:fecha,:curriculum,:referencia ) ";
	   
	      
	        $stmt = $this->db->prepare($sql);
	        
	        $stmt->bindParam(':nombreApellido',     $nombreApellido);
	        $stmt->bindParam(':email',              $email      );
	        $stmt->bindParam(':mensaje',            $mensaje    );
	        $stmt->bindParam(':fecha',              $fecha      );
	        $stmt->bindParam(':curriculum' ,        $curriculum );
	        $stmt->bindParam(':referencia' ,        $referencia );
	        
	        $stmt->execute();
	        
		} catch(PDOException $ex) {
			echo "Ocurrio un error";
		}	        
	           
    }



        
    /**
     * Leer los datos de los postulantes
     * @return array 
     */ 
	public function &leerPostulaciones(){
	
	    try{
	        $resultado = array();
	        $indice    = 0;
	        foreach ($this->db->query("SELECT * FROM $this->tabla WHERE olvidar <> 1") as $row) {
	            $resultado[$indice]['nombreApellido']   =  $row ['nombreApellido']  ;
	            $resultado[$indice]['email']            =  $row ['email']  ;
	            $resultado[$indice]['mensaje']          =  $row ['mensaje']  ;
	            $resultado[$indice]['fecha']            =  $row ['fecha']  ;
	            $resultado[$indice]['curriculum']       =  $row ['curriculum']  ;
	            $resultado[$indice]['referencia']       =  $row ['referencia']  ;
	            $indice++;
	            
	        }
	        
	    return $resultado;
			
	    } catch(PDOException $ex) {
			echo "Ocurrio un error";
	    }
	}



	
    /**
     * Leer las referencias de las busquedas
     * @return array 
     */ 
	public function &leerReferencias(){
	
	    try{
	        $resultado = array();
	        $indice    = 0;
	        foreach ($this->db->query("SELECT * FROM $this->tabla") as $row) {
	            $resultado[$indice]       =  $row ['referencia']  ;
	            $indice++;
	            
	        }
	        
	    return $resultado;
			
	    } catch(PDOException $ex) {
			echo "Ocurrio un error";
	    }
	}	
	
}

