<?php


// Función para saber si el usuario ppuede ejecuta las acciones sobre el expediente
function ControlAccesoAlExpte(){
global $conn;

$VidClaveExpediente = $_SESSION['idClaveExpediente'] ; // $_SESSION['ClaveExpediente_idClaveExpediente'];
$VidUsuario=$_SESSION['idUsuario'];
$sql="SELECT
g.`ClaveExpediente_idClaveExpediente`,
sum(g.`AltaExpte`) AltaExpte,
sum(g.`EditaExpte`) EditaExpte,
sum(g.`VerExpte`) VerExpte
FROM ct_grupoacceso g join ct_grupousuario u on (g.`idGrupoAccesos` = u.`GrupoAcceso_idGrupoAccesos` )
where g.`ClaveExpediente_idClaveExpediente` = $VidClaveExpediente
and u.`usuario_idUsuario` = $VidUsuario
group by 1";
$resql=db_query($sql,$conn);
$fila=db_fetch_array($resql);
$VAltaExpte= $fila['AltaExpte'];
$VEditaExpte= $fila['EditaExpte'];
$VVerExpte= $fila['VerExpte'];
if ( $VAltaExpte <> 0 ) {
    $VAltaExpte = 1 ;
		}	
if ( $VEditaExpte <> 0 ) {
    $VEditaExpte = 1 ;
		}	
if ( $VVerExpte <> 0 ) {
    $VVerExpte = 1 ;
		}	
$_SESSION['PuedeDarAltaExpte']=$VAltaExpte; 
$_SESSION['PuedeDarEditaExpte']=$VEditaExpte; 
$_SESSION['PuedeDarVerExpte']=$VVerExpte; 
										
return(true);
}


// Función para controlar si el acceso a la opción de trámite o Utilidad está autorizado para la sesión.
function ControlAccesos(){
    global $pinfo; // Acceso a la opción que se está ejecutando
    $Vopcion = $pinfo[filename].'.php'; // es la url corta que se está ejecutando
		$VidExpediente=$_SESSION['idExpediente']; // Expediente con el que estamos trabajando
    $Vencontrado= false; // variable para revisar si la opción está en contexto
	
// control de si se ha cambiado el ID de Expedinte
$porciones = explode("editid1=", $pinfo[extension]);
$valores = explode("&", $porciones[1]);
if ($valores[0] == $VidExpediente) {

  // control de los trámites  
if (isset($_SESSION['CodigoTramites'])) {
	foreach ($_SESSION['CodigoTramites'] as $Vtramite) {
    if ($Vtramite['UrlTramite'] == $Vopcion) {
				$Vencontrado = true;
		}
	}
	// control de las utilidades
	foreach ($_SESSION['CodigoUtilidades'] as $Vutilidad) {
    if ($Vutilidad['UrlUtilidad'] == $Vopcion) {
				$Vencontrado = true;
		}
	}
}
}
return($Vencontrado);
}


   // Carga Lista de Utilidades del Usuario Conectado
function CargaListaUtilidad() {
	unset ($_SESSION['CodigoUtilidades']);
	$_SESSION['CodigoUtilidades']=array();
   //**********  Carga lista de utilidades que puede utilizar el usuario ********
	global $conn;
	$Vusuario=$_SESSION['UserID'];
	$VidExpediente=$_SESSION['idClaveExpediente'];
	$strSQLExists = "SELECT * FROM v_usuario_utilidad where Login='$Vusuario' and ClaveExpediente_idClaveExpediente =$VidExpediente";
	$rsExists = db_query($strSQLExists,$conn);
	while (true) {
		$data=db_fetch_array($rsExists);
      if($data)
      {
            $VTituloMenu=$data['TituloMenu'];
            $VClaveMenu=$data['ClaveMenu'];
            $VUrlUtilidad=$data['UrlUtilidad'];
						 $VidUtilidadesExpediente=$data['idUtilidadesExpediente'];
            $_SESSION['CodigoUtilidades'][]=array('TituloMenu'=>$VTituloMenu,'ClaveMenu'=>$VClaveMenu,'UrlUtilidad'=>$VUrlUtilidad,
                       'idUtilidadesExpediente'=>$VidUtilidadesExpediente);
      }
      else
      {
          break;
      }
   }
}

// Carga Lista de Trámites del Expediente y Usuario Conectado
function CargaListaTramites() {
   unset ($_SESSION['CodigoTramites']);
   $_SESSION['CodigoTramites']=array();
//    control de si el Expte tiene asignación de usuario y si es el conectado
   if ( $_SESSION['Asignado_idUsuario'] ==  Null || $_SESSION['Asignado_idUsuario'] == $_SESSION['idUsuario'] ){
				global $conn;

				$sql="SELECT v.* FROM v_estado_tramites v
					join ct_estadogrupo e  on v.idCataEstado=e.CataEstado_idCataEstado
					join ct_grupoacceso g  on e.GrupoAcceso_idGrupoAccesos = g.idGrupoAccesos
					join ct_grupousuario u on g.idGrupoAccesos=u.GrupoAcceso_idGrupoAccesos
					where v.ClaveExpediente_idClaveExpediente=".$_SESSION['idClaveExpediente'];
				$sql.=" and v.idCataEstado='".$_SESSION['idCataEstado']."' and u.usuario_idUsuario='".$_SESSION['idUsuario']."'";

				$rs=db_query($sql,$conn);
				while ($fila=db_fetch_array($rs) ){
					$_SESSION['CodigoTramites'][]=array('idTramite'=>$fila['idCataTramite'],'TituloMenu'=>$fila['TituloMenu'], 'ClaveMenu'=>$fila['ClaveMenu'],'ClaveTramitacion'=>$fila['ClaveTramitacion'], 'Descripcion'=>$fila['Descripcion'], 'UrlTramite'=>$fila['UrlTramite'] );
			}
	}
	// echo "<pre>";print_r($_SESSION['CodigoTramites']);echo "</pre>";
}

// Inserta registro en el LOG de  Trámites  realizados
function InsertLogTramites($values, $oldvalues){
	global $conn;
	$Observaciones = mysqli_real_escape_string($conn, $values['Observaciones']); // escapar
	$sql= "insert into wf_tramites ( expedientes_idExpedientes, CataTramite_idCataTramite, UtilidadesExpediente_idUtilidadesExpediente,
	 EstadoAntes, EstadoDespues, Observaciones, FechaAlta,FechaUltModificacion, UsuarioAlta,  UsuarioUltModificacion) values (";
	$sql.=$_SESSION['idExpediente'].",".$_SESSION['idTramite'].",null,".$oldvalues['CataEstado_idCataEstado'].",".$values['CataEstado_idCataEstado'].",'";
	$sql.=$Observaciones."','".now()."','".now()."','".$_SESSION['UserID']."','".$_SESSION['UserID']."')";

	db_exec($sql,$conn);
}

// Inserta registro en el LOG de  Utilidades  realizados
function InsertLogUtilidades($values, $oldvalues){
	global $conn;
	$Observaciones = mysqli_real_escape_string($conn, $values['Observaciones']); // escapar
	$sql= "insert into wf_tramites ( expedientes_idExpedientes, CataTramite_idCataTramite, UtilidadesExpediente_idUtilidadesExpediente,
	 EstadoAntes, EstadoDespues, Observaciones, FechaAlta,FechaUltModificacion, UsuarioAlta,  UsuarioUltModificacion) values (";
// si no se está actualizando la tabla de Expedientes
if (isset($oldvalues['CataEstado_idCataEstado'])) {
		$sql.=$_SESSION['idExpediente'].",null,".$_SESSION['idUtilidad'].",".$oldvalues['CataEstado_idCataEstado'].",".$values['CataEstado_idCataEstado'].",'";
	} else {
		$sql.=$_SESSION['idExpediente'].",null,".$_SESSION['idUtilidad'].",null,null,'";
	}
	$sql.=$Observaciones."','".now()."','".now()."','".$_SESSION['UserID']."','".$_SESSION['UserID']."')";

	db_exec($sql,$conn);
}

// Calcula los estados siguientes de un trámite - para la tramitación, lista de posibles valores
function EstadosSiguientes($CodigoTramite){
	global $conn;
	$sql="select CataEstado_idCataEstado from ct_tra_est t, ct_tramite c
		 where t.CataTramite_idCataTramite=c.idCataTramite
			and c.ClaveTramitacion='".$CodigoTramite."'";
	$rsSql=db_query($sql,$conn);
	while ($fila = db_fetch_array($rsSql)){
		$data[]=$fila['CataEstado_idCataEstado'];
	}
	return implode(",", $data);
}


// Función para dar número de Expediente
function DarNumeroExpediente(){
global $conn;
$VidClaveExpediente = $_SESSION['idClaveExpediente'];
$Vano= date(Y); // año con 4 cifras de la fecha actual	
$sql="SELECT idNumeracionExpte,ClaveExpediente_idClaveExpediente, PrefijoCodigo, AnoCodigo, NumeroSiguiente
FROM ct_numeracionexpte
where ClaveExpediente_idClaveExpediente = $VidClaveExpediente and AnoCodigo= $Vano";
$resql=db_query($sql,$conn);
$fila=db_fetch_array($resql);
$VPrefijoCodigo= $fila['PrefijoCodigo'];
$VNumeroSiguiente= $fila['NumeroSiguiente'];
$VidNumeracionExpte = $fila['idNumeracionExpte'];
// Actualización del contador en la Tabla
$sql="update  ct_numeracionexpte
set NumeroSiguiente = NumeroSiguiente+1
where idNumeracionExpte = $VidNumeracionExpte ";
db_exec($sql,$conn);
// $VNumeroSiguiente=sprintf("%'.6d", $VNumeroSiguiente);
$VNumeroSiguiente=str_pad($VNumeroSiguiente, 6, "0", STR_PAD_LEFT);
return("$VPrefijoCodigo/$VNumeroSiguiente/$Vano");
}

// Función para dar número de Documento
function DarNumeroDocumento(){
global $conn;
$VidClaveExpediente = $_SESSION['idClaveExpediente'];
$Vano= date(Y); // año con 4 cifras de la fecha actual	
$sql="SELECT idNumeracionDocumento,PrefijoCodigo,AnoCodigo,NumeroSiguiente
FROM ct_numeraciondocumento
where AnoCodigo = $Vano";
$resql=db_query($sql,$conn);
$fila=db_fetch_array($resql);
$VPrefijoCodigo= $fila['PrefijoCodigo'];
$VNumeroSiguiente= $fila['NumeroSiguiente'];
$VidNumeracionDocumento = $fila['idNumeracionDocumento'];
// Actualización del contador en la Tabla
$sql="UPDATE ct_numeraciondocumento
set NumeroSiguiente = NumeroSiguiente+1
where idNumeracionDocumento = $VidNumeracionDocumento ";
db_exec($sql,$conn);
// $VNumeroSiguiente=sprintf("%'.6d", $VNumeroSiguiente);
$VNumeroSiguiente=str_pad($VNumeroSiguiente, 6, "0", STR_PAD_LEFT);
return("$VPrefijoCodigo/$VNumeroSiguiente/$Vano");
}

?>