<?php
/**
 * Clase Base DP para BaseCrClienteTelefonoDP
 *
 * @package    
 * @subpackage BaseCrClienteTelefonoDP
 * @author     Willy
 * @version    SVN:: BaseCrClienteTelefonoDP.class.php,v 1.1 2014-10-30 10:20:41 william.taype Exp $
 */
abstract class BaseCrClienteTelefonoDP extends CrClienteTelefonoBN
{
  /* Número de registros afectados */
  private $nRowsAffected;

  public function __construct($bSetDefault = true)
  {
    if( $bSetDefault instanceof CrClienteTelefonoBN )
    {
      $o_CrClienteTelefonoBN = $bSetDefault;
      if($o_CrClienteTelefonoBN->getIdTelefono()) : $this->setIdTelefono($o_CrClienteTelefonoBN->getIdTelefono()); endif;
      if($o_CrClienteTelefonoBN->getIdCliente()) : $this->setIdCliente($o_CrClienteTelefonoBN->getIdCliente()); endif;
      if($o_CrClienteTelefonoBN->getIdTipoTelefono()) : $this->setIdTipoTelefono($o_CrClienteTelefonoBN->getIdTipoTelefono()); endif;
      if($o_CrClienteTelefonoBN->getNombreTipoTelefono()) : $this->setNombreTipoTelefono($o_CrClienteTelefonoBN->getNombreTipoTelefono()); endif;
      if($o_CrClienteTelefonoBN->getPertenece()) : $this->setPertenece($o_CrClienteTelefonoBN->getPertenece()); endif;
      if($o_CrClienteTelefonoBN->getIdOperador()) : $this->setIdOperador($o_CrClienteTelefonoBN->getIdOperador()); endif;
      if($o_CrClienteTelefonoBN->getNombreOperador()) : $this->setNombreOperador($o_CrClienteTelefonoBN->getNombreOperador()); endif;
      if($o_CrClienteTelefonoBN->getNumero()) : $this->setNumero($o_CrClienteTelefonoBN->getNumero()); endif;
      if($o_CrClienteTelefonoBN->getFechaRegistro()) : $this->setFechaRegistro($o_CrClienteTelefonoBN->getFechaRegistro()); endif;
      if($o_CrClienteTelefonoBN->getUsuarioRegistro()) : $this->setUsuarioRegistro($o_CrClienteTelefonoBN->getUsuarioRegistro()); endif;
      if($o_CrClienteTelefonoBN->getFechaActualizacion()) : $this->setFechaActualizacion($o_CrClienteTelefonoBN->getFechaActualizacion()); endif;
      if($o_CrClienteTelefonoBN->getUsuarioActualizacion()) : $this->setUsuarioActualizacion($o_CrClienteTelefonoBN->getUsuarioActualizacion()); endif;
      if($o_CrClienteTelefonoBN->getEliminado()) : $this->setEliminado($o_CrClienteTelefonoBN->getEliminado()); endif;
      if($o_CrClienteTelefonoBN->getFechaEliminado()) : $this->setFechaEliminado($o_CrClienteTelefonoBN->getFechaEliminado()); endif;
      if($o_CrClienteTelefonoBN->getUsuarioEliminado()) : $this->setUsuarioEliminado($o_CrClienteTelefonoBN->getUsuarioEliminado()); endif;
      if($o_CrClienteTelefonoBN->getEstado()) : $this->setEstado($o_CrClienteTelefonoBN->getEstado()); endif;
    }
  }

  /* Obtiene el número de registros afectados */
  public function getRowsAffected()
  {
    return $this->nRowsAffected;
  }

  public function save()
  {
    try
    {
      $con = Conexion::getConexion();
      $sql = "SELECT IF(MAX(IdTelefono),(MAX(IdTelefono)+1), 1) AS Maximo FROM cr_cliente_telefono;";
      $oLink = method_exists($con, 'getResource')?$con->getResource():$con;
      $result = mysql_query($sql, $oLink);
      $row = mysql_fetch_array($result);
      $this->setIdTelefono($row[0]);

      if($this->getIdTelefono()){
        $a_Fields = array();

        if($this->getIdTelefono()) : $a_Fields['IdTelefono'] = ($this->getIdTelefono()); endif;
        if($this->getIdCliente()) : $a_Fields['IdCliente'] = ($this->getIdCliente()); endif;
        if($this->getIdTipoTelefono()) : $a_Fields['IdTipoTelefono'] = ($this->getIdTipoTelefono()); endif;
        if($this->getNombreTipoTelefono()) : $a_Fields['NombreTipoTelefono'] = ($this->getNombreTipoTelefono()); endif;
        if($this->getPertenece()) : $a_Fields['Pertenece'] = ($this->getPertenece()); endif;
        if($this->getIdOperador()) : $a_Fields['IdOperador'] = ($this->getIdOperador()); endif;
        if($this->getNombreOperador()) : $a_Fields['NombreOperador'] = ($this->getNombreOperador()); endif;
        if($this->getNumero()) : $a_Fields['Numero'] = ($this->getNumero()); endif;
        if($this->getComentario()) : $a_Fields['Comentario'] = ($this->getComentario()); endif;
        if($this->getFechaRegistro()) : $a_Fields['FechaCreacion'] = ($this->getFechaRegistro()); endif;
        if($this->getUsuarioRegistro()) : $a_Fields['UsuarioCreacion'] = ($this->getUsuarioRegistro()); endif;
        if($this->getFechaActualizacion()) : $a_Fields['FechaModificacion'] = ($this->getFechaActualizacion()); endif;
        if($this->getUsuarioActualizacion()) : $a_Fields['UsuarioModificacion'] = ($this->getUsuarioActualizacion()); endif;
        if($this->getEliminado()) : $a_Fields['Eliminado'] = ($this->getEliminado()); endif;
        if($this->getFechaEliminado()) : $a_Fields['FechaEliminado'] = ($this->getFechaEliminado()); endif;
        if($this->getUsuarioEliminado()) : $a_Fields['UsuarioEliminado'] = ($this->getUsuarioEliminado()); endif;
        if($this->getEstado()) : $a_Fields['Estado'] = ($this->getEstado()); endif;

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

        $sql = "INSERT INTO cr_cliente_telefono (".$sStringField.") VALUES (".$sStringValue.");";
        $oLink = method_exists($con, 'getResource')?$con->getResource():$con;
        $result = mysql_query($sql, $oLink);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function update()
  {
    try
    {
      if($this->getIdTelefono())
      {
        $a_Fields = array();

        if($this->getIdTelefono()) : $a_Fields['IdTelefono'] = ($this->getIdTelefono()); endif;
        if($this->getIdCliente()) : $a_Fields['IdCliente'] = ($this->getIdCliente()); endif;
        if($this->getIdTipoTelefono()) : $a_Fields['IdTipoTelefono'] = ($this->getIdTipoTelefono()); endif;
        if($this->getNombreTipoTelefono()) : $a_Fields['NombreTipoTelefono'] = ($this->getNombreTipoTelefono()); endif;
        if($this->getPertenece()) : $a_Fields['Pertenece'] = ($this->getPertenece()); endif;
        if($this->getIdOperador()) : $a_Fields['IdOperador'] = ($this->getIdOperador()); endif;
        if($this->getNombreOperador()) : $a_Fields['NombreOperador'] = ($this->getNombreOperador()); endif;
        if($this->getNumero()) : $a_Fields['Numero'] = ($this->getNumero()); endif;
        if($this->getComentario()) : $a_Fields['Comentario'] = ($this->getComentario()); endif;
        if($this->getFechaRegistro()) : $a_Fields['FechaCreacion'] = ($this->getFechaRegistro()); endif;
        if($this->getUsuarioRegistro()) : $a_Fields['UsuarioCreacion'] = ($this->getUsuarioRegistro()); endif;
        if($this->getFechaActualizacion()) : $a_Fields['FechaModificacion'] = ($this->getFechaActualizacion()); endif;
        if($this->getUsuarioActualizacion()) : $a_Fields['UsuarioModificacion'] = ($this->getUsuarioActualizacion()); endif;
        if($this->getEliminado()) : $a_Fields['Eliminado'] = ($this->getEliminado()); endif;
        if($this->getFechaEliminado()) : $a_Fields['FechaEliminado'] = ($this->getFechaEliminado()); endif;
        if($this->getUsuarioEliminado()) : $a_Fields['UsuarioEliminado'] = ($this->getUsuarioEliminado()); endif;
        if($this->getEstado()) : $a_Fields['Estado'] = ($this->getEstado()); endif;

        $sStringField = arrayClass::implode_key_value(',', $a_Fields);

        $con = Conexion::getConexion();
        $sql = "UPDATE cr_cliente_telefono SET ".$sStringField." WHERE 1 AND IdTelefono='".$this->getIdTelefono()."';";
        $oLink = method_exists($con, 'getResource')?$con->getResource():$con;
        $result = mysql_query($sql, $oLink);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function delete()
  {
    try
    {
      if($this->getIdTelefono())
      {
        $a_Fields = array();

        $con = Conexion::getConexion();
        $sql = "DELETE FROM cr_cliente_telefono WHERE 1 AND IdTelefono='".$this->getIdTelefono()."';"; 
        $oLink = method_exists($con, 'getResource')?$con->getResource():$con;
        $result = mysql_query($sql, $oLink);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  /* Búsqueda del registro por la llave primaria */
  public static function selectByPK($vIdTelefono)
  {
    try
    {
      $con = Conexion::getConexion();
      $sql = "SELECT IdTelefono, IdCliente, IdTipoTelefono, NombreTipoTelefono, Pertenece, IdOperador, NombreOperador, Numero, Comentario, FechaCreacion, UsuarioCreacion, FechaModificacion, UsuarioModificacion, Eliminado, FechaEliminado, UsuarioEliminado, Estado FROM cr_cliente_telefono WHERE 1 AND IdTelefono='".$vIdTelefono."'; ";
        $oLink = method_exists($con, 'getResource')?$con->getResource():$con;
        $result = mysql_query($sql, $oLink);
      $o_Propel = $result ? mysql_fetch_object($result) : null;
      
      return $o_Propel?self::insertObjectBN($o_Propel):null;

    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* Devuelve un objeto con métodos de acceso */
  private function insertObjectBN($o_propel){
    $o_CrClienteTelefonoDP = new CrClienteTelefonoDP();
    $o_CrClienteTelefonoDP->setIdTelefono($o_propel->IdTelefono);
    $o_CrClienteTelefonoDP->setIdCliente($o_propel->IdCliente);
    $o_CrClienteTelefonoDP->setIdTipoTelefono($o_propel->IdTipoTelefono);
    $o_CrClienteTelefonoDP->setNombreTipoTelefono($o_propel->NombreTipoTelefono);
    $o_CrClienteTelefonoDP->setPertenece($o_propel->Pertenece);
    $o_CrClienteTelefonoDP->setIdOperador($o_propel->IdOperador);
    $o_CrClienteTelefonoDP->setNombreOperador($o_propel->NombreOperador);
    $o_CrClienteTelefonoDP->setNumero($o_propel->Numero);
    $o_CrClienteTelefonoDP->setComentario($o_propel->Comentario);
    $o_CrClienteTelefonoDP->setFechaRegistro($o_propel->FechaCreacion);
    $o_CrClienteTelefonoDP->setUsuarioRegistro($o_propel->UsuarioCreacion);
    $o_CrClienteTelefonoDP->setFechaActualizacion($o_propel->FechaModificacion);
    $o_CrClienteTelefonoDP->setUsuarioActualizacion($o_propel->UsuarioModificacion);
    $o_CrClienteTelefonoDP->setEliminado($o_propel->Eliminado);
    $o_CrClienteTelefonoDP->setFechaEliminado($o_propel->FechaEliminado);
    $o_CrClienteTelefonoDP->setUsuarioEliminado($o_propel->UsuarioEliminado);
    $o_CrClienteTelefonoDP->setEstado($o_propel->Estado);
    return $o_CrClienteTelefonoDP;
  }
}