Subversion Repositories Integrator Subversion

Rev

Rev 323 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller;

import java.io.Serializable;
import java.util.ArrayList;

import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.event.FlowEvent;
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.PessoaDTO;
import br.com.ec.domain.model.Endereco;
import br.com.ec.domain.model.Funcionario;
import br.com.ec.domain.model.Pessoa;
import br.com.ec.domain.model.tipos.TipoDependentes;
import br.com.ec.domain.model.tipos.TipoEscolaridade;
import br.com.ec.domain.model.tipos.TipoEstadoCivil;
import br.com.ec.domain.model.tipos.TipoPessoa;
import br.com.ec.domain.model.tipos.TipoRacaCor;
import br.com.ec.domain.service.PessoaService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.domain.shared.GerenciadorEmailImpl;
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 CadastroExternoBean extends AbstractBean<PessoaDTO> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private Pessoa pessoaSelecionada;
        private Funcionario funcionarioSelecionado;
        private Endereco enderecoSelecionado;
        private String proximoPasso;
        private PessoaService pessoaService;
       
        @Inject
        public CadastroExternoBean(PessoaService pessoaService) {
                this.pessoaService = pessoaService;
        }
       
        @Override
        public void preCarregamento() {
                limparEntidade();
        }

        @Override
        public void limparEntidade() {
                PessoaDTO pessoaDTO = new PessoaDTO();
                pessoaDTO.setTipoPessoa(TipoPessoa.FISICA_F.getValor());
                pessoaDTO.setNome("NOVATO");
                setEntidade(pessoaDTO);
        }

        @Override
        public GenericService<PessoaDTO> getService() {
                return null;
        }
       
        @Override
        public PessoaDTO getEntidade() {
                return entidade;
        }
       
        @Override
        public void preConsultar() {
                setTipoOperacao(TipoOperacao.CONSULTAR);
        }

        @Override
        public PessoaDTO getId() {
                return getEntidade();
        }
       
        public TipoEstadoCivil[] getTiposEstadoCivil() {
                return TipoEstadoCivil.values();
        }
       
        public TipoRacaCor[] getTiposRacaCor() {
                return TipoRacaCor.values();
        }
       
        public TipoEscolaridade[] getTiposEscolaridade() {
                return TipoEscolaridade.values();
        }
       
        public TipoDependentes[] getTiposDependentes() {
                return TipoDependentes.values();
        }
       
        public Pessoa getPessoaSelecionada() {
                return pessoaSelecionada;
        }
        public void setPessoaSelecionada(Pessoa pessoaSelecionada) {
                this.pessoaSelecionada = pessoaSelecionada;
        }
       
        public Funcionario getFuncionarioSelecionado() {
                return funcionarioSelecionado;
        }
        public void setFuncionarioSelecionado(Funcionario funcionarioSelecionado) {
                this.funcionarioSelecionado = funcionarioSelecionado;
        }
       
        public Endereco getEnderecoSelecionado() {
                return enderecoSelecionado;
        }
        public void setEnderecoSelecionado(Endereco enderecoSelecionado) {
                this.enderecoSelecionado = enderecoSelecionado;
        }
       
        public String getProximoPasso() {
                return proximoPasso;
        }
        public void setProximoPasso(String proximoPasso) {
                this.proximoPasso = proximoPasso;
        }
       
        /*********************************************************/
       
        public void iniciarCadastroExterno() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                Pessoa pessoa = new Pessoa(getEntidade());
                                pessoa.setEnderecos(new ArrayList<Endereco>());
                                setPessoaSelecionada(pessoaService.cadastroExterno(null, pessoa, null, null));
                                if (getPessoaSelecionada().getNome().equals("NOVATO")) {
                                        getPessoaSelecionada().setNome("");
                                }
                                setFuncionarioSelecionado(getPessoaSelecionada().getFuncionario());
                                setEnderecoSelecionado(getPessoaSelecionada().primeiroEndereco());
                                if (VerificadorUtil.estaNulo(getEnderecoSelecionado())) {
                                        setEnderecoSelecionado(new Endereco(true));
                                }
                        }
                });
        }
       
        public String seguir(final FlowEvent evento) {
                setProximoPasso(evento.getOldStep());
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                pessoaService.cadastroExterno(evento, getPessoaSelecionada(), getFuncionarioSelecionado(), getEnderecoSelecionado());
                                setFuncionarioSelecionado(getPessoaSelecionada().getFuncionario());
                                setProximoPasso(evento.getNewStep());
                        }
                });
        return getProximoPasso();
    }
       
        public void finalizarCadastro() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                new GerenciadorEmailImpl()
                                        .comEmailsDestino(ConstantesSEC.DESTINATARIOS_EMAIL_RH)
                                        .comAssunto("[EC] NOVO COLABORADOR CADASTRADO")
                                        .comConteudoHtml("COLABORADOR: " + getPessoaSelecionada().getNome())
                                        .enviar();
                                setPessoaSelecionada(null);
                                setEnderecoSelecionado(null);
                                limparEntidade();
                                LancadorMensagem.lancarSucesso("CADASTRO REALIZADO COM SUCESSO");
                        }
                });
        }
       
}