package br.com.ec.controller.managedbean;
import java.io.Serializable;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.EstoqueAuditoria;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.model.tipos.TipoEstoqueAuditoria;
import br.com.ec.domain.model.tipos.TipoEstoqueAuditoriaVerificacao;
import br.com.ec.domain.service.estoqueauditoria.EstoqueAuditoriaService;
import br.com.ec.domain.service.usuario.UsuarioService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;
@Named
@Scope
("view")
public class AuditoriaAvariaBean
extends AbstractBean
<EstoqueAuditoria
> implements Serializable {
private static final long serialVersionUID = 1L
;
private EstoqueAuditoria estoqueAuditoria
;
private String senhaUsuario
;
private Usuario usuarioAuditor
;
private EstoqueAuditoriaService estoqueAuditoriaService
;
private UsuarioService usuarioService
;
@Inject
public AuditoriaAvariaBean
(EstoqueAuditoriaService estoqueAuditoriaService, UsuarioService usuarioService
) {
this.
estoqueAuditoriaService = estoqueAuditoriaService
;
this.
usuarioService = usuarioService
;
}
@
Override
public void preCarregamento
() {
limparEntidade
();
}
@
Override
public void limparEntidade
() {
setEntidade
(new EstoqueAuditoria
());
setEstoqueAuditoria
(null);
}
@
Override
public GenericService
<EstoqueAuditoria
> getService
() {
return estoqueAuditoriaService
;
}
@
Override
public EstoqueAuditoria getEntidade
() {
return entidade
;
}
@
Override
public EstoqueAuditoria getId
() {
return getEntidade
();
}
public EstoqueAuditoria getEstoqueAuditoria
() {
return estoqueAuditoria
;
}
public void setEstoqueAuditoria
(EstoqueAuditoria estoqueAuditoria
) {
this.
estoqueAuditoria = estoqueAuditoria
;
}
public String getSenhaUsuario
() {
return senhaUsuario
;
}
public void setSenhaUsuario
(String senhaUsuario
) {
this.
senhaUsuario = senhaUsuario
;
}
public Usuario getUsuarioAuditor
() {
return usuarioAuditor
;
}
public void setUsuarioAuditor
(Usuario usuarioAuditor
) {
this.
usuarioAuditor = usuarioAuditor
;
}
public TipoEstoqueAuditoria
[] getTiposEstoqueAuditoria
() {
return TipoEstoqueAuditoria.
values();
}
public TipoEstoqueAuditoriaVerificacao
[] getTiposEstoqueAuditoriaVerificacao
() {
return TipoEstoqueAuditoriaVerificacao.
values();
}
public void consultarAuditoria
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
setUsuarioAuditor
(usuarioService.
consultarUsuarioPorSenha(getSenhaUsuario
()));
setEstoqueAuditoria
(estoqueAuditoriaService.
consultarPorId(getEntidade
()));
if (VerificadorUtil.
estaNulo(getEstoqueAuditoria
())) {
LancadorMensagem.
lancarAlerta("AUDITORIA NÃO EXISTENTE");
}
}
});
}
public void verificarAuditoria
(final EstoqueAuditoria estoqueAuditoria
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
estoqueAuditoria.
setUsuarioVerificacao(getUsuarioAuditor
());
estoqueAuditoriaService.
alterarVerificacaoAuditoria(estoqueAuditoria, TipoEstoqueAuditoriaVerificacao.
VERIFICADO_SEM_PENDENCIA.
getValor());
adicionandoParametroArgsConfirmandoAcao
(true);
limparEntidade
();
LancadorMensagem.
lancarSucesso("AUDITORIA VERIFICADA COM SUCESSO");
}
});
}
public void verificarAuditoriaComPendencia
(final EstoqueAuditoria estoqueAuditoria
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
estoqueAuditoria.
setUsuarioVerificacao(getUsuarioAuditor
());
estoqueAuditoriaService.
alterarVerificacaoAuditoria(estoqueAuditoria, TipoEstoqueAuditoriaVerificacao.
VERIFICADO_COM_PENDENCIA.
getValor());
adicionandoParametroArgsConfirmandoAcao
(true);
limparEntidade
();
LancadorMensagem.
lancarSucesso("AUDITORIA VERIFICADA (COM PENDÊNCIA) COM SUCESSO");
}
});
}
public void salvarAuditoria
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
estoqueAuditoria.
setUsuarioVerificacao(getUsuarioAuditor
());
estoqueAuditoriaService.
alterar(getEstoqueAuditoria
());
adicionandoParametroArgsConfirmandoAcao
(true);
limparEntidade
();
LancadorMensagem.
lancarSucesso("AUDITORIA ALTERADA COM SUCESSO");
}
});
}
public void retirarVerificacaoAuditoria
(final EstoqueAuditoria estoqueAuditoria
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
estoqueAuditoriaService.
alterarVerificacaoAuditoria(estoqueAuditoria, TipoEstoqueAuditoriaVerificacao.
NAO_VERIFICADO.
getValor());
adicionandoParametroArgsConfirmandoAcao
(true);
limparEntidade
();
LancadorMensagem.
lancarSucesso("VERIFICAÇÃO DA AUDITORIA RETIRADA COM SUCESSO");
}
});
}
public void excluirAuditoria
(final EstoqueAuditoria estoqueAuditoria
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
estoqueAuditoriaService.
excluirAuditoria(estoqueAuditoria
);
adicionandoParametroArgsConfirmandoAcao
(true);
limparEntidade
();
LancadorMensagem.
lancarSucesso("AUDITORIA EXCLUÍDA COM SUCESSO");
}
});
}
public void detalharAuditoria
(final EstoqueAuditoria estoqueAuditoria
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
setEntidade
(estoqueAuditoria
);
}
});
}
}