<?php	

	include './include/headers.inc';

	require_once './include/dbconn.inc';
	if(!$dbconn=conectardb()){
		echo 'Error conexion.';
		exit();
	}
	
$data = json_decode(file_get_contents("php://input"));
$vaccion=$data->accion;

switch ($vaccion) {
    case "insertaedicion":
		$vanyo=$data->janyo; 
		$vagrupacion=$data->jagrupacion;
		$vidcliente=$data->jidcliente;
		if (isset($data->jworkflow)) {
			$vworkflow=$data->jworkflow;
		}
		else{
			$vworkflow=0;
		}
		$vpublicaciones=explode(',',$data->jpublicaciones);
		if (!empty($data->jresponsable)) {
			$vresponsables=explode(',',$data->jresponsable);
		}
		else{
			$vresponsables=array();
		}
        InsertaEdicion($vidcliente,$vanyo,$vagrupacion,$vpublicaciones,$vresponsables,$vworkflow);
        break;
	case "borraedicion":
        BorrarEdicion($vnombreedicion);
        break;
	case "cambiaestado":
		$vestadoedicion=$data->jestadoedicion;
		$videdicion=$data->jidedicion;
        CambiaEstadoEdicion($vestadoedicion,$videdicion);
        break;
	case "consultaporagrupacion":
        ConsultaEdicionporAgrupacion($vagrupacion);
        break;
	case "listadoporcliente":
		$vidcliente=$data->jidcliente;
        ConsultaEdicionporCliente($vidcliente);
        break;
		
}

function InsertaEdicion($vidcliente,$vanyo,$vagrupacion,$vpublicaciones,$vresponsables,$vworkflow){
	$dbconn=conectardb();	
	if($vanyo==""){
		echo(false);
		exit();
	}
	$query="select iddirectorio from directorio where idcliente=$1 and idpadre=0 and tipo='root';";
	$result = pg_prepare($dbconn,"obtendirectorioraiz",$query);

	$query="select iddirectorio,archivada from directorio where nombre=$1 and (idarchivo=$2 or idpadre=$2) and tipo=$3 and idedicion=$4;";
	$query="select iddirectorio,archivada from directorio where nombre=$1 and (idarchivo=$2 or idpadre=$2) and tipo=$3;";
	$query="select iddirectorio,archivada from directorio where nombre=$1 and idpadre=$2 and tipo=$3;";
	$result = pg_prepare($dbconn,"obtendirectorio",$query);
	
	$query="select iddirectorio,archivada from directorio where nombre=$1 and ((idarchivo=$2 and idpadre=$3) or (idarchivo=$3 and idpadre=$2)) and tipo=$4;";
	$result = pg_prepare($dbconn,"obtenedicion",$query);
	
	//$query="select iddirectorio,archivada from directorio where nombre=(select nombrepublicacion from publicacion where idpublicacion=$1) and (idarchivo=$2 or idpadre=$2) and tipo=$3;";//
	
	$query="select iddirectorio,archivada from directorio where nombre=(select abreviatura from niveldirectorio where idniveldirectorio=$1 and activo=true) and idpadre=$2 and tipo=$3;";
	$result = pg_prepare($dbconn,"obtendirectorioidpublicacion",$query);
	
	$query="select camino from niveldirectorio where idniveldirectorio=$1 and activo=true;";
	$result = pg_prepare($dbconn,"obtencaminodirectorio",$query);
	
	$query="INSERT INTO directorio (nombre,abreviatura,idcliente,idpadre,idarchivo,tipo) VALUES ($1,$1,$2,$3,$4,$5) RETURNING iddirectorio,archivada;";
	$result = pg_prepare($dbconn,"insertadirectorioedicion",$query);
	
	$query="select iddirectorio,archivada from directorio where tipo='old' and (idarchivo=$1 or idpadre=$1);";
	$result = pg_prepare($dbconn,"obtenold",$query);
	
	$query = "update directorio set idold=$2 where iddirectorio=$1;";
	$result =pg_prepare($dbconn,"updateidold",$query);
	
	//$query="INSERT INTO directorio (nombre,idcliente,idpadre,idarchivo,idold,tipo) VALUES ((select nombrepublicacion from publicacion where idpublicacion=$1),$2,$3,$4,$5,$6) RETURNING iddirectorio,archivada;";//
	
	$query="INSERT INTO directorio (nombre,abreviatura,idcliente,idpadre,idarchivo,idedicion,idold,tipo,etapa) VALUES ((select nombre from niveldirectorio where idniveldirectorio=$1 and activo=true),(select abreviatura from niveldirectorio where idniveldirectorio=$1 and activo=true),$2,$3,$4,$5,$6,$7,$8) RETURNING iddirectorio,archivada;";
	$result = pg_prepare($dbconn,"insertapublicacion",$query);
	
	$query="INSERT INTO directorio (nombre,abreviatura,idcliente,idpadre,idarchivo,idedicion,tipo) VALUES ($1,$1,$2,$3,$4,$5,$6) RETURNING iddirectorio,archivada;";
	$result = pg_prepare($dbconn,"insertadirectorio",$query);
	
	$queryresp="INSERT INTO usuario_edicion (idedicion,idusuario) VALUES ($1,$2)";
	$result = pg_prepare($dbconn,"insertaresponsableedicion",$queryresp);
	
	$query = "update directorio set idarchivo=idpadre,idpadre=idarchivo,archivada=not(archivada) where iddirectorio=$1;";
	$result =pg_prepare($dbconn,"cambiaestado",$query);
	
	$resultRoot = pg_execute($dbconn,"obtendirectorioraiz",array($vidcliente));
	if (!($rowRoot = pg_fetch_assoc($resultRoot))){
		return;
	}
	else{
		$resultEdicion = pg_execute($dbconn,"obtenedicion",array($vagrupacion,$rowRoot['iddirectorio'],$vanyo,'edicion'));
		if (!($rowEdicion = pg_fetch_assoc($resultEdicion))){
			$resultEdicion = pg_execute($dbconn,"insertadirectorioedicion",array($vagrupacion,$vidcliente,$rowRoot['iddirectorio'],$vanyo,'edicion'));
			$rowEdicion = pg_fetch_assoc($resultEdicion);
		}
		else{
			if($rowEdicion['archivada']=='t'){
				$resultActiva = pg_execute($dbconn,"cambiaestado",array($rowEdicion['iddirectorio']));
			}
		}
	}
	
	$idedicionPadre=$rowEdicion['iddirectorio'];
	
	$resultOld = pg_execute($dbconn,"obtenold",array($idedicionPadre));
	if (!($rowOld = pg_fetch_assoc($resultOld))) {
		if($vidcliente==1){
			$sold='Old';
		}
		else{
			$sold='V.ant';
		}
		$resultOld = pg_execute($dbconn,"insertadirectorio",array($sold,$vidcliente,$idedicionPadre,$vanyo,$idedicionPadre,'old'));
		$rowOld = pg_fetch_assoc($resultOld);
		$resultnewold = pg_execute($dbconn,"updateidold",array($idedicionPadre,$rowOld['iddirectorio']));
	}
	
	for($i=0; $i<count($vpublicaciones); $i++){
		$dirPadre=$idedicionPadre;
		$resultCamino = pg_execute($dbconn,"obtencaminodirectorio",array($vpublicaciones[$i]));
		if($rowCamino = pg_fetch_assoc($resultCamino)){
			if($rowCamino['camino']!=''){
				$caminos = explode(',',$rowCamino['camino']);
				for($icamino=0; $icamino<count($caminos); $icamino++){
					//error_log('CAMINO: '.$caminos[$icamino].'-'.$vanyo.'-'.$idedicionPadre);
					$resultEdicion = pg_execute($dbconn,"obtendirectorio",array($caminos[$icamino],$dirPadre,'pubvariante'));
					if (!($rowEdicion = pg_fetch_assoc($resultEdicion))){
						$resultEdicion = pg_execute($dbconn,"insertadirectorio",array($caminos[$icamino],$vidcliente,$dirPadre,$vanyo,$idedicionPadre,'pubvariante'));
						$rowEdicion = pg_fetch_assoc($resultEdicion);
					}
					$dirPadre=$rowEdicion['iddirectorio'];
					//error_log('dirPadre: '.$dirPadre);
				}
			}
		}
		$resultPublicacion = pg_execute($dbconn,"obtendirectorioidpublicacion",array($vpublicaciones[$i],$dirPadre,'publicacion'));
		if (!($rowPublicacion = pg_fetch_assoc($resultPublicacion))){
			if($vworkflow==1){
				$vetapa=99;
			}
			else{
				$vetapa=90;
			}
			$result = pg_execute($dbconn,"insertapublicacion",array($vpublicaciones[$i],$vidcliente,$dirPadre,$vanyo,$idedicionPadre,$rowOld['iddirectorio'],'publicacion',$vetapa));
			if (($row = pg_fetch_assoc($result))){
				if(count($vresponsables)>0){
					foreach($vresponsables as $responsable){
						$result = pg_execute($dbconn,"insertaresponsableedicion",array($row['iddirectorio'],$responsable));
					}
				}
			}
		}
	}
}

function ConsultaEdicionporCliente($vidcliente){
	$dbconn=conectardb();	
	$myArray = array();
	$query="SELECT idedicion,BTRIM(nombreedicion) AS nombreedicion,agrupacion,anyo,estadoedicion,BTRIM(nombrepublicacion) AS nombrepublicacion FROM edicion WHERE edicion_publicacion in (SELECT idpublicacion FROM publicacion WHERE publicacion_cliente=$1) ORDER BY anyo,estadoedicion,agrupacion,nombrepublicacion";
	$result = pg_prepare($dbconn,"edicionescliente",$query);
	$result = pg_execute($dbconn,"edicionescliente",array($vidcliente));

    while($row = pg_fetch_assoc($result)) {
	 $myArray[]= $row;
    }
EscribeJson($myArray);
}

function BorrarEdicion($vnombreedicion){
	$dbconn=conectardb();				   
$query="DELETE FROM edicion WHERE nombreedicion=$1";
	$result = pg_prepare($dbconn,"borraredicion",$query);
	$result = pg_execute($dbconn,"borraredicion",array($vnombreedicion));
}

function CambiaEstadoEdicion($vestadoedicion,$videdicion){
	$dbconn=conectardb();				   
	$query = "UPDATE edicion SET estadoedicion=$1 WHERE agrupacion in (SELECT agrupacion FROM edicion WHERE idedicion=$2)";
	$result = pg_prepare($dbconn,"cambiaestadoedicion",$query);
	$result = pg_execute($dbconn,"cambiaestadoedicion",array($vestadoedicion,$videdicion));
}

function ConsultaEdicionporAgrupacion($vagrupacion){
	$dbconn=conectardb();
	$myArray = array();
	$query="SELECT idedicion,BTRIM(nombreedicion) AS nombreedicion,anyo,estadoedicion FROM edicion WHERE agrupacion=$1";
	$result = pg_prepare($dbconn,"consultaedicionporagrupacion",$query);
	$result = pg_execute($dbconn,"consultaedicionporagrupacion",array($vagrupacion));
    while($row = pg_fetch_assoc($result)) {
	 $myArray[]= $row;
    }
EscribeJson($myArray);
}

function EscribeJson ($myArray){
	header("Content-Type: application/json"); 
	echo json_encode($myArray); 
}

?>