<?php

/**
 * Subclass for performing query and update operations on the 'DESTINOS_COMISIONADOS' table.
 *
 * 
 *
 * @package lib.model
 */ 
class DestinosComisionadosPeer extends BaseDestinosComisionadosPeer
{
  public static function settOrden($nitocc,$id_comision,$orden,$codmun)
  {
    $c = new Criteria();
    $c->add(DestinosComisionadosPeer::NITOCC,$nitocc);
    $c->add(DestinosComisionadosPeer::ID_COMISION,$id_comision);
    $c->add(DestinosComisionadosPeer::CODMUN,$codmun);
    $destino = DestinosComisionadosPeer::doSelectOne($c);
    $destino->setOrden($orden);
    $destino->save();
    return true;
  }
  
  /**
   * Retorna el id de transporte de un destino asociado a un comisionado
   * @param int $codMun
   * @return int
   */
  public static function getIdTransporte($idComision, $nitocc, $codmun) {
  	$c = new Criteria();
  	$c->add(DestinosComisionadosPeer::NITOCC,$nitocc);
    $c->add(DestinosComisionadosPeer::ID_COMISION,$idComision);
    $c->add(DestinosComisionadosPeer::CODMUN,$codmun);
    $destino = DestinosComisionadosPeer::doSelectOne($c);
    
    if($destino)
    	return $destino->getIdTransporte();
    else
    	return 1;
  }
  
  public static function getIs($id_comision,$nitocc,$codmun)
  {
    $c = new Criteria();
    $c->add(DestinosComisionadosPeer::NITOCC,$nitocc);
    $c->add(DestinosComisionadosPeer::ID_COMISION,$id_comision);
    $c->add(DestinosComisionadosPeer::CODMUN,$codmun);
    $c->add(DestinosComisionadosPeer::ESTADO,1);
    if(DestinosComisionadosPeer::doCount($c) > 0):
      return 1;
    else:
      return 0;
    endif;    
  }
  
  public static function getDestinoComisionado($id_comision,$nitocc,$codmun)
  {
    $c = new Criteria();
    $c->add(DestinosComisionadosPeer::NITOCC,$nitocc);
    $c->add(DestinosComisionadosPeer::ID_COMISION,$id_comision);
    $c->add(DestinosComisionadosPeer::CODMUN,$codmun);
    $c->add(DestinosComisionadosPeer::ESTADO,1);
    if(DestinosComisionadosPeer::doCount($c) > 0):
      return DestinosComisionadosPeer::doSelectOne($c);
    endif;    
    return new DestinosComisionados;
  }

    /**
	 * Trae todos los destinos de un comisionado
     * @param unknown_type $nitocc
     * @param unknown_type $idComision
     * @param unknown_type $vigencia
     * @return array con los nombres de los detinos
     */
	public static function getDestinosComisionado($nitocc, $idComision, $vigencia) {
		$c = new Criteria();
		$c->add(DestinosComisionadosPeer::NITOCC, $nitocc);
		$c->add(DestinosComisionadosPeer::ID_COMISION, $idComision);
		$c->add(DestinosComisionadosPeer::VIGENCIA, $vigencia);
		
		$destinos = DestinosComisionadosPeer::doSelectJoinMunicipios($c);
		
		$string = '';
		foreach($destinos as $destino):
			$string .= $destino->getMunicipios()->getMunicipio() . ', ';
		endforeach;
		
		return $string;
	}
	
	/**
	 * Busca todos los destinos de un comisionado
     * @param unknown_type $nitocc
     * @param unknown_type $idComision
     * @param unknown_type $vigencia
     * @return array de objetos destino_comisionado
     */
	public static function getObjetosDestinosComisionado($nitocc, $idComision, $vigencia) {
		$c = new Criteria();
		$c->add(DestinosComisionadosPeer::NITOCC, $nitocc);
		$c->add(DestinosComisionadosPeer::ID_COMISION, $idComision);
		$c->add(DestinosComisionadosPeer::VIGENCIA, $vigencia);
		
		return DestinosComisionadosPeer::doSelectJoinMunicipios($c);
	}
	
	public static function doSelectJoinAll(Criteria $c, $con = null)
	{
		$c = clone $c;

				if ($c->getDbName() == Propel::getDefaultDB()) {
			$c->setDbName(self::DATABASE_NAME);
		}

		DestinosComisionadosPeer::addSelectColumns($c);
		$startcol2 = (DestinosComisionadosPeer::NUM_COLUMNS - DestinosComisionadosPeer::NUM_LAZY_LOAD_COLUMNS) + 1;

		TercerosPeer::addSelectColumns($c);
		$startcol3 = $startcol2 + TercerosPeer::NUM_COLUMNS;

		MunicipiosPeer::addSelectColumns($c);
		$startcol4 = $startcol3 + MunicipiosPeer::NUM_COLUMNS;

		TransportesPeer::addSelectColumns($c);
		$startcol5 = $startcol4 + TransportesPeer::NUM_COLUMNS;

		ComisionesPeer::addSelectColumns($c);
		$startcol6 = $startcol5 + ComisionesPeer::NUM_COLUMNS;

		$c->addJoin(DestinosComisionadosPeer::NITOCC, TercerosPeer::NITOCC);

		$c->addJoin(DestinosComisionadosPeer::CODMUN, MunicipiosPeer::CODMUN);

		$c->addJoin(DestinosComisionadosPeer::ID_TRANSPORTE, TransportesPeer::ID);

		$c->addJoin(DestinosComisionadosPeer::ID_COMISION, ComisionesPeer::ID);

//		$c->addJoin(DestinosComisionadosPeer::VIGENCIA, ComisionesPeer::VIGENCIA);
//
//		$c->addJoin(DestinosComisionadosPeer::ID_COMISION, ComisionesPeer::VIGENCIA);

		$c->addJoin(DestinosComisionadosPeer::VIGENCIA, ComisionesPeer::VIGENCIA);

		$rs = BasePeer::doSelect($c, $con);
		$results = array();

		while($rs->next()) {

			$omClass = DestinosComisionadosPeer::getOMClass();


			$cls = sfPropel::import($omClass);
			$obj1 = new $cls();
			$obj1->hydrate($rs);


					
			$omClass = TercerosPeer::getOMClass();


			$cls = sfPropel::import($omClass);
			$obj2 = new $cls();
			$obj2->hydrate($rs, $startcol2);

			$newObject = true;
			for ($j=0, $resCount=count($results); $j < $resCount; $j++) {
				$temp_obj1 = $results[$j];
				$temp_obj2 = $temp_obj1->getTerceros(); 				if ($temp_obj2->getPrimaryKey() === $obj2->getPrimaryKey()) {
					$newObject = false;
					$temp_obj2->addDestinosComisionados($obj1); 					break;
				}
			}

			if ($newObject) {
				$obj2->initDestinosComisionadoss();
				$obj2->addDestinosComisionados($obj1);
			}


					
			$omClass = MunicipiosPeer::getOMClass();


			$cls = sfPropel::import($omClass);
			$obj3 = new $cls();
			$obj3->hydrate($rs, $startcol3);

			$newObject = true;
			for ($j=0, $resCount=count($results); $j < $resCount; $j++) {
				$temp_obj1 = $results[$j];
				$temp_obj3 = $temp_obj1->getMunicipios(); 				if ($temp_obj3->getPrimaryKey() === $obj3->getPrimaryKey()) {
					$newObject = false;
					$temp_obj3->addDestinosComisionados($obj1); 					break;
				}
			}

			if ($newObject) {
				$obj3->initDestinosComisionadoss();
				$obj3->addDestinosComisionados($obj1);
			}


					
			$omClass = TransportesPeer::getOMClass();


			$cls = sfPropel::import($omClass);
			$obj4 = new $cls();
			$obj4->hydrate($rs, $startcol4);

			$newObject = true;
			for ($j=0, $resCount=count($results); $j < $resCount; $j++) {
				$temp_obj1 = $results[$j];
				$temp_obj4 = $temp_obj1->getTransportes(); 				if ($temp_obj4->getPrimaryKey() === $obj4->getPrimaryKey()) {
					$newObject = false;
					$temp_obj4->addDestinosComisionados($obj1); 					break;
				}
			}

			if ($newObject) {
				$obj4->initDestinosComisionadoss();
				$obj4->addDestinosComisionados($obj1);
			}


					
			$omClass = ComisionesPeer::getOMClass();


			$cls = sfPropel::import($omClass);
			$obj5 = new $cls();
			$obj5->hydrate($rs, $startcol5);

			$newObject = true;
			for ($j=0, $resCount=count($results); $j < $resCount; $j++) {
				$temp_obj1 = $results[$j];
				$temp_obj5 = $temp_obj1->getComisiones(); 				if ($temp_obj5->getPrimaryKey() === $obj5->getPrimaryKey()) {
					$newObject = false;
					$temp_obj5->addDestinosComisionados($obj1); 					break;
				}
			}

			if ($newObject) {
				$obj5->initDestinosComisionadoss();
				$obj5->addDestinosComisionados($obj1);
			}

			$results[] = $obj1;
		}
		return $results;
	}
}
