br.com.hslife.orcamento.service.AgendaService.java Source code

Java tutorial

Introduction

Here is the source code for br.com.hslife.orcamento.service.AgendaService.java

Source

/***
      
 Copyright (c) 2012 - 2020 Hrcules S. S. Jos
    
Este arquivo  parte do programa Oramento Domstico.
    
    
Oramento Domstico  um software livre; voc pode redistribui-lo e/ou 
    
modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como 
    
publicada pela Fundao do Software Livre (FSF); na verso 2.1 da 
    
Licena.
    
    
Este programa  distribudo na esperana que possa ser til, 
    
mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO a 
    
qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica 
    
Geral Menor GNU em portugus para maiores detalhes.
    
    
Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o 
    
nome de "LICENSE.TXT" junto com este programa, se no, acesse o site do
    
projeto no endereco https://github.com/herculeshssj/orcamento ou escreva 
    
para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, 
    
Boston, MA  02110-1301, USA.
    
    
Para mais informaes sobre o programa Oramento Domstico e seu autor entre  
    
em contato pelo e-mail herculeshssj@outlook.com, ou ainda escreva para 
    
Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, 
    
Marco II - Nova Iguau, RJ, Brasil.
      
***/

package br.com.hslife.orcamento.service;

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

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

import br.com.hslife.orcamento.component.UsuarioComponent;
import br.com.hslife.orcamento.entity.Agenda;
import br.com.hslife.orcamento.entity.Conta;
import br.com.hslife.orcamento.entity.LancamentoConta;
import br.com.hslife.orcamento.enumeration.StatusLancamentoConta;
import br.com.hslife.orcamento.facade.IAgenda;
import br.com.hslife.orcamento.model.CriterioAgendamento;
import br.com.hslife.orcamento.model.CriterioBuscaLancamentoConta;
import br.com.hslife.orcamento.repository.AgendaRepository;
import br.com.hslife.orcamento.repository.LancamentoContaRepository;

@Service("agendaService")
public class AgendaService extends AbstractCRUDService<Agenda> implements IAgenda {

    @Autowired
    private AgendaRepository repository;

    @Autowired
    private LancamentoContaRepository lancamentoContaRepository;

    @Autowired
    private UsuarioComponent usuarioComponent;

    public AgendaRepository getRepository() {
        repository.setSessionFactory(this.sessionFactory);
        return repository;
    }

    public LancamentoContaRepository getLancamentoContaRepository() {
        lancamentoContaRepository.setSessionFactory(this.sessionFactory);
        return lancamentoContaRepository;
    }

    public UsuarioComponent getUsuarioComponent() {
        return usuarioComponent;
    }

    @Override
    public List<Agenda> buscarAgendamentoLancamentosAgendados(Conta conta, Date dataInicio, Date dataFim) {
        CriterioBuscaLancamentoConta criterioBusca = new CriterioBuscaLancamentoConta();
        List<Agenda> agendamentos = new ArrayList<>();
        Agenda agenda = new Agenda();
        criterioBusca.setConta(conta);
        criterioBusca.setDataInicio(dataInicio);
        criterioBusca.setDataFim(dataFim);
        criterioBusca.setStatusLancamentoConta(new StatusLancamentoConta[] { StatusLancamentoConta.AGENDADO });

        for (LancamentoConta lancamento : getLancamentoContaRepository().findByCriterioBusca(criterioBusca)) {
            agenda.setDataInicio(lancamento.getDataPagamento());
            agenda.setDescricao(lancamento.getConta().getLabel() + " - " + lancamento.getDescricao());
            agenda.setUsuario(lancamento.getConta().getUsuario());
            agendamentos.add(agenda);
            agenda = new Agenda();
        }
        return agendamentos;
    }

    @Override
    public List<Agenda> buscarPorCriterioAgendamento(CriterioAgendamento criterioBusca) {
        return getRepository().findByCriterioAgendamento(criterioBusca);
    }

    @SuppressWarnings("deprecation")
    @Override
    public Long contarAgendamentosDeHojeComAlerta() {
        Date inicio = new Date();
        inicio.setHours(0);
        inicio.setMinutes(0);
        inicio.setSeconds(0);

        Date fim = new Date(inicio.getTime());
        fim.setHours(23);
        fim.setMinutes(59);
        fim.setSeconds(59);
        return getRepository().countAgendamentoByDataInicioOrDataFimAndAlerta(inicio, fim, true,
                getUsuarioComponent().getUsuarioLogado());
    }

    @SuppressWarnings("deprecation")
    public List<Agenda> buscarAgendamentosDoDia() {
        CriterioAgendamento criterioBusca = new CriterioAgendamento();
        Date inicio = new Date();
        inicio.setHours(0);
        inicio.setMinutes(0);
        inicio.setSeconds(0);

        Date fim = new Date(inicio.getTime());
        fim.setHours(23);
        fim.setMinutes(59);
        fim.setSeconds(59);
        criterioBusca.setInicio(inicio);
        criterioBusca.setFim(fim);
        criterioBusca.setUsuario(getUsuarioComponent().getUsuarioLogado());
        return getRepository().findByCriterioAgendamento(criterioBusca);
    }

    @Override
    public List<Agenda> buscarAgendamentoPorOuDataInicioOuDataFimEAlerta(Date inicio, Date fim,
            boolean emiteAlerta) {
        return getRepository().findAgendamentoByOrDataInicioOrDataFimAndAlerta(inicio, fim, emiteAlerta);
    }
}