Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.domain.service.ponto.impl;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Ponto;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.ponto.PontoService;
import br.com.ec.domain.service.usuario.UsuarioService;
import br.com.ec.infrastructure.repository.PontoRepository;
import br.edu.cesmac.core.exception.NegocioException;
import br.edu.cesmac.core.generic.AbstractService;
import br.edu.cesmac.core.generic.GenericRepository;
import br.edu.cesmac.core.util.DataUtils;
import br.edu.cesmac.core.util.VerificadorUtil;
import br.edu.cesmac.core.validador.Validador;

@Service
public class PontoServiceImpl extends AbstractService<Ponto> implements PontoService {
       
        private UsuarioService usuarioService;
        private LojaService lojaService;
       
        private PontoRepository pontoRepository;

        @Autowired
        public PontoServiceImpl(Validador validador, PontoRepository pontoRepository, UsuarioService usuarioService, LojaService lojaService) {
                super(validador);
                this.pontoRepository = pontoRepository;
                this.usuarioService = usuarioService;
                this.lojaService = lojaService;
        }

        @Override
        protected GenericRepository<Ponto> getRepository() {
                return pontoRepository;
        }
       
        @Override
        public Ponto consultarPonto(Date dataAtual, String senhaUsuario, Long lojaSequencial) {
                Ponto ponto = new Ponto();
                ponto.setDataPonto(DataUtils.getDataAtual());
                if (VerificadorUtil.naoEstaNulo(lojaSequencial)) {
                        Loja loja = new Loja();
                        loja.setSequencial(lojaSequencial);
                        ponto.setLoja(lojaService.consultarPorId(loja));
                }
                if (VerificadorUtil.estaNulo(ponto.getLoja())) {
                        throw new NegocioException("LOJA NÃO IDENTIFICADA");
                }
               
                Usuario usuarioConsultado = usuarioService.consultarUsuarioPorSenha(senhaUsuario);
                if (VerificadorUtil.estaNulo(usuarioConsultado)) {
                        throw new NegocioException("USUÁRIO NÃO IDENTIFICADO");
                }
                ponto.setPessoa(usuarioConsultado.getPessoa());
               
                List<Ponto> pontoConsultado = pontoRepository.consultarPassandoEntidade(ponto, 0, pontoRepository.obterQuantidadeDeRegistrosPassandoEntidade(ponto));
                if (pontoConsultado.isEmpty()) {
                        pontoConsultado.add(ponto);
                }
                return pontoConsultado.get(0);
        }
       
        /*
        @Override
        public void adicionarPonto(final Ponto ponto, final String senhaUsuario) {
                if (VerificadorUtil.estaNulo(ponto.getCliente()) &&
                                VerificadorUtil.estaNuloOuVazio(ponto.getContatoCliente())) {
                        throw new NegocioException("Informe o contato do cliente.");
                }
                if (VerificadorUtil.estaNulo(ponto.getProduto()) &&
                                (VerificadorUtil.estaNulo(ponto.getModelo()) ||
                                        VerificadorUtil.estaNulo(ponto.getTipoProduto()) ||
                                        VerificadorUtil.estaNulo(ponto.getGenero()))) {
                        throw new NegocioException("Informe o produto ou o modelo, tipo e gênero do produto");
                }
                if (VerificadorUtil.naoEstaNulo(ponto.getProduto())) {
                        ponto.setModelo(ponto.getProduto().getModelo());
                        ponto.setTipoProduto(ponto.getProduto().getTipo());
                        ponto.setGenero(ponto.getProduto().getGenero());
                        ponto.setEstiloProduto(ponto.getProduto().getEstilo());
                        ponto.setCorProduto(ponto.getProduto().getCor());
                }
                ponto.setTipoSituacao(TipoSituacaoPonto.PENDENTE.getValor());
                ponto.setUsuarioPonto(usuarioService.consultarUsuarioPorSenha(senhaUsuario));
                ponto.setDataPonto(DataUtils.getDataAtual());
                cadastrar(ponto);
        }
       
        @Override
        public List<RankingPontoDTO> consultarRankingPontosNaoAtendidos(String generoPontos) {
                return pontoRepository.consultarRankingPontosNaoAtendidos(generoPontos);
        }
       
        @Override
        public List<RankingPontoDTO> consultarRankingPontos(String generoPontos, Integer quantidadeDiasAnteriores) {
                return pontoRepository.consultarRankingPontos(generoPontos, quantidadeDiasAnteriores);
        }
        */

       
}