<?php
  include("conn.php");
  
  if (!isset($_POST['xConsulta'])) {
    $jsondata['success'] = true;
    $jsondata['message'] = 'Información de entrada mal definida.';
    header('Content-type: application/json; charset=utf-8');
    echo json_encode($jsondata);
    die();
  }

  $xPantalla   = $_POST['xPantalla']; //ventas, caja, compras
  $xConsulta   = $_POST['xConsulta']; //consulta ejecutada 
  $xFavorito   = $_POST['xFavorito']; //favorito -1 nuevo, otro modificar
  $xNombre     = $_POST['xNombre'];
  $xDetalle    = $_POST['xDetalle'];
  $xAutomatico = $_POST['xAutomatico'];
  //$xPublico    = $_POST['xPublico'];
  $xPublico    = $_POST['xPublico'];
  $xUsuarios   = $_POST['xUsuarios'];

  $DBSegu->startTrans();

  //Si la consulta es -1 tengo que crear una nueva y por tanto obtener proximo id, caso contrario, elimino detalle
  if ($xFavorito == '-1') {
    $sql = 'select ISNULL(MAX(ID_ATAJO), 0) + 1 AS PROXIMO 
            from ATJ_ATAJOS A ';
    $RsIns = $DBSegu->Execute($sql);
    //if (!$RsIns) {
    if ($DBSegu->hasFailedTrans()) {
      $DBSegu->completeTrans();
      $jsondata['success'] = false;
      $jsondata['message'] = 'Ha ocurrido un error durante la consulta. Ref. #V01.01';
      header('Content-type: application/json; charset=utf-8');
      echo json_encode($jsondata);
      die();  
    }

    $xProximo = $RsIns->fields['PROXIMO'];

    $sql = 'insert into ATJ_ATAJOS (ID_ATAJO, DESC_ATAJO, ID_GRUPO_CONSULTA, AUTOMATICO, CONSULTA, ID_USUARIO, PUBLICO) 
            values (?, ?, ?, ?, ?, ?, ?) ';

    $RsIns = $DBSegu->Execute($sql, array($xProximo, $xNombre, $xPantalla, $xAutomatico, $xConsulta, $_SESSION['CurrentIdUser'], $xPublico));
    //if (!$RsIns) {
    if ($DBSegu->hasFailedTrans()) {
      $DBSegu->completeTrans();
      $jsondata['success'] = false;
      $jsondata['message'] = 'Ha ocurrido un error durante la consulta. Ref. #V01.02';
      header('Content-type: application/json; charset=utf-8');
      echo json_encode($jsondata);
      die();  
    }
  }
  else {
    $sql = 'update ATJ_ATAJOS set CONSULTA = ?, AUTOMATICO = ?, DESC_ATAJO = ?, PUBLICO = ? where ID_ATAJO = ? ';
    $RsIns = $DBSegu->Execute($sql, array($xConsulta, $xAutomatico, $xNombre, $xPublico, $xFavorito));
    //if (!$RsIns) {
    if ($DBSegu->hasFailedTrans()) {
      $DBSegu->completeTrans();
      $jsondata['success'] = false;
      $jsondata['message'] = 'Ha ocurrido un error durante la consulta. Ref. #V01.03';
      header('Content-type: application/json; charset=utf-8');
      echo json_encode($jsondata);
      die();  
    }

  	$xProximo = $xFavorito;
    $sql = 'delete from ATJ_ATAJOS_DETALLE where ID_ATAJO = ? ';
    $RsIns = $DBSegu->Execute($sql, array($xFavorito));
    //if (!$RsIns) {
    if ($DBSegu->hasFailedTrans()) {
      $DBSegu->completeTrans();
      $jsondata['success'] = false;
      $jsondata['message'] = 'Ha ocurrido un error durante la consulta. Ref. #V01.04';
      header('Content-type: application/json; charset=utf-8');
      echo json_encode($jsondata);
      die();  
    }
  }

  //terminada la cabecera procedo el detalle
  if ($xDetalle != '') {
    $xDataDetalle = json_decode($xDetalle);
    foreach ($xDataDetalle as $value) {
      $sql = 'select ISNULL(MAX(ID_ITEM), 0) + 1 AS PROXIMO 
              from ATJ_ATAJOS_DETALLE A
              WHERE A.ID_ATAJO = ? ';
      $RsIns = $DBSegu->Execute($sql, array($xProximo));
      //if (!$RsIns) {
      if ($DBSegu->hasFailedTrans()) {
        $DBSegu->completeTrans();
        $jsondata['success'] = false;
        $jsondata['message'] = 'Ha ocurrido un error durante la consulta. Ref. #V01.05';
        header('Content-type: application/json; charset=utf-8');
        echo json_encode($jsondata);
        die();  
      }

      $xNext = $RsIns->fields['PROXIMO'];


      $sql = 'insert into ATJ_ATAJOS_DETALLE (ID_ATAJO, ID_ITEM, ID_INFO_ATAJO, VALOR1)
              values (?, ?, ?, ?) ';
          
      $RsIns = $DBSegu->Execute($sql, array($xProximo, $xNext, $value->id, $value->valor));
      //if (!$RsIns) {
      if ($DBSegu->hasFailedTrans()) {
        $DBSegu->completeTrans();
        $jsondata['success'] = false;
        $jsondata['message'] = 'Ha ocurrido un error durante la consulta. Ref. #V01.06';
        header('Content-type: application/json; charset=utf-8');
        echo json_encode($jsondata);
        die();  
      }
    }
  }

  $sql = 'delete ATJ_ATAJOS_USUARIOS
          where ID_ATAJO = ? ';
  $RsIns = $DBSegu->Execute($sql, array($xProximo));
  if ($DBSegu->hasFailedTrans()) {
    $DBSegu->completeTrans();
    $jsondata['success'] = false;
    $jsondata['message'] = 'Ha ocurrido un error al modificar el atajo. Ref. #V01.07';
    header('Content-type: application/json; charset=utf-8');
    echo json_encode($jsondata);
    die();  
  }

  if ($xUsuarios != '') {
    $vUsuarios = explode(',' , $xUsuarios);
    foreach ($vUsuarios as $value) {
      $sql = 'INSERT ATJ_ATAJOS_USUARIOS (ID_ATAJO, ID_USUARIO)
              VALUES (?, ?)';
      $RsIns = $DBSegu->Execute($sql, array($xProximo, $value));
      if ($DBSegu->hasFailedTrans()) {
        $DBSegu->completeTrans();
        $jsondata['success'] = false;
        $jsondata['message'] = 'Ha ocurrido un error al modificar el atajo. Ref. #V01.08';
        header('Content-type: application/json; charset=utf-8');
        echo json_encode($jsondata);
        die();  
      }
    }
  }

  $DBSegu->completeTrans();

  $jsondata['success'] = true;
  $jsondata['message'] = 'Atajo guardado.';
  header('Content-type: application/json; charset=utf-8');
  echo json_encode($jsondata);
?>