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
;
}
}