class ManterAltaSumarioRN extends BaseBusiness {

	public void atualizarAltaSumario(MpmAltaSumario altaSumario, String nomeMicrocomputador) throws ApplicationBusinessException {
		RapServidores servidorLogado = getServidorLogadoFacade().obterServidorLogado();

		MpmAltaSumarioVO altaSumarioOriginal = this.getMpmAltaSumarioDAO().obterAltaSumarioOriginal(altaSumario);

		AghAtendimentos atendimento = altaSumario.getAtendimento();

		DominioIndConcluido novoIndConcluido = altaSumario.getConcluido();
		DominioIndConcluido antigoIndConcluido = altaSumarioOriginal.getConcluido();

		LOG.info("atendimento.getSeq()= "+atendimento.getSeq());
		// atualiza indicadores do atendimento
		this.atualizarAtendimento(atendimento.getSeq(), novoIndConcluido, antigoIndConcluido, nomeMicrocomputador);

		if (!DominioIndTipoAltaSumarios.TRF.equals(altaSumario.getTipo())) {
			/*
			 * testa data de alta com o fim do atendimento Verifica
			 * data/hora alta futura
			 */
			if (CoreUtil.modificados(altaSumarioOriginal.getDthrAlta(),altaSumario.getDthrAltaAux()) && altaSumario.getDthrAltaAux() != null) {
				this.verificarAltaFutura(atendimento.getSeq(),
						altaSumario.getDthrAltaAux(), altaSumario.getTipo());

				/*
				 * Se o agh.atendimentos.ind_pac_atendimento = 'N' a
				 * dthr_alta do mpm_alta_sumarios não pode ser maior que o
				 * agh.atendimentos.dthr_fim
				 */
				this.verificarDataAlta(atendimento.getSeq(),
						altaSumario.getDthrAltaAux(),
						altaSumarioOriginal.getDthrAlta(),
						DominioOperacoesJournal.UPD, altaSumario.getTipo());
			}

		} else {

			// consite a data da alta quando tipo = transferencia
			this.verificarDataTRF(atendimento.getSeq(), altaSumario.getDthrAltaAux());

		}

		altaSumario.setServidorAltera(this.validaServidorLogado());

		if (CoreUtil.modificados(novoIndConcluido, antigoIndConcluido)) {
			DominioSituacao novaSituacao = altaSumario.getSituacao();

			if (DominioIndConcluido.S.equals(novoIndConcluido)) {
				if (DominioSituacao.I.equals(novaSituacao)) {
					ManterAltaSumarioRNExceptionCode.MPM_03735.throwException();
				}
				if (altaSumario.getServidorValida() == null) {
					altaSumario.setServidorValida(servidorLogado);
				}
				altaSumario.setDthrElaboracaoAlta(new Date());
			} else {
				altaSumario.setServidorValida(null);
				altaSumario.setDthrElaboracaoAlta(null);
			}
		}

		if (CoreUtil.modificados(altaSumario.getTransfConcluida(), altaSumarioOriginal.getTransfConcluida())) {
			if (altaSumario.getTransfConcluida() != null && altaSumario.getTransfConcluida()) {
				altaSumario.setServidorValida(servidorLogado);
				altaSumario.setDthrElaboracaoTransf(new Date());
			} else {
				altaSumario.setServidorValida(null);
				altaSumario.setDthrElaboracaoTransf(null);
			}
		}

		if (altaSumario.getDthrAltaAux()!=null) {
			altaSumario.setDthrAlta(altaSumario.getDthrAltaAux());
		}
		
		try {
			this.getMpmAltaSumarioDAO().merge(altaSumario);
			this.getMpmAltaSumarioDAO().flush();
		} catch (Exception e) {
			LOG.error(e.getMessage(), e);
			throw new ApplicationBusinessException(ManterAltaSumarioRNExceptionCode.ERRO_ATUALIZAR_ALTA_SUMARIO);
		}
		
	}

}