Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.gov.al.saude.scs.util;

import java.util.Set;

import br.gov.al.saude.framework.core.util.VerificadorUtil;
import br.gov.al.saude.scs.model.Frequencia;
import br.gov.al.saude.scs.model.Presenca;
import br.gov.al.saude.scs.model.TurmaParticipante;


public class FrequenciaUtils {
       
        private static final double ERRO_RETORNAR_PERCENTUAL_ZERO = 0.0;

        public static Double calcularPercentualPresencasParticipante(final Set<Frequencia> frequencias, final TurmaParticipante participante){
                try {
                        Integer quantidadeDePresencasOuAusenciasJustificadas = calcularQuantidadeDePresencasOuAusenciasJustificadas(frequencias, participante);
                        Integer quantidadeTotalDeFrequenciasValidadas = calcularQuantideDeFrenquenciasValidadas(frequencias);
                        return calcularQuantidadeTotalDeFrequenciasValidadas(quantidadeDePresencasOuAusenciasJustificadas, quantidadeTotalDeFrequenciasValidadas);
                } catch (Exception e) {
                        return ERRO_RETORNAR_PERCENTUAL_ZERO;
                }
        }
       
        private static Integer calcularQuantidadeDePresencasOuAusenciasJustificadas(Set<Frequencia> frequencias, TurmaParticipante participante) {
                Integer contadorQuantidadePresencasOuAusenciasJustificadas = 0;
                for (Frequencia frequencia : frequencias) {
                        if (frequencia.getIndicadorValidado() && frequencia.getIndicadorAtivo()) {
                                Set<Presenca> presencas = frequencia.getPresencas();
                                for (Presenca presenca : presencas) {
                                        if(presenca.getTurmaParticipante().equals(participante)){
                                                if (presenca.getIndicadorPresenca()) {
                                                        contadorQuantidadePresencasOuAusenciasJustificadas += 1;
                                                }else {
                                                        if (VerificadorUtil.naoEstaNuloOuVazio(presenca.getJustificativa())) {
                                                                contadorQuantidadePresencasOuAusenciasJustificadas += 1;
                                                        }
                                                }
                                        }
                                }
                        }
                }
                return contadorQuantidadePresencasOuAusenciasJustificadas;
        }
       
        private static Integer calcularQuantideDeFrenquenciasValidadas(Set<Frequencia> frequencias) {
                Integer contadorQuantidadeDeFrequenciasValidadas = 0;
                for (Frequencia frequencia : frequencias) {
                        if (frequencia.getIndicadorValidado() && frequencia.getIndicadorAtivo()) {
                                contadorQuantidadeDeFrequenciasValidadas += 1;
                        }
                }
                return contadorQuantidadeDeFrequenciasValidadas;
        }
       
        private static Double calcularQuantidadeTotalDeFrequenciasValidadas(Integer quantidadeDePresencasOuAusenciasJustificadas, Integer quantidadeTotalDeFrequenciasValidadas) {
                double porcentagemTotalDeFrequencia = 0;
                porcentagemTotalDeFrequencia = ((quantidadeDePresencasOuAusenciasJustificadas * 100) / quantidadeTotalDeFrequenciasValidadas);
                return porcentagemTotalDeFrequencia;
        }
}