<?php
include_once('../../../php/sessionStart.php');
include_once('../../../php/db/dbExec.php');
include_once('../../../php/functions.php');
include_once('../../../php/timezone.php');
include_once('../../../php/privileges.php');

$bitForm = "usu1020";
$bitMod = "usu";
$empCod = $_SESSION['empCod'];
$usuCod = utf8_decode($_SESSION['usuCod']);
$usuNom = utf8_decode($_SESSION['usuNom']);

switch ($_POST['action']) {
	case 'consultar':
		echo consultar();
		break;

	case 'guardar':
		echo guardar();
		break;

	case 'borrar':
		echo borrar();
		break;
}

function consultar() {
	global $empCod;

	$priv = new privileges();
	if (!$priv->consult($_SESSION['usuPriv'])) {
		return json_encode($priv->rErrorConsult());
	}

	$func = new functions();

	$txtCod=$_POST['txtCod'];

	# QUERYS
	$sUsuarios = "SELECT * FROM usuarios WHERE usu_cod=BINARY '$txtCod'";
	$sModulos = "SELECT modCod, modCampo FROM modulos";
	
	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp = $db->sEx($sUsuarios, "usuarios");
	$resp["modulos"] = $db->sFetchAll($sModulos);
	$db->close();

	$func = new functions();
	return $func->jsonEncodeArray($resp, "usuarios");
}

function guardar() {
	global $empCod, $usuNom, $bitMod, $bitForm;

	$priv = new privileges();
	if (!$priv->modify($_SESSION['usuPriv'])) {
		return json_encode($priv->rErrorModify());
	}

	$func = new functions();

	$txtCod=$_POST['txtCod'];
	$txtNom=utf8_decode($_POST['txtNom']);
	$txtPue=utf8_decode($_POST['txtPue']);
	$cbCambiarClave=$_POST['cbCambiarClave'];
	$txtClaveActual=utf8_decode($_POST['txtClaveActual']);
	$txtClaveNueva=utf8_decode($_POST['txtClaveNueva']);
	$cbPriv=$_POST['cbPriv'];
	$jsonMod=json_decode($_POST['jsonMod']);

	# QUERYS PARA UN REGISTRO
	$sUsuarios = "SELECT * FROM usuarios WHERE usu_cod='$txtCod'";

	$iUsuarios1 = "INSERT INTO usuarios(usu_cod, usu_nom, usu_pue, usu_clave, usu_priv";
	$iUsuarios2 = "VALUES ('$txtCod','$txtNom','$txtPue','$txtClaveNueva',$cbPriv";

	$uUsuarios1 = "UPDATE usuarios SET usu_nom='$txtNom',usu_pue='$txtPue'".(($func->stringToBool($cbCambiarClave)) ? ",usu_clave='$txtClaveNueva'" : "").",usu_priv=$cbPriv";
	$uUsuarios2 = "WHERE usu_cod='$txtCod'";

	foreach ($jsonMod as $obj) {
		$iUsuarios1 .= ",$obj->modCampo";
		$iUsuarios2 .= ",".$_POST[$obj->modCod];
		$uUsuarios1 .= ",$obj->modCampo=".$_POST[$obj->modCod];
	}
	$iUsuarios = $iUsuarios1.") ".$iUsuarios2.")";
	$uUsuarios = $uUsuarios1." ".$uUsuarios2;

	# EJECUCION DE QUERYS 
	$db = new dbExec();
	if ($func->stringToBool($cbCambiarClave)) {
		if ($txtClaveActual != $db->sFetchAssoc($sUsuarios)["usu_clave"]) {
			$resp = $db->rErrorPublic(('en Contraseña Actual'), ('La Contraseña Actual no coincide con la Contraseña de este Usuario, verifique por favor'));
			return json_encode($resp);
		}
	}

	if ($func->stringToBool($_POST['nuevo'])) {
		$resp = $db->iEx($iUsuarios);
		$db->iEx($func->iBitacora(utf8_decode("Se creó usuario, Código: $txtCod Usuario: ").$usuNom, $bitMod, $bitForm));
	} else {
		$resp = $db->uEx($uUsuarios);
		$db->iEx($func->iBitacora(utf8_decode("Se modificó usuario, Código: $txtCod Usuario: ").$usuNom, $bitMod, $bitForm));
	}

	$db->close();
	#echo $iUsuarios;
	#echo $uUsuarios;
	return json_encode($resp);
}

function borrar() {
	global $empCod, $usuNom, $bitMod, $bitForm;

	$func = new functions();

	$txtCod=$_POST['txtCod'];

	# QUERYS
	$dUsuarios = "DELETE FROM usuarios WHERE usu_cod='$txtCod'";

	# EJECUCION DE QUERYS 
	$db = new dbExec();
	$resp = $db->dEx($dUsuarios);
	$db->iEx($func->iBitacora(utf8_decode("Se borró usuario, Código: $txtCod Usuario: ").$usuNom, $bitMod, $bitForm));
	$db->close();

	return json_encode($resp);
}
?>