<?php

/**
 * Subclass for performing query and update operations on the 'TERCEROS' table.
 *
 *
 *
 * @package lib.model
 */
class TercerosPeer extends BaseTercerosPeer
{
  /**
   * Se verifica si el usuario esta asignado a otra comision en esta fecha
   * @param $nitocc
   * @param $fecha_salida
   * @param $dias
   * @return unknown_type
   */
  public static function getAsignadoPlanta($nitocc, $fecha_salida, $dias, $vigencia, $id_comision=0,$tipo_comision)
  {
     $data = explode('-',$fecha_salida);
    //NOTA: se le resta un dia porque se cuenta el dia de partida como parte de la comision
    $fecha_regreso = date("Y-m-d", mktime(0, 0, 0,$data[1], $data[2] + round($dias)-1, $data[0]));
    
  $c = new Criteria();

 //ACTUALIZACION FEBRERO 2 DE 2012
	// LA FECHA DE SALIDA PUEDE SER MAYOR O IGUAL 
	//ACTUALIZACION FEBRERO 23 DE 2012
	// LA FECHA DE REGRESO PUEDE SER MAYOR O IGUAL
    
  if($tipo_comision==01||$tipo_comision==05||$tipo_comision==03)
    
    {
    
     $c = new Criteria();
    $c->add(ComisionadosPlantaPeer::NITOCC, $nitocc);
    $c->add(ComisionadosPlantaPeer::ESTADO, 1);
    
    $crit1 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_SALIDA, $fecha_salida, Criteria::LESS_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_REGRESO, $fecha_salida, Criteria::GREATER_THAN);
    $crit1->addAnd($crit2);
	$c->add($crit1);
    
    $crit1 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_SALIDA, $fecha_regreso, Criteria::LESS_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_REGRESO, $fecha_regreso, Criteria::GREATER_THAN);
    $crit1->addAnd($crit2);
	$c->addOr($crit1);
	
	$crit1 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_SALIDA, $fecha_salida, Criteria::GREATER_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_REGRESO, $fecha_regreso, Criteria::LESS_THAN);
    $crit1->addAnd($crit2);
	$c->addOr($crit1);
    
    $c->add(ComisionesPeer::ESTADO, 1);
    $c->add(ComisionesPeer::ACTIVO, -1, Criteria::NOT_EQUAL);
    
    if($id_comision != 0):
      $c->add(ComisionadosPlantaPeer::ID_COMISION, $id_comision, Criteria::NOT_EQUAL);
      $c->add(ComisionadosPlantaPeer::VIGENCIA, $vigencia/*, Criteria::NOT_EQUAL*/);
    endif;

	
    $comis = ComisionadosPlantaPeer::doSelectJoinAll($c);
    
    
    
    return (!$comis ? false : $comis[0]);
    }
    
  else if($tipo_comision==02)
    {
   
     $c = new Criteria();
    $c->add(ComisionadosPlantaPeer::NITOCC, $nitocc);
    $c->add(ComisionadosPlantaPeer::ESTADO, 1);

    $crit1 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_SALIDA, $fecha_salida, Criteria::LESS_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_REGRESO, $fecha_salida, Criteria::GREATER_EQUAL);
    $crit1->addAnd($crit2);
	$c->add($crit1);

    $crit1 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_SALIDA, $fecha_regreso, Criteria::LESS_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_REGRESO, $fecha_regreso, Criteria::GREATER_EQUAL);
    $crit1->addAnd($crit2);
	$c->addOr($crit1);

	$crit1 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_SALIDA, $fecha_salida, Criteria::GREATER_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosPlantaPeer::FECHA_REGRESO, $fecha_regreso, Criteria::LESS_EQUAL);
    $crit1->addAnd($crit2);
	$c->addOr($crit1);

    $c->add(ComisionesPeer::ESTADO, 1);
    $c->add(ComisionesPeer::ACTIVO, -1, Criteria::NOT_EQUAL);
    $c->add(ComisionesPeer::TIPCOMI,$tipo_comision,Criteria::EQUAL);
    if($id_comision != 0):
      $c->add(ComisionadosPlantaPeer::ID_COMISION, $id_comision, Criteria::NOT_EQUAL);
      $c->add(ComisionadosPlantaPeer::VIGENCIA, $vigencia/*, Criteria::NOT_EQUAL*/);
    endif;
    $comis = ComisionadosPlantaPeer::doSelectJoinAll($c);

    
    return (!$comis ? false : $comis[0]);
    
    }
    
    else
    {
       
   
  $c = new Criteria();
    $c->add(ComisionadosPlantaPeer::NITOCC, $nitocc);
    $c->add(ComisionadosPlantaPeer::ESTADO, 1);
    
     $c->add(ComisionadosPlantaPeer::FECHA_REGRESO, $fecha_salida, Criteria::EQUAL);
    
	    
    if($id_comision != 0):
      $c->add(ComisionadosPlantaPeer::ID_COMISION, $id_comision, Criteria::NOT_EQUAL);
      $c->add(ComisionadosPlantaPeer::VIGENCIA, $vigencia/*, Criteria::NOT_EQUAL*/);
    endif;
    
    $comis = ComisionadosPlantaPeer::doSelectJoinAll($c);
    $cantidad = count($comis); 

	$con = Propel::getConnection();
	
	foreach($comis as $comisiones){
	$cont = 0;
	$sql="  select tab0.id_comision
		from pr_rp_comis tab0
		left join pr_avances_comisiones tab1 ON tab1.id_rp_comis = tab0.id and tab1.id_vigencia = tab0.id_vigencia and tab1.vigencia = tab0.vigencia
		where tab0.id_tercero=1061701606 and tab0.id_comision = 102 and tab1.dias_comi = 0 and tab1.fecha_ini_comi = tab1.fecha_fin_comi";
                $sentencia = $con->prepareStatement($sql);
		$resultset2 = $sentencia->executeQuery();
		$cont=0;

		while($resultset2->next()){		
		
		 	$cont+=1;
			//$mensaje.="Plan de Comision =>".$resultset2->getString('ID_COMISION')." RP =>".$resultset2->getString('ID').", ";
		}

	}
	$cantidad_comis= $cantidad - $count;
	if($cantidad_comis == 0){
	return false;
	}	
	else{
	return $comis[0];
	}

         
    }
  } 
  
  
  /**
   * Se verifica si el usuario esta asignado a otra comision en esta fecha
   * @param $nitocc
   * @param $fecha_salida
   * @param $dias
   * @return unknown_type
   */
  public static function getAsignadoContrato($nitocc,$fecha_salida,$dias,$vigencia,$id_comision=0,$tipo_comision)
  {
    $data = explode('-',$fecha_salida);
    //NOTA: se le resta un dia porque se cuenta el dia de partida como parte de la comision
    $fecha_regreso = date("Y-m-d", mktime(0, 0, 0,$data[1], $data[2] + round($dias)-1, $data[0]));
    
	//ACTUALIZACION FEBRERO 2 DE 2012
	// LA FECHA DE SALIDA PUEDE SER MAYOR O IGUAL 
	//ACTUALIZACION FEBRERO 23 DE 2012
	// LA FECHA DE REGRESO PUEDE SER MAYOR O IGUAL
	
    
    if($tipo_comision==01||$tipo_comision==05||$tipo_comision==03)
    
    {
   
     $c = new Criteria();
    $c->add(ComisionadosContratoPeer::NITOCC, $nitocc);
    $c->add(ComisionadosContratoPeer::ESTADO, 1);
    
    $crit1 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_SALIDA, $fecha_salida, Criteria::LESS_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_REGRESO, $fecha_salida, Criteria::GREATER_THAN);
    $crit1->addAnd($crit2);
	$c->add($crit1);
    
    $crit1 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_SALIDA, $fecha_regreso, Criteria::LESS_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_REGRESO, $fecha_regreso, Criteria::GREATER_THAN);
    $crit1->addAnd($crit2);
	$c->addOr($crit1);
	
	$crit1 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_SALIDA, $fecha_salida, Criteria::GREATER_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_REGRESO, $fecha_regreso, Criteria::LESS_THAN);
    $crit1->addAnd($crit2);
	$c->addOr($crit1);
    
    $c->add(ComisionesPeer::ESTADO, 1);
    $c->add(ComisionesPeer::ACTIVO, -1, Criteria::NOT_EQUAL);
    
    if($id_comision != 0):
      $c->add(ComisionadosContratoPeer::ID_COMISION, $id_comision, Criteria::NOT_EQUAL);
      $c->add(ComisionadosContratoPeer::VIGENCIA, $vigencia/*, Criteria::NOT_EQUAL*/);
    endif;
    $comis = ComisionadosContratoPeer::doSelectJoinAll($c);



    
    $cantidad = count($comis); 
    
	$con = Propel::getConnection();
	
	foreach($comis as $comisiones){


	

	$cont = 0;
	$sql="  select tab0.id_comision
		from pr_rp_comis tab0
		left join pr_avances_comisiones tab1 ON tab1.id_rp_comis = tab0.id and tab1.id_vigencia = tab0.id_vigencia and tab1.vigencia = tab0.vigencia
		where tab0.id_tercero=".$nitocc." and tab0.id_comision = ".$id_comision." and tab1.dias_comi = 0 and tab1.fecha_ini_comi = tab1.fecha_fin_comi";
                $sentencia = $con->prepareStatement($sql);
		$resultset2 = $sentencia->executeQuery();
		$cont=0;

		while($resultset2->next()){		
		
		 	$cont+=1;
			//$mensaje.="Plan de Comision =>".$resultset2->getString('ID_COMISION')." RP =>".$resultset2->getString('ID').", ";
		}

	}
	
	$cantidad_comis= $cantidad - $count;
	if($cantidad_comis == 0){
	return false;
	}	
	else{
	return $comis[0];
	}

    }
    
    else if($tipo_comision==02)
    {

    
   
    $c = new Criteria();
    $c->add(ComisionadosContratoPeer::NITOCC, $nitocc);
    $c->add(ComisionadosContratoPeer::ESTADO, 1);

    $crit1 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_SALIDA, $fecha_salida, Criteria::LESS_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_REGRESO, $fecha_salida, Criteria::GREATER_EQUAL);
    $crit1->addAnd($crit2);
	$c->add($crit1);

    $crit1 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_SALIDA, $fecha_regreso, Criteria::LESS_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_REGRESO, $fecha_regreso, Criteria::GREATER_EQUAL);
    $crit1->addAnd($crit2);
	$c->addOr($crit1);

	$crit1 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_SALIDA, $fecha_salida, Criteria::GREATER_EQUAL);
    $crit2 = $c->getNewCriterion(ComisionadosContratoPeer::FECHA_REGRESO, $fecha_regreso, Criteria::LESS_EQUAL);
    $crit1->addAnd($crit2);
	$c->addOr($crit1);

    $c->add(ComisionesPeer::ESTADO, 1);
    $c->add(ComisionesPeer::ACTIVO, -1, Criteria::NOT_EQUAL);
    $c->add(ComisionesPeer::VIGENCIA, $vigencia, Criteria::EQUAL);
    	
    $c->add(ComisionesPeer::TIPCOMI,$tipo_comision,Criteria::EQUAL);
    if($id_comision != 0):
      $c->add(ComisionadosContratoPeer::ID_COMISION, $id_comision, Criteria::NOT_EQUAL);
      $c->add(ComisionadosContratoPeer::VIGENCIA, $vigencia, Criteria::NOT_EQUAL);
    endif;
    $cantidad = count($comis); 

	$con = Propel::getConnection();
	
	foreach($comis as $comisiones){
	$cont = 0;
	$sql="  select tab0.id_comision
		from pr_rp_comis tab0
		left join pr_avances_comisiones tab1 ON tab1.id_rp_comis = tab0.id and tab1.id_vigencia = tab0.id_vigencia and tab1.vigencia = tab0.vigencia
		where tab0.id_tercero=1061701606 and tab0.id_comision = 102 and tab1.dias_comi = 0 and tab1.fecha_ini_comi = tab1.fecha_fin_comi";
                $sentencia = $con->prepareStatement($sql);
		$resultset2 = $sentencia->executeQuery();
		$cont=0;

		while($resultset2->next()){		
		
		 	$cont+=1;
			//$mensaje.="Plan de Comision =>".$resultset2->getString('ID_COMISION')." RP =>".$resultset2->getString('ID').", ";
		}

	}
	$cantidad_comis= $cantidad - $count;
	if($cantidad_comis == 0){
	return false;
	}	
	else{
	return $comis[0];
	}





    return (!$comis ? false : $comis[0]);
    
    }
    
    else
    {
  $c = new Criteria();
    $c->add(ComisionadosContratoPeer::NITOCC, $nitocc);
    $c->add(ComisionadosContratoPeer::ESTADO, 1);
    
     $c->add(ComisionadosContratoPeer::FECHA_REGRESO, $fecha_salida, Criteria::EQUAL);
    
	    
    if($id_comision != 0):
      $c->add(ComisionadosContratoPeer::ID_COMISION, $id_comision, Criteria::NOT_EQUAL);
      $c->add(ComisionadosContratoPeer::VIGENCIA, $vigencia/*, Criteria::NOT_EQUAL*/);
    endif;
    
    $comis = ComisionadosContratoPeer::doSelectJoinAll($c);
    
    return (!$comis ? false : $comis[0]);
    
    }
  }  
}


