<?php

/**
* Clase Dispacher para Prestamo
*
* @package IM
* @subpackage PrestamoPresenciaDP
* @author Willy
* @version SVN: : PrestamoPresenciaDP.class.php,v 1.1 2009/06/10 22:59:27 Exp $
*/
class PrestamoPresenciaDP implements interfaceDP {
 	private static $fieldNames = array (
    'Fecha' => 'fecha'
	);
			
  protected $o_Bean;

  /**
  * Constructor donde asigna a un atributo el objeto PrestamoPresenciaBean
  *
  * @param PrestamoPresenciaBean $o_PrestamoPresenciaBean
  */
  public function __construct(PrestamoPresenciaBean $o_PrestamoPresenciaBean){
  
    $this->o_Bean = $o_PrestamoPresenciaBean;
    
  }
  
  /**
  * Retorna el objeto PrestamoPresenciaBean
  *
  * @return Object
  */
  protected function getObjetoBean(){
  
    if(!$this->o_Bean){
        $this->o_Bean = new PrestamoPresenciaBean();
    }        
    return $this->o_Bean;
    
  }
  
  /**
  * Ingresa un nuevo registro
  *
  * @return IdGenerado
  */
  public function save(){

    $con = Conexion::getConexion();
    
      $a_Fields = array();
    	
      if($this->getObjetoBean()->getIdPrestamo()) : ($this->getObjetoBean()->getIdPrestamo()); endif;
      if($this->getObjetoBean()->getIdCliente()) : $a_Fields['idcliente'] = ($this->getObjetoBean()->getIdCliente()); endif;
      if($this->getObjetoBean()->getIdPrestamo()) : $a_Fields['idprestamo'] = ($this->getObjetoBean()->getIdPrestamo()); endif;
      if($this->getObjetoBean()->getFecha()) : $a_Fields['fecha'] = ($this->getObjetoBean()->getFecha()); endif;
      
      if($this->getObjetoBean()->getRegistroLatitud()) : $a_Fields['registrolatitud'] = ($this->getObjetoBean()->getRegistroLatitud()); endif;
      if($this->getObjetoBean()->getRegistroLongitud()) : $a_Fields['registrolongitud'] = ($this->getObjetoBean()->getRegistroLongitud()); endif;

      if($this->getObjetoBean()->getUsuarioCreacion()) : $a_Fields['usuariocreacion'] = ($this->getObjetoBean()->getUsuarioCreacion()); endif;
      if($this->getObjetoBean()->getFechaCreacion()) : $a_Fields['fechacreacion'] = ($this->getObjetoBean()->getFechaCreacion()); endif;

           
      $sStringField = arrayClass::implode_keys(',', $a_Fields);
      $sStringValue = "'".implode("','", $a_Fields)."'";

      //$con = Conexion::getConexion();
      $sql = "INSERT INTO cr_prestamo_presencia (".$sStringField.")
                      VALUES (".$sStringValue.");";
      
      //echo $sql;
	  	    
      $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
      
      $idPrestamo = mysql_insert_id($con);
      
      
      

      $iResultSave = $idPrestamo;
      if($iResultSave > 0){
        return $iResultSave;
      }else{
        return false;
      }

    
  }
  
    /**
  * Modifica un nuevo registro
  *
  * @return IdGenerado
  */
  public function update() {

    if($this->getObjetoBean()->getIdPrestamo()){
      $con = Conexion::getConexion();
      $a_Fields = array();
      
      if($this->getObjetoBean()->getIdPrestamo()) : ($this->getObjetoBean()->getIdPrestamo()); endif;
      if($this->getObjetoBean()->getIdCliente()) : $a_Fields['idcliente'] = ($this->getObjetoBean()->getIdCliente()); endif;
      if($this->getObjetoBean()->getFecha()) : $a_Fields['fecha'] = ($this->getObjetoBean()->getFecha()); endif;
      
      if($this->getObjetoBean()->getRegistroLatitud()) : $a_Fields['registrolatitud'] = ($this->getObjetoBean()->getRegistroLatitud()); endif;
      if($this->getObjetoBean()->getRegistroLongitud()) : $a_Fields['registrolongitud'] = ($this->getObjetoBean()->getRegistroLongitud()); endif;

      if($this->getObjetoBean()->getUsuarioCreacion()) : $a_Fields['usuariocreacion'] = ($this->getObjetoBean()->getUsuarioCreacion()); endif;
      if($this->getObjetoBean()->getFechaCreacion()) : $a_Fields['fechacreacion'] = ($this->getObjetoBean()->getFechaCreacion()); endif;      

      $sString = arrayClass::implode_key_value(",", $a_Fields);

      $sql = "UPDATE cr_prestamopresencia SET
                  ".$sString."
            WHERE 1 AND IdPrestamo= '".$this->getObjetoBean()->getIdPrestamo()."' ";
     
     
      $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
      
                  
      $iResultSave = $result;
      if($iResultSave > 0){
        return $iResultSave;
      }else{
        return false;
      }

    }else{
      return false;
    }

  }
  
  /**
  * Elimina registro
  *
  * @return Boolean
  */
  public function delete(){
  	           
      $con = Conexion::getConexion();
      
      /*if($this->getObjetoBean()->getIdPrestamo()){
          $o_Cliente->setIdPrestamo($this->getObjetoBean()->getIdPrestamo());
      }*/
            
      $sql = "UPDATE cr_prestamo_presencia 
              SET
                Eliminado = '1',
                FechaEliminado = '".date('Y-m-d H:i:s')."',
                UsuarioEliminado = '".$this->getObjetoBean()->getUsuarioEliminado()."'
            WHERE IdPrestamo= '".$this->getObjetoBean()->getIdPrestamo()."' ";
      
      $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
      
      $num_rows = mysql_affected_rows($con);
      
                  
      $iResultDelete = $num_rows;
      if($iResultDelete){
          return 1;
      }else{
          return false;
      }    
    
  }
  	
  	
    /*
      $o_Prestamo = new Prestamo();
      
      if($this->getObjetoBean()->getIdPrestamo()){
          $o_Prestamo->setIdPrestamo($this->getObjetoBean()->getIdPrestamo());
      }
      $iResultDelete = $o_Prestamo->delete();
      if($iResultDelete > 0){
          return true;
      }else{
          return false;
      }    
    */
  
  /**
  * Selecciona un nuevo registro
  *
  * @return IdGenerado
  */
public function select(){
      
    $where = "";
        
    $tamPag           = is_null($this->getObjetoBean()->tamPag)?999999:$this->getObjetoBean()->tamPag;
    $pagina           = is_null($this->getObjetoBean()->page)?1:$this->getObjetoBean()->page;
    $numeroRegistros  = $this->selectNumRows();
    $limitInf         = ($pagina-1)*$tamPag;
    
    $where = $this->buildConsult();
    $orden = $this->buildOrderByField();
   
    $con = Conexion::getConexion();
   
	 $sql = "SELECT cr_prestamo_presencia.*
			   	FROM cr_prestamo_presencia
					LEFT JOIN cr_cliente ON cr_cliente.IdCliente = cr_prestamo_presencia.IdCliente
					
            WHERE 1=1 ".$where." ".$orden." LIMIT ".$limitInf.",".$tamPag;
	//echo $sql;
	
    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    
    $a_tmp = array();

    if($num_rows>0){
      while ($o_valor = mysql_fetch_object($result)) {
      $a_tmp[] = $this->insertarObjetoBean($o_valor);
      }
    }

    
   
    return count($a_tmp)>0?$a_tmp:null;
      
  }  
    
  /**
  * Retorna un objeto PrestamoPresenciaBean
  *
  * @return Object
  */
  public function selectByPk(){
     $where = $this->buildConsult();
    $con = Conexion::getConexion();
	
	 $sql = "SELECT cr_prestamo_presencia.*
					FROM cr_prestamo_presencia
					LEFT JOIN cr_cliente ON cr_cliente.IdCliente = cr_prestamo_presencia.IdCliente
	
					
    		WHERE  1 = 1 and IdPrestamo = '".$this->getObjetoBean()->getIdPrestamo()."' $where";

    return $o_Propel?$this->insertarObjetoBean($o_Propel):null;
  
  }


    
  /**
  * Reasigna valores retornados del propel a un objeto PrestamoPresenciaBean
  *
  * @param Object $o_Propel
  * @return PrestamoPresenciaBean
  */
  private function insertarObjetoBean($o_Propel){

    $o_PrestamoPresenciaBean = new PrestamoPresenciaBean();
    
  
    $o_PrestamoPresenciaBean->setIdPrestamoPresencia($o_Propel->idprestamopresencia);
    $o_PrestamoPresenciaBean->setIdPrestamo($o_Propel->idprestamo);
    $o_PrestamoPresenciaBean->setIdCliente($o_Propel->idcliente);
    $o_PrestamoPresenciaBean->setFecha($o_Propel->fecha);
    $o_PrestamoPresenciaBean->setRegistroLatitud($o_Propel->registrolatitud);
    $o_PrestamoPresenciaBean->setRegistroLongitud($o_Propel->registrolongitud);
    $o_PrestamoPresenciaBean->setUsuarioCreacion($o_Propel->usuariocreacion);
    $o_PrestamoPresenciaBean->setFechaCreacion($o_Propel->fechacreacion);
    
    return $o_PrestamoPresenciaBean;    
    
  }
  
  
  
  public function selectNumRows(){
    
    $where = $this->buildConsult();
    
    $con = Conexion::getConexion();
    

	 $sql = "SELECT cr_prestamo_presencia.IdCliente
				FROM cr_prestamo_presencia
				LEFT JOIN cr_cliente ON cr_cliente.IdCliente = cr_prestamo_presencia.IdCliente
	
				
    	WHERE 1 = 1 ".$where;

    $result = mysql_db_query(Conexion::getNameDb(), $sql, $con);
    $num_rows = mysql_num_rows($result);
    
    
   // echo $sql;
    return $num_rows;
    
  }
  
  private function buildConsult(){
    
     $where = "";
    
    $where_eliminado = " AND cr_prestamo_presencia.Eliminado <> '1'";
    
    if($this->getObjetoBean()->getIdPrestamo()){
       $where .= " AND IdPrestamo  = '".$this->getObjetoBean()->getIdPrestamo()."'";
    }
        
    if($this->getObjetoBean()->getIdCliente()){
       $where .= " AND cr_prestamo_presencia.IdCliente  = '".$this->getObjetoBean()->getIdCliente()."'";
    }
    
    
    
    
    if($this->getObjetoBean()->getFecha()){
      	 $where .= " AND cr_prestamo_presencia.fecha= '".$this->getObjetoBean()->getFecha()."'";
    }
    
    return $where;
    
  }
  
   public function buildOrderByField(){
    $order_by = "";
    if($this->getObjetoBean()->sortCampos || $this->getObjetoBean()->sortCampos != ""){
      $a_valCampos = explode(";", $this->getObjetoBean()->sortCampos);
      $a_valtype   = explode(";", $this->getObjetoBean()->sortType);
      $order_by = " ORDER BY ";
      $a_order = array();
      foreach ($a_valCampos as $key => $val){
        $sTmpOrder = "";
        if(array_key_exists($val, self::$fieldNames)){
          $sTmpOrder .= self::$fieldNames[$val];
          switch ($a_valtype[$key]){
            case 1: $sTmpOrder .= " ASC"; break;
            case 2: $sTmpOrder .= " DESC"; break;
          }
          $a_order[] = $sTmpOrder;
        }
      }
      $order_by .= implode(", ", $a_order);
    }
    return $order_by;
  }
    
}?>