package br.com.ec.controller;
import java.io.Serializable;
import java.util.List;
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.dto.EnderecoDTO;
import br.com.ec.domain.dto.FuncionarioDTO;
import br.com.ec.domain.dto.PessoaPapelDTO;
import br.com.ec.domain.dto.UsuarioDTO;
import br.com.ec.domain.dto.UsuarioLojaDTO;
import br.com.ec.domain.dto.UsuarioPerfilDTO;
import br.com.ec.domain.model.Endereco;
import br.com.ec.domain.model.Funcionario;
import br.com.ec.domain.model.Papel;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.service.EnderecoService;
import br.com.ec.domain.service.FuncionarioService;
import br.com.ec.domain.service.PapelService;
import br.com.ec.domain.service.PessoaPapelService;
import br.com.ec.domain.service.PessoaService;
import br.com.ec.domain.service.UsuarioLojaService;
import br.com.ec.domain.service.UsuarioPerfilService;
import br.com.ec.domain.service.UsuarioService;
import br.com.ec.domain.service.VendedorService;
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;
import br.com.ec.web.util.TipoOperacao;
@Named
@Scope
("view")
public class FuncionarioBean
extends AbstractBean
<Funcionario
> implements Serializable {
private static final long serialVersionUID = 1L
;
private FuncionarioService funcionarioService
;
private UsuarioService usuarioService
;
private PessoaService pessoaService
;
private PapelService papelService
;
private PessoaPapelService pessoaPapelService
;
private EnderecoService enderecoService
;
private UsuarioPerfilService usuarioPerfilService
;
private UsuarioLojaService usuarioLojaService
;
private VendedorService vendedorService
;
private FuncionarioDTO entidadeParaConsulta
;
private List<FuncionarioDTO
> funcionarios
;
private FuncionarioDTO entidadeDTO
;
private PessoaPapelDTO pessoaPapelDTO
;
private Endereco endereco
;
private Usuario usuario
;
private UsuarioPerfilDTO usuarioPerfilDTO
;
private UsuarioLojaDTO usuarioLojaDTO
;
@Inject
public FuncionarioBean
(FuncionarioService funcionarioService, UsuarioService usuarioService, PessoaService pessoaService,
PapelService papelService, PessoaPapelService pessoaPapelService, EnderecoService enderecoService,
UsuarioPerfilService usuarioPerfilService, UsuarioLojaService usuarioLojaService, VendedorService vendedorService
) {
this.
funcionarioService = funcionarioService
;
this.
usuarioService = usuarioService
;
this.
pessoaService = pessoaService
;
this.
papelService = papelService
;
this.
pessoaPapelService = pessoaPapelService
;
this.
enderecoService = enderecoService
;
this.
usuarioPerfilService = usuarioPerfilService
;
this.
usuarioLojaService = usuarioLojaService
;
this.
vendedorService = vendedorService
;
}
@
Override
public void preCarregamento
() {
limparEntidade
();
consultarFuncionarios
();
}
@
Override
public void limparEntidade
() {
setEntidade
(new Funcionario
());
setEntidadeParaConsulta
(new FuncionarioDTO
());
setEntidadeDTO
(null);
consultarFuncionarios
();
}
@
Override
public GenericService
<Funcionario
> getService
() {
return funcionarioService
;
}
@
Override
public Funcionario getEntidade
() {
return entidade
;
}
@
Override
public void preConsultar
() {
setTipoOperacao
(TipoOperacao.
CONSULTAR);
}
@
Override
public Funcionario getId
() {
return getEntidade
();
}
/*************************************************/
public FuncionarioDTO getEntidadeParaConsulta
() {
return entidadeParaConsulta
;
}
public void setEntidadeParaConsulta
(FuncionarioDTO entidadeParaConsulta
) {
this.
entidadeParaConsulta = entidadeParaConsulta
;
}
public List<FuncionarioDTO
> getFuncionarios
() {
return funcionarios
;
}
public void setFuncionarios
(List<FuncionarioDTO
> funcionarios
) {
this.
funcionarios = funcionarios
;
}
public FuncionarioDTO getEntidadeDTO
() {
return entidadeDTO
;
}
public void setEntidadeDTO
(FuncionarioDTO entidadeDTO
) {
this.
entidadeDTO = entidadeDTO
;
}
public PessoaPapelDTO getPessoaPapelDTO
() {
return pessoaPapelDTO
;
}
public void setPessoaPapelDTO
(PessoaPapelDTO pessoaPapelDTO
) {
this.
pessoaPapelDTO = pessoaPapelDTO
;
}
public Endereco getEndereco
() {
return endereco
;
}
public void setEndereco
(Endereco endereco
) {
this.
endereco = endereco
;
}
public Usuario getUsuario
() {
return usuario
;
}
public void setUsuario
(Usuario usuario
) {
this.
usuario = usuario
;
}
public UsuarioPerfilDTO getUsuarioPerfilDTO
() {
return usuarioPerfilDTO
;
}
public void setUsuarioPerfilDTO
(UsuarioPerfilDTO usuarioPerfilDTO
) {
this.
usuarioPerfilDTO = usuarioPerfilDTO
;
}
public UsuarioLojaDTO getUsuarioLojaDTO
() {
return usuarioLojaDTO
;
}
public void setUsuarioLojaDTO
(UsuarioLojaDTO usuarioLojaDTO
) {
this.
usuarioLojaDTO = usuarioLojaDTO
;
}
/*************************************************/
public void prepararDetalhar
(FuncionarioDTO funcionarioDTO
) {
super.
preDetalhar(funcionarioService.
consultarPorId(new Funcionario
(funcionarioDTO.
getSequencialFuncionario())));
}
public void prepararAlterar
(FuncionarioDTO funcionarioDTO
) {
super.
preAlterar(funcionarioService.
consultarPorId(new Funcionario
(funcionarioDTO.
getSequencialFuncionario())));
}
public void consultarFuncionarios
() {
setFuncionarios
(funcionarioService.
consultarFuncionarios(getEntidadeParaConsulta
()));
}
public void prepararAlterarCompleto
(FuncionarioDTO funcionarioDTO
) {
super.
preAlterar(funcionarioService.
consultarPorId(new Funcionario
(funcionarioDTO.
getSequencialFuncionario())));
UsuarioDTO usuarioDTO = usuarioService.
consultarPorPessoa(funcionarioDTO.
getSequencialPessoa());
setEntidadeDTO
(new FuncionarioDTO
(getEntidade
().
getSequencial()));
if (VerificadorUtil.
naoEstaNulo(usuarioDTO
)) {
getEntidadeDTO
().
setUsuarioDTO(usuarioDTO
);
getEntidadeDTO
().
getUsuarioDTO().
setPerfis(usuarioPerfilService.
consultarPerfisDoUsuario(usuarioDTO.
getSequencial()));
getEntidadeDTO
().
getUsuarioDTO().
setLojas(usuarioLojaService.
consultarLojasDoUsuario(usuarioDTO.
getSequencial()));
}
getEntidadeDTO
().
setPapeisDTO(pessoaPapelService.
consultarPapeisDaPessoa(getEntidade
().
getSequencialDaPessoa()));
getEntidadeDTO
().
setEnderecosDTO(enderecoService.
consultarEnderecosDaPessoa(getEntidade
().
getSequencialDaPessoa()));
getEntidadeDTO
().
setVendedorDTO(vendedorService.
consultarVendedorPorPessoa(getEntidade
().
getSequencialDaPessoa()));
limparPapel
();
}
public void alterarCompleto
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
pessoaService.
alterar(getEntidade
().
getPessoa());
usuarioService.
alterar(getEntidadeDTO
().
getUsuarioDTO());
alterar
(getEntidade
());
}
});
}
public void limparPapel
() {
PessoaPapelDTO pessoaPapelDTO =
new PessoaPapelDTO
();
pessoaPapelDTO.
setSequencialPessoa(getEntidade
().
getPessoa().
getSequencial());
setPessoaPapelDTO
(pessoaPapelDTO
);
}
public void adicionarPapel
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
pessoaPapelService.
adicionarPapel(getEntidade
().
getPessoa(),
new Papel
(getPessoaPapelDTO
().
getCodigoPapel()));
getEntidadeDTO
().
setPapeisDTO(pessoaPapelService.
consultarPapeisDaPessoa(getPessoaPapelDTO
().
getSequencialPessoa()));
LancadorMensagem.
lancarSucesso("PAPEL ADICIONADO COM SUCESSO");
}
});
}
public void removerPapel
(PessoaPapelDTO pessoaPapelDTO
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
pessoaPapelService.
removerPapel(pessoaPapelDTO.
getSequencialPessoa(), pessoaPapelDTO.
getCodigoPapel());
getEntidadeDTO
().
setPapeisDTO(pessoaPapelService.
consultarPapeisDaPessoa(pessoaPapelDTO.
getSequencialPessoa()));
LancadorMensagem.
lancarSucesso("PAPEL REMOVIDO COM SUCESSO");
}
});
}
public void limparEndereco
() {
Endereco endereco =
new Endereco
();
endereco.
setPessoa(getEntidade
().
getPessoa());
endereco.
setAtivo(true);
setEndereco
(endereco
);
}
public void prepararAlterarEndereco
(EnderecoDTO enderecoDTO
) {
setEndereco
(enderecoService.
consultarPorId(new Endereco
(enderecoDTO.
getSequencial())));
}
public void adicionarEndereco
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
enderecoService.
alterar(getEndereco
());
getEntidadeDTO
().
setEnderecosDTO(enderecoService.
consultarEnderecosDaPessoa(getEntidade
().
getSequencialDaPessoa()));
LancadorMensagem.
lancarSucesso("ENDEREÇO SALVO COM SUCESSO");
}
});
}
public void removerEndereco
(EnderecoDTO enderecoDTO
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
enderecoService.
removerEndereco(enderecoDTO.
getSequencial());
getEntidadeDTO
().
setEnderecosDTO(enderecoService.
consultarEnderecosDaPessoa(getEntidade
().
getSequencialDaPessoa()));
LancadorMensagem.
lancarSucesso("ENDEREÇO REMOVIDO COM SUCESSO");
}
});
}
public void limparUsuarioPerfil
() {
UsuarioPerfilDTO usuarioPerfilDTO =
new UsuarioPerfilDTO
();
usuarioPerfilDTO.
setSequencialUsuario(getEntidadeDTO
().
getUsuarioDTO().
getSequencial());
setUsuarioPerfilDTO
(usuarioPerfilDTO
);
}
public void adicionarUsuarioPerfil
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
usuarioPerfilService.
adicionarPerfil(getUsuarioPerfilDTO
().
getSequencialUsuario(), getUsuarioPerfilDTO
().
getCodigoPerfil());
getEntidadeDTO
().
getUsuarioDTO().
setPerfis(usuarioPerfilService.
consultarPerfisDoUsuario(getUsuarioPerfilDTO
().
getSequencialUsuario()));
LancadorMensagem.
lancarSucesso("PERFIL ADICIONADO COM SUCESSO");
}
});
}
public void removerUsuarioPerfil
(UsuarioPerfilDTO usuarioPerfilDTO
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
usuarioPerfilService.
removerPerfil(usuarioPerfilDTO.
getSequencial());
getEntidadeDTO
().
getUsuarioDTO().
setPerfis(usuarioPerfilService.
consultarPerfisDoUsuario(usuarioPerfilDTO.
getSequencialUsuario()));
LancadorMensagem.
lancarSucesso("PERFIL REMOVIDO COM SUCESSO");
}
});
}
public void limparUsuarioLoja
() {
UsuarioLojaDTO usuarioLojaDTO =
new UsuarioLojaDTO
();
usuarioLojaDTO.
setSequencialUsuario(getEntidadeDTO
().
getUsuarioDTO().
getSequencial());
setUsuarioLojaDTO
(usuarioLojaDTO
);
}
public void adicionarUsuarioLoja
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
usuarioLojaService.
adicionarLoja(getUsuarioLojaDTO
().
getSequencialUsuario(), getUsuarioLojaDTO
().
getSequencialLoja());
getEntidadeDTO
().
getUsuarioDTO().
setLojas(usuarioLojaService.
consultarLojasDoUsuario(getUsuarioLojaDTO
().
getSequencialUsuario()));
LancadorMensagem.
lancarSucesso("LOJA ADICIONADA COM SUCESSO");
}
});
}
public void removerUsuarioLoja
(UsuarioLojaDTO usuarioLojaDTO
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
usuarioLojaService.
removerLoja(usuarioLojaDTO.
getSequencialUsuario(), usuarioLojaDTO.
getSequencialLoja());
getEntidadeDTO
().
getUsuarioDTO().
setLojas(usuarioLojaService.
consultarLojasDoUsuario(usuarioLojaDTO.
getSequencialUsuario()));
LancadorMensagem.
lancarSucesso("LOJA REMOVIDA COM SUCESSO");
}
});
}
public void iniciarVendedor
() {
}
}