<?php 
session_start();
$usuarioSession = $_SESSION['USUARIO'];
$grupo = $_SESSION['GRUPO'];
$contacto = $_SESSION['CONTACTO'];
$awa_session_id = $_SESSION['AWA_SESION_ID'];
include('../lg/config_vo.php');
include('../includes/conex.php');
include('../includes/eat.php');
include('../includes/historial.php');
include('../includes/functions.php');
include('../includes/esquemas.php');
include('../class/Schema.php');

$cookieUser = filter_input(INPUT_COOKIE, 'usuario') ?? null; 
$cookieIdioma = filter_input(INPUT_COOKIE, 'idioma') ?? null; 
if((!isset($usuarioSession) or $awa_session_id != $awa_id) or (isset($cookieUser) AND $cookieUser != $staticUsu )){
    eatCookies();
    header('Location:../index.php');}
empty($cookieIdioma)?
    include('../lg/LG_' . $cookieIdioma . '.php'):
    include('../lg/LG_SP.php');

$Schema = new Schema($con);
$permisos       = filter_input(INPUT_POST, 'permisos') ?? null; // stock (antes 0 ) o acciones (antes 1)
$codperfil      = (int)filter_input(INPUT_POST, 'codperfil') ?? null; // antes se usaba $codigo_usuario que venia del post 'usuario'
$update         = (int)filter_input(INPUT_POST, 'update') ?? null; //Update se usa valor 1  downgrade usamos valor 0

try{
    if($permisos === "stock") {

        $value = (int)filter_input(INPUT_POST, 'value') ?? null; //Codigo del stock
        $tipo  = (int)filter_input(INPUT_POST, 'tipo')  ?? null; //Tipo de permiso: 1 Lectura, 2 Escritura. Guarda ambos si necesario
        $rowACC = $Schema->executeQuery('SELECT ACCESO FROM VEHICULOS_STOCKS WHERE CODIGO = ?', 'i', [$value])->fetch_array();
        if($update === 1) {
            if(!strpos($rowACC['ACCESO'], $codperfil . '$' . $tipo)){
                $acceso = empty($rowACC['ACCESO']) ? '#' . $codperfil . "$" . $tipo : $rowACC['ACCESO'] . '#' . $codperfil . "$" . $tipo ;
            } 
        } else {//Por si se pulsan varias veces y se deja finalmente demarcado
            $acceso = str_replace('#' . $codperfil . "$" . $tipo, '', $rowACC['ACCESO']);
        }
        $Schema->executeQuery('UPDATE VEHICULOS_STOCKS SET ACCESO = ? WHERE CODIGO = ?', 'si', [ $acceso, $value]);
    
    } else if($permisos === "acciones") {
        /**PERMISOS MULTIPLES CON MAIN*/
        $main = (int)filter_input(INPUT_POST, 'padre') ?? 0;
        $deletequery    = "DELETE FROM VEHICULOS_PERMISOS WHERE ACCION = ? AND CODIGO = ?";
        $insertquery    = "INSERT INTO VEHICULOS_PERMISOS ( ACCION, CODIGO ) VALUES ( ? , ? )";
        $selectquery    = "SELECT CODIGO FROM VEHICULOS_LITERALES WHERE TIPO = 'TIP_PER' AND PADRE = ?";
        if($update) {
            $res = $Schema->executeQuery($selectquery, 'i', [ $main]);
            while($row = $res->fetch_array()) {
                $Schema->executeQuery( $insertquery, 'ii', [$row['CODIGO'], $codperfil]);
            }
            $Schema->executeQuery( $insertquery, 'ii', [$main, $codperfil]);
        } else {
            $res = $Schema->executeQuery($selectquery, 'i', [ $main]);
            while($row = $res->fetch_array()) {
                $Schema->executeQuery( $deletequery, 'ii', [$row['CODIGO'], $codperfil]);
            }
            $Schema->executeQuery( $deletequery, 'ii', [$main, $codperfil]);
        }
        
    } else { 
        /**PERMISOS SECUNDARIOS*/
        $second = (int)filter_input(INPUT_POST, 'tipo') ?? null;
        if(!empty($update)) {
            $Schema->executeQuery( $insertquery, 'ii', [$second, $codperfil]);
        } else {
            $Schema->executeQuery( $deletequery, 'ii', [$second, $codperfil]);
        }

    }
} catch (Exception $ex) {
    echo $ex->getMessage();
    echo "fallo producido en linea(ex): ".$ex->getMessage();
} catch (Throwable $twb) {
    echo $twb->getMessage();
    echo "Fallo producido en linea(twb): ".$twb->getMessage();
} finally {
    $con->close();
}
