var PAGE_URL_BASE = 'reserva';
var API_URL_BASE = 'reservaApi';
var RESOURCE_NAME = 'exemplar';
var RESOURCES_NAME = 'exemplares';
var POST_LABEL = 'Reservar';
var DELETE_LABEL = 'Cancelar';
var SEARCH_ORIENTATION = '';
var onClickSelectAllEvent = false;
var onClickDeleteEvent = false;
var onClickActionEvent = function(event){
var $this = $j(this);
var $firstChecked = $j('input.exemplar:checked:first');
if ($firstChecked.length < 1)
handleMessages([{type : 'error', msg : 'Selecione algum exemplar.'}], $this, true);
else{
$j('.disable-on-apply-changes').attr('disabled', 'disabled');
$this.val('Aguarde reservando...');
postReserva($firstChecked);
}
};
var postReserva = function ($resourceCheckbox) {
var options = {
url : postResourceUrlBuilder.buildUrl(API_URL_BASE, 'reserva'),
dataType : 'json',
data : {
ref_cod_instituicao : $j('#ref_cod_instituicao').val(),
ref_cod_escola : $j('#ref_cod_escola').val(),
ref_cod_biblioteca : $j('#ref_cod_biblioteca').val(),
ref_cod_cliente : $j('#ref_cod_cliente').val(),
ref_cod_acervo : $j('#ref_cod_acervo').val(),
exemplar_id : $resourceCheckbox.data('exemplar_id')
},
success : function(dataResponse){
afterChangeResource($resourceCheckbox);
handlePost(dataResponse);
}
};
beforeChangeResource($resourceCheckbox);
postResource(options);
};
var handlePost = function(dataResponse){
var $targetElement = $j('#exemplar-'+dataResponse.id).closest('tr').first();
handleMessages(dataResponse.msgs, $targetElement);
updateResourceRow(dataResponse);
};
var onClickCancelEvent = function(event) {
if (confirm("Confirma cancelamento da reserva?")) {
var $this = $j(this);
//var $checkbox = $this.closest('tr').find("input[type='checkbox']").first();
deleteReserva($this);
}
}
var deleteReserva = function($deleteLink) {
var options = {
url : deleteResourceUrlBuilder.buildUrl(API_URL_BASE, 'reserva', {
ref_cod_instituicao : $j('#ref_cod_instituicao').val(),
ref_cod_escola : $j('#ref_cod_escola').val(),
ref_cod_biblioteca : $j('#ref_cod_biblioteca').val(),
ref_cod_cliente : $j('#ref_cod_cliente').val(),
ref_cod_acervo : $j('#ref_cod_acervo').val(),
exemplar_id : $deleteLink.data('exemplar_id'),
reserva_id : $deleteLink.data('reserva_id')
}),
dataType : 'json',
data : {
},
success : function(dataResponse){
afterChangeResource($deleteLink);
handleDeleteReserva(dataResponse);
}
};
beforeChangeResource($deleteLink);
deleteResource(options);
}
var handleDeleteReserva = function(dataResponse) {
safeLog(dataResponse);
//try{
var $targetElement = $j('#exemplar-' + dataResponse.id).closest('tr').first();
handleMessages(dataResponse.msgs, $targetElement);
updateResourceRow(dataResponse);
//}
//catch(error){
//showNewSearchButton();
//handleMessages([{type : 'error', msg : 'Ocorreu um erro ao remover o recurso, por favor tente novamente, detalhes: ' + error}], '');
//safeLog(dataResponse);
//}
}
function setTableSearchDetails($tableSearchDetails, dataDetails){
$j('
').html('Reserva exemplares ').appendTo($tableSearchDetails);
//set headers table
var $linha = $j(' ');
$j(' ').html('Cliente').appendTo($linha);
$j(' ').html('Obra').appendTo($linha);
$j(' ').html('Biblioteca').appendTo($linha);
$j(' ').html('Escola').appendTo($linha);
$linha.appendTo($tableSearchDetails);
var $linha = $j(' ').addClass('even');
$j(' ').html($j('#nome_cliente').val()).appendTo($linha);
$j(' ').html($j('#titulo_obra').val()).appendTo($linha);
//field biblioteca pode ser diferente de select caso usuario comum
var $htmlBibliotecaField = $j('#ref_cod_biblioteca').children("[selected='selected']").html() ||
$j('#tr_nm_biblioteca span:last').html();
$j(' ').html(safeToUpperCase($htmlBibliotecaField)).appendTo($linha);
//field escola pode ser diferente de select caso usuario comum
var $htmlEscolaField = $j('#ref_cod_escola').children("[selected='selected']").html() ||
$j('#tr_nm_escola span:last').html();
$j(' ').html(safeToUpperCase($htmlEscolaField)).appendTo($linha);
$linha.appendTo($tableSearchDetails);
$tableSearchDetails.show();
$tableSearchDetails.data('details', dataDetails);
}
function handleSearch($resultTable, dataResponse) {
var $linha = $j(' ');
$j(' ').html('Selecionar').addClass('center').appendTo($linha);
$j(' ').html('Id').addClass('center').appendTo($linha);
$j(' ').html('Situação').addClass('center').appendTo($linha);
$j(' ').html('Cliente').appendTo($linha);
$j(' ').html('Data').addClass('center').appendTo($linha);
$j(' ').html('Data prevista disponível').addClass('center').appendTo($linha);
$j(' ').html('Ação').addClass('center').appendTo($linha);
$linha.appendTo($resultTable);
//set rows
$j.each(dataResponse[RESOURCES_NAME], function(index, value){
var $checkbox = $j(' ')
.attr('type', 'checkbox')
.attr('name', 'reservar-exempar')
.attr('value', 'sim')
.attr('id', 'exemplar-' + value.id)
.attr('class', 'exemplar disable-on-apply-changes')
.data('exemplar_id', value.id);
var situacoesReservaPermitida = ['disponivel', 'emprestado', 'reservado', 'emprestado_e_reservado'];
if ($j.inArray(value.situacao.flag, situacoesReservaPermitida) < 0)
$checkbox.attr('disabled', 'disabled').removeClass('disable-on-apply-changes');
var $linha = $j(' ');
$j(' ').html($checkbox).addClass('center').appendTo($linha);
$j(' ').html(value.id).addClass('center').appendTo($linha);
var $colSituacoes = $j(' ').attr('id', 'situacoes-' + value.id).addClass('situacoes center');
var $colClientes = $j(' ').attr('id', 'clientes-' + value.id);
var $colDatas = $j(' ').attr('id', 'datas-' + value.id).addClass('center');
var $colDatasPrevistaDisponivel = $j(' ').attr('id', 'datas-prevista-disponivel-' + value.id).addClass('center');
var $colAcoes = $j(' ').attr('id', 'acoes-' + value.id).addClass('center');
$colSituacoes.appendTo($linha);
$colClientes.appendTo($linha);
$colDatas.appendTo($linha);
$colDatasPrevistaDisponivel.appendTo($linha);
$colAcoes.appendTo($linha);
$linha.appendTo($resultTable);
updateResourceRow(value);
});// each
$resultTable.find('tr:even').addClass('even');
$resultTable.addClass('styled').find('checkbox:first').focus();
var $checkboxes = $resultTable.find("input[type='checkbox']");
$checkboxes.change(function(){
$checkboxes.not(this).removeAttr('checked');
});
}
function updateResourceRow(exemplar){
var $colSituacoes = $j('#situacoes-' + exemplar.id).html('');
var $colClientes = $j('#clientes-' + exemplar.id).html('');
var $colDatas = $j('#datas-' + exemplar.id).html('');
var $colDatasPrevistaDisponivel = $j('#datas-prevista-disponivel-' + exemplar.id).html('');
var $colAcoes = $j('#acoes-' + exemplar.id).html('');
if ($j.isArray(exemplar.pendencias)) {
$j.each(exemplar.pendencias, function(index, value){
$j('
').html(value.situacao.label || '-').appendTo($colSituacoes);
$j('
').html(value.nome_cliente || '-').appendTo($colClientes);
$j('
').html(value.data || '-').appendTo($colDatas);
$j('
').html(value.data_prevista_disponivel || '-').appendTo($colDatasPrevistaDisponivel);
if (value.situacao.flag == 'reservado' && value.cliente && value.cliente.id == $j('#ref_cod_cliente').val()) {
var $linkToDelete = $j("Cancelar reserva ").click(onClickCancelEvent).data('exemplar_id', exemplar.id).data('reserva_id', value.reserva_id);
$j('
').html($linkToDelete).appendTo($colAcoes);
}
else
$j('
').html('-').appendTo($colAcoes);
});
if (exemplar.pendencias.length < 1)
$j('
').html(exemplar.situacao.label || '-').appendTo($colSituacoes);
}
$colSituacoes.data('situacao', exemplar.situacao_exemplar);
}