<?php

//$file = fopen("log.txt", "w");   /// BORRAR LOG
//fwrite($file, "Error $error". PHP_EOL);
//fclose($file);

$ras = $_GET['ras'];
$warehouse = $_GET['warehouse'];
$bulto = $_GET['bulto'];
$proceso = $_GET['proceso'];

$transportista = '';
if ($proceso == 'ALTA') {
    $transportista = $_GET['transportista'];
}

$config = require ('config.php');

$conexion=$config['conexion'];

$conn = pg_connect($conexion);



$resultado['status'] = 'OK';
$resultado['destino'] = '';
$resultado['ultimo_color'] = '';
$resultado['error'] = '';

pg_query($conn,'BEGIN');

if ($proceso == 'CONSULTA') {

    $sql="select zona from zonas where ras = $1 AND ZONA = (select position from dhl_link_id where warehouse_id = $2 and inventory_id = $3 limit 1)";
    $bind = array($ras, $warehouse, $bulto);
    $result = pg_query_params($conn, $sql, $bind);
	while ($row = pg_fetch_array($result, NULL, PGSQL_ASSOC)) {
        $destino = $row['zona'];
        $resultado['destino'] = $destino;
    }
    if ($resultado['destino'] == '') {
        $resultado['status'] = 'NO EXISTE EL ID';
    } else {
        $sql = "SELECT 1 FROM peticiones WHERE ras = $1 AND pic = $2 AND errores IS NULL";
        $bind = array($ras, $bulto);
        $result = pg_query_params($conn, $sql, $bind) or die('La consulta falló: ' . pg_last_error());
        $row = pg_num_rows($result);
        if ($row > 0) {
            $resultado['error'] = "Ya se está procesando una petición del mismo bulto";
        } else {
            $sql = "SELECT 1 FROM peticiones WHERE ras = $1 AND pic = $2 AND errores IS NOT NULL";
            $bind = array($ras, $bulto);
            $result = pg_query_params($conn, $sql, $bind) or die('La consulta falló: ' . pg_last_error());
            $row = pg_num_rows($result);
            if ($row > 0) {
                $sql = "UPDATE peticiones SET errores = null, zona = $1, momento_inicio = CURRENT_TIMESTAMP WHERE ras = $2 and pic = $3";
                $bind = array($resultado['destino'], $ras, $bulto);
                $result = pg_query_params($conn, $sql, $bind);
                $row = pg_affected_rows($result);
                if ($row < 1) {
                    $resultado['error'] = "Error al crear petición";
                }
            } else {
                $sql = "INSERT INTO peticiones (ras,pic,zona,momento_inicio) VALUES ($1, $2, $3, CURRENT_TIMESTAMP)";
                $bind = array($ras, $bulto, $resultado['destino']);
                $result = pg_query_params($conn, $sql, $bind);
                $row = pg_affected_rows($result);
                if ($row < 1) {
                    $resultado['error'] = "Error al crear petición";
                }
            }
            if ($resultado['error'] == '') {
                $ult_color = '';
                $sql = "SELECT ult_color FROM parametrizacion WHERE rampa = $1 LIMIT 1";
                $bind = array($ras);
                $result = pg_query_params($conn, $sql, $bind) or die('La consulta falló: ' . pg_last_error());
                if ($row = pg_fetch_array($result, NULL, PGSQL_ASSOC)) {
                    $ult_color = $row['ult_color'];
                }
                $resultado['ultimo_color'] = $ult_color;
            }
        }
    }

}

if ($proceso == 'ALTA') {

    $sql = "SELECT 1 FROM dhl_link_id WHERE inventory_id = $1 AND warehouse_id = $2";
    $bind = array($bulto,$warehouse);
    $result = pg_query_params($conn, $sql, $bind) or die('La consulta falló: ' . pg_last_error());
    $row = pg_num_rows($result);
    if ($row > 0) {
        $resultado['error'] = "El id ya existe en la tabla";
    } else {
        $sql = "INSERT INTO dhl_link_id (warehouse_id,inventory_id,carrier,wave_name,position) VALUES ($1, $2, $3, 'MANUAL', 'MANUAL')";
        $bind = array($warehouse, $bulto, $transportista);
        $result = pg_query_params($conn, $sql, $bind);
        $row = pg_affected_rows($result);
        if ($row < 1) {
            $resultado['error'] = "Error al insertar datos";
        }
    }


    
}

if ($resultado['error'] == '') {
    pg_query($conn, 'COMMIT');
} else {
    $resultado['status'] = 'ERROR';
    pg_query($conn, 'ROLLBACK');
}

pg_close($conn);
echo json_encode($resultado);

?>