HEX
Server: Apache
System: Linux iad1-shared-e1-19 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User: austral3d (14892361)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /home/austral3d/fourdplan.com/webservices4.9dev/ActualizarInstancias.php
 <?php
	
require_once("comun/conexion_mysqli.php");
require_once("fdp/FdpNode.php");

$db = fdp_connect();

$objInstancia = new Instancia();

if(!isset($_POST['xml']) || !$_POST['xml']) {
	echo "XML no definido";
}
else {
	$xml_string = $_POST['xml']; 
	$xml = new SimpleXMLElement($xml_string);

	if($xml->getName() == "plan")
	{
		$result = [];
		$fe_result = [];
		if(isset($xml->workpackage)) {
			$wpId = processWP($xml->workpackage);
			if($wpId != 0) {
				$result["id_workpackage"] = $wpId;
			}
		}
		
		foreach ($xml as $name => $value) {
			if($name != "instancias" && $name != "workpackage" && $name != "id_estado") {
				$result[$name] = $value; 
			}
		}

		$fechaEstado = new FechaEstado();

		foreach ($xml->instancias->id as $id) {
			$objInstancia->update($db, $id, $result);
			if(isset($xml->id_estado)) {
				$fe_result["id_instancia"] = $id;
				$fe_result["id_estado"] = $xml->id_estado;
				$fe_result["fecha"] = $xml->montaje_inicio_programado;

				$sql_fechas = "
					SELECT id
					FROM fecha_estado
					WHERE id_instancia = ".$fe_result['id_instancia']."
					AND id_estado = ".$fe_result['id_estado'];
				$fechas = fdp_query_all($db, $sql_fechas);

				if(!$fechas || sizeof($fechas) == 0)
				{
					$fechaEstado->insert($db, $fe_result);
				}
				else
				{
					$fechaEstado->update($db, $fechas[0]["id"], $fe_result);
					$sql_delete_fechas = "
						DELETE FROM fecha_estado
						WHERE id_instancia = ".$result["id_instancia"]."
						AND fecha > '".$result["fecha"]."'";;
					fdp_query($db, $sql_delete_fechas);
				}
			}
		}
	}
	else if($xml->getName() == "real")
	{
		$fechaEstado = new FechaEstado();
		foreach ($xml->instancias->id as $id) {
			$result["id_instancia"] = $id;
			$result["id_estado"] = $xml->id_estado;
			$result["fecha"] = $xml->montaje_inicio_programado;
			$sql_fechas = "
				SELECT id
				FROM fecha_estado
				WHERE id_instancia = ".$result["id_instancia"]."
				AND id_estado = ".$result["id_estado"];
			$fechas = fdp_query_all($db, $sql_fechas);
			if(!$fechas || sizeof($fechas) == 0)
			{
				$fechaEstado->insert($db, $result);
			}
			else
			{
				$fechaEstado->update($db, $fechas[0]["id"], $result);
				$sql_delete_fechas = "
					DELETE FROM fecha_estado
					WHERE id_instancia = ".$result["id_instancia"]."
					AND fecha > '".$result["fecha"]."'";
				fdp_query($db, $sql_delete_fechas);
			}
		}
	}
	else
	{
		echo ("Error");
	}

	echo ("ok");
}


function processWP($wp)
{
	global $db;
	$sql_id_workpackage = "
		SELECT id
		FROM workpackage
		WHERE nombre = '$wp->nombre'
		AND id_assembly = $wp->id_assembly";
	$wps = fdp_query_all($db, $sql_id_workpackage);
	
	if ($wp->nombre == "")
		return 0;
	
	else if (!$wps || sizeof($wps) == 0)
	{
		$sql_insert_wp = "
			INSERT INTO workpackage(nombre, id_assembly)
			VALUES ('$wp->nombre', $wp->id_assembly)";
		$res = fdp_query($db, $sql_insert_wp);
		return mysqli_insert_id($db);
	}
	else {
		return $wp->id;
	}
}
?>