Subversion Repositories Integrator Subversion

Rev

Rev 106 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

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.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Pagamento;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.pagamento.PagamentoService;
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 PagamentoBean extends AbstractBean<Pagamento> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private Pagamento pagamentoSelecionado;
        private Loja lojaSelecionada;
        private String senhaUsuario;
       
        private PagamentoService pagamentoService;
        private LojaService lojaService;
        private UsuarioService usuarioService;

        @Inject
        public PagamentoBean(PagamentoService pagamentoService, LojaService lojaService, UsuarioService usuarioService) {
                this.pagamentoService = pagamentoService;
                this.lojaService = lojaService;
                this.usuarioService = usuarioService;
        }
       
        @Override
        public void preCarregamento() {
                entidade = new Pagamento();
                entidade.setLoja(getLojaSelecionada());
                entidade.setLancado(false);
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new Pagamento());
        }

        @Override
        public GenericService<Pagamento> getService() {
                return pagamentoService;
        }
       
        @Override
        public Pagamento getEntidade() {
                return entidade;
        }

        @Override
        public Pagamento getId() {
                return getEntidade();
        }
       
        public Pagamento getPagamentoSelecionado() {
                return pagamentoSelecionado;
        }
        public void setPagamentoSelecionado(Pagamento pagamentoSelecionado) {
                this.pagamentoSelecionado = pagamentoSelecionado;
        }
       
        public Loja getLojaSelecionada() {
                if (VerificadorUtil.estaNulo(lojaSelecionada)) {
                        Loja loja = new Loja();
                        loja.setSequencial(new Long(getParametro("sequencialLoja").toString()));
                        lojaSelecionada = lojaService.consultarPorId(loja);
                }
                return lojaSelecionada;
        }
        public void setLojaSelecionada(Loja lojaSelecionada) {
                this.lojaSelecionada = lojaSelecionada;
        }
       
        public String getSenhaUsuario() {
                return senhaUsuario;
        }
        public void setSenhaUsuario(String senhaUsuario) {
                this.senhaUsuario = senhaUsuario;
        }
       
        public Integer quantidadePagamentosEmAberto(Loja loja) {
                return pagamentoService.quantidadePagamentosEmAberto(loja);
        }
       
        public Double valorTotalPagamentosDoDia(Loja loja) {
                List<Pagamento> pagamentosDoDia = pagamentoService.consultarPagamentosDoDia(loja.getSequencial(), DataUtils.getDataAtual());
                Double valorTotal = new Double(0.0);
                for (Pagamento pagamento : pagamentosDoDia) {
                        valorTotal = valorTotal + pagamento.getValor();
                }
                return valorTotal;
        }
       
        @Override
        public void cadastrar() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setLoja(getLojaSelecionada());
                                Usuario usuario = verificarSenhaUsuario();
                                getEntidade().setUsuario(usuario);
                                getService().cadastrar(getEntidade());
                                setSenhaUsuario("");
                                LancadorMensagem.lancarSucesso("Pagamento cadastrado com sucesso!");
                        }
                });
        }
       
        private Usuario verificarSenhaUsuario() {
                return usuarioService.consultarUsuarioPorSenha(getSenhaUsuario());
        }
       
        public void finalizar(final Pagamento pagamento) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                pagamento.setLancado(true);
                                getService().alterar(pagamento);
                                LancadorMensagem.lancarSucesso("Pagamento finalizado com sucesso!");
                        }
                });
        }

        public void retirarLancamento(final Pagamento pagamento) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                pagamento.setLancado(false);
                                getService().alterar(pagamento);
                                LancadorMensagem.lancarSucesso("Lançamento do pagamento retirado com sucesso!");
                        }
                });
        }
       
        public void excluir(final Pagamento pagamento) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getService().excluir(pagamento);
                                LancadorMensagem.lancarSucesso("Pagamento excluĂ­do com sucesso!");
                        }
                });
        }
       
}