<?PHP
/*
 * DIREITOS AUTORAIS RESERVADOS (C) 2007 UFRJ
 * 
 * ESTE PROGRAMA É SOFTWARE LIVRE; VOCÊ PODE REDISTRIBUÍ-LO E/OU MODIFICÁ-LO SOB OS
 * TERMOS DA LICENÇA PÚBLICA GERAL GNU CONFORME PUBLICADA PELA FREE SOFTWARE FOUNDATION;
 * TANTO A VERSÃO 2 DA LICENÇA, COMO (A SEU CRITÉRIO) QUALQUER VERSÃO POSTERIOR.

 * ESTE PROGRAMA É DISTRIBUÍDO NA EXPECTATIVA DE QUE SEJA ÚTIL, PORÉM, SEM NENHUMA GARANTIA;
 * NEM MESMO A GARANTIA IMPLÍCITA DE COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
 * CONSULTE A LICENÇA PÚBLICA GERAL DO GNU PARA MAIS DETALHES.
 * 
 * VOCÊ DEVE TER RECEBIDO UMA CÓPIA DA LICENÇA PÚBLICA GERAL DO GNU JUNTO COM ESTE PROGRAMA; 
 * SE NÃO, ACESSE <<HTTP://WWW.GNU.ORG/LICENSES/LICENSES.PT-BR.HTML>>
 */

<?
	require_once '../common/begin.php';
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>CADASTRO DE USUÁRIOS DA SAÚDE</title>

	<style type="text/css" rel='stylesheet'>
		@import "http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css";
		@import "common/style.css";
	</style>

	<script type='text/javascript' src='http://www.google.com/jsapi'></script>

	<script type='text/javascript'>
		google.load('jquery','1.3');
		google.load('jqueryui','1.7');
	</script>

	<script type="text/javascript" src="js/jquery.form.js"> </script>
	<script type="text/javascript" src="js/jquery.validate.pack.js"> </script>
	<script type="text/javascript" src="js/jquery.datatables.js"> </script>
	<script type="text/javascript" src="common/util.js"> </script>
</head>

<body>
<script type='text/javascript'>
	var listagem;

	function add_user(iduser, username, tipo, unidade)/*{{{*/
	{
		listagem.fnAddData([username, tipo, unidade, iduser]);
		mostra_sucesso('Usuário adicionado com sucesso');
	}/*}}}*/
	function rem_user(row)/*{{{*/
	{
		var pos = listagem.fnGetPosition(row),
			iduser = $(row).data('iduser');

		$.get('do_rem_user.php', { id: iduser }, function(xml, status)
			{
				if(status != 'success')
				{
					alert('Erro interno ao remover usuário');
					return;
				}

				var rescode = $('result',xml).attr('code');

				if(rescode == 'error')
					mostra_erro($('message',xml).text());
				else
				{
					listagem.fnDeleteRow(pos);
					mostra_sucesso('Usuário removido com sucesso');
				}
			}, 'xml');
	}/*}}}*/
	function on_submit_success(xml)/*{{{*/
	{
		var rescode = $('result',xml).attr('code');

		switch(rescode)
		{
		case 'ok':
			add_user($('usuario',xml).attr('id'),
					 $('tipo',xml).text(), 
					 $('username',xml).text(), 
				     $('unidade',xml).text());
			break;

		case 'error':
			mostra_erro($('message', xml).text());
			break;

		default:
			mostra_erro(xml);
			break;
		}
	}/*}}}*/
	function on_submit_error(req, status, e)/*{{{*/
	{
		mostra_erro(erro_ajax(status, e));
		alert(req.responseText);
	}/*}}}*/
	function on_submit()/*{{{*/
	{
		$('#user_form').ajaxSubmit({ 
			target: '#message',
			dataType: 'xml',
			clearForm: true,
			error: on_submit_error,
			success: on_submit_success
		});
		return true;
	}/*}}}*/

	google.setOnLoadCallback(function(){
		$('#message').hide();

		listagem = $('#usuarios').dataTable({/*{{{*/
			bJQueryUI: true,
			sPaginationType: "two_button",
			bProcessing: true,
			bServerSide: true,
//			bStateSave: true,
			sAjaxSource: "do_list_users.php",
			bAutoWidth: false,
			oLanguage: { sUrl: "lang/datatables_ptbr.json" },
			fnRowCallback: function(row, data){
				$('.remuser',row)
					.hover(
						function(){
							$(this).addClass('ui-state-hover');
						}, 
						function(){
							$(this).removeClass('ui-state-hover');
						})
					.click(
						function(){
							rem_user(row);
						});
				$('td:last-child',row).css('text-align','center');

				return row;
			},
			aoColumns: 
			[ 
				{
					sName: "username"
				},
				{
					sName: "tipo"
				},
				{
					sName: "unidade"
				},
				{
					fnRender: function(o){
						$(listagem.fnGetNodes(o.iDataRow))
							.data('iduser',o.aData[o.iDataColumn]);
						return '<span class="remuser ui-state-default ui-icon ui-icon-closethick"></span>';
					},
					bUseRendered: true,
					bSortable: false,
					sName: "iduser",
					sClass: 'center'
				}
			],
			fnServerData: function(src, params, callback) {
				$.ajax({
					dataType: 'json',
					type: 'get',
					url: src,
					data: params,
					error: on_submit_error,
					success: function(json){
						if(json.error)
							mostra_erro(json.error);
						else
							mostra_sucesso('');

						callback(json);
					}
				});
			}
		});/*}}}*/

		$('#idunidade')
			.enabled_by('#idtipo',function(value) { return value != <?echo TipoUsuario::ADMINISTRADOR?>; });

		$('#user_form').validate({/*{{{*/
			onsubmit: true,
			focusInvalid: true,
			errorClass: 'campo_erro',
			submitHandler: on_submit,
			messages:
			{
				conf_senha:
				{
					equalTo: 'A senha e sua confirmação não batem'
				}
			},
			rules:
			{
				username: 'required',
				senha: 'required',
				idunidade: 'required',
				idtipo: 'required',
				conf_senha: 
				{
					equalTo: '#senha'
				}
			}
		});/*}}}*/

		$.validator.messages['required'] = 'Campo obrigatório';
	});
</script>

<? 

function mostra_menu()
{
?>
	<div id=menu>
		<a href='gerencia.php'>gerenciar usuários</a>
		<a href='admin_config.php'>alterar senha de administrador</a>
		<a href='../index.php'>sair</a>
	</div>
<?
}

include '../common/header.php';

echo "<h1>Sistema de Administração</h1>\n";

garante_permissao(TipoUsuario::ADMINISTRADOR);

try
{

?>
	<div class='dialog'>
		<h1>Cadastramento de Usuários</h1>
		<div align=center id=message_box> 
			<span id=message></span> 
			&nbsp;
		</div>

		<form id='user_form' action='do_add_user.php' method='POST'>
			<table align=center>
				<tr>
					<td><label for=username>usuário:</label></td> 
					<td><input type=text id=username name=username></td>
				</tr>
				<tr>
					<td><label for=senha>senha:</label></td> 
					<td><input type=password id=senha name=senha></td>
				</tr>
				<tr>
					<td><label for=conf_senha>confirmação:</label></td> 
					<td><input type=password id=conf_senha name=conf_senha></td>
				</tr>
				<tr>
					<td><label for=idtipo>permissão:</label></td>
					<td>
						<select id=idtipo name=idtipo>
<?
						$tipos = Doctrine_Query::create()
							->from('TipoUsuario t')
							->orderBy('t.nome')
							->execute();
						foreach($tipos as $t)
						{
							echo "<option value=$t->id";
							if($t->id == TipoUsuario::OPERADOR)
								echo " selected";
							echo ">$t->nome</option>\n";
						}
?>
						</select>
					</td>
				</tr>
				<tr>
					<td><label for=idunidade>unidade:</label></td> 
					<td>
						<select id=idunidade name=idunidade>
							<option></option>
<?
							$unidades = Doctrine_Query::create()
								->from('Unidade u')
								->where('idtipo = ?',TipoUnidade::SAUDE)
								->execute();
							foreach($unidades as $u)
							{
								echo "<option value=$u->id>$u->nome_fantasia</option>\n";
							}
?>
						</select>
					</td>
				</tr>
				<tr>
					<td></td>
					<td class='acoes'>
						<input type=submit value="cadastrar">
						<input type=reset value="limpar">
					<td>
				</tr>
			</table>
		</form>
	</div>
	<br>

	<table id=usuarios class=listagem>
		<thead>
			<tr> 
				<th>Usuário</th>
				<th>Permissão</th>
				<th>Unidade</th>
				<th class=ui-state-default>Remover</th> 
			</tr>
		</thead>
		<tbody>
		</tbody>
	</table>
<?
}
catch(Exception $e)
{
	mostra_erro($e->getMessage());
}

include '../common/footer.php';

?>
</body>

</html>
