Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | espaco | 1 | package br.gov.al.saude.scs.tipo; |
| 2 | |||
| 3 | import java.util.Date; |
||
| 4 | import java.util.Set; |
||
| 5 | |||
| 6 | import br.gov.al.saude.framework.core.util.DataUtils; |
||
| 7 | import br.gov.al.saude.framework.core.util.VerificadorUtil; |
||
| 8 | import br.gov.al.saude.scs.model.Turma; |
||
| 9 | import br.gov.al.saude.scs.model.TurmaPeriodo; |
||
| 10 | import br.gov.al.saude.scs.model.dto.TurmaDTO; |
||
| 11 | |||
| 12 | public enum TipoSituacaoTurma { |
||
| 13 | |||
| 14 | NAO_INICIADA("N", "Não Iniciada"), |
||
| 15 | EM_ANDAMENTO("E", "Em Andamento"), |
||
| 16 | CONCLUIDA("C", "Concluída"); |
||
| 17 | |||
| 18 | private String tipo; |
||
| 19 | private String descricao; |
||
| 20 | |||
| 21 | private TipoSituacaoTurma(String tipo, String descricao) { |
||
| 22 | this.tipo = tipo; |
||
| 23 | this.descricao = descricao; |
||
| 24 | } |
||
| 25 | |||
| 26 | public String getValor() { |
||
| 27 | return tipo; |
||
| 28 | } |
||
| 29 | |||
| 30 | public String getDescricao() { |
||
| 31 | return descricao; |
||
| 32 | } |
||
| 33 | |||
| 34 | public static TipoSituacaoTurma parse(String tipo) { |
||
| 35 | for (TipoSituacaoTurma item : TipoSituacaoTurma.values()) { |
||
| 36 | if (item.getValor().equals(tipo)) { |
||
| 37 | return item; |
||
| 38 | } |
||
| 39 | } |
||
| 40 | return null; |
||
| 41 | } |
||
| 42 | |||
| 43 | public static TipoSituacaoTurma parse(TurmaDTO turmaDTO) { |
||
| 44 | if(VerificadorUtil.naoEstaNulo(turmaDTO)){ |
||
| 45 | if(isDataAtualPosteriorAhDataInformada(turmaDTO.getDataFinal())){ |
||
| 46 | return TipoSituacaoTurma.CONCLUIDA; |
||
| 47 | } |
||
| 48 | else if((isDataAtualPosteriorAhDataInformada(turmaDTO.getDataInicial()) || |
||
| 49 | isDataAtualIgualAhDataInformada(turmaDTO.getDataInicial())) && |
||
| 50 | (isDataAtualIgualAhDataInformada(turmaDTO.getDataFinal()) || |
||
| 51 | isDataAtualAnteriorAhDataInformada(turmaDTO.getDataFinal()))){ |
||
| 52 | return TipoSituacaoTurma.EM_ANDAMENTO; |
||
| 53 | } |
||
| 54 | else if(isDataAtualAnteriorAhDataInformada(turmaDTO.getDataInicial())){ |
||
| 55 | return TipoSituacaoTurma.NAO_INICIADA; |
||
| 56 | } |
||
| 57 | } |
||
| 58 | return null; |
||
| 59 | } |
||
| 60 | |||
| 61 | private static boolean isDataAtualAnteriorAhDataInformada(Date data) { |
||
| 62 | return DataUtils.getDataAtual().before(data); |
||
| 63 | } |
||
| 64 | |||
| 65 | private static boolean isDataAtualPosteriorAhDataInformada(Date data) { |
||
| 66 | return DataUtils.getDataAtual().after(data); |
||
| 67 | } |
||
| 68 | |||
| 69 | private static boolean isDataAtualIgualAhDataInformada(Date data) { |
||
| 70 | return DataUtils.getDataAtual().equals(data); |
||
| 71 | } |
||
| 72 | |||
| 73 | public static String recuperarTipoSituacao(Turma turma, Date dataAtual){ |
||
| 74 | Set<TurmaPeriodo> periodos = turma.getPeriodos(); |
||
| 75 | Date menorDataInicial = null; |
||
| 76 | Date maiorDataFinal = null; |
||
| 77 | for (TurmaPeriodo turmaPeriodo : periodos) { |
||
| 78 | Date dataInicial = turmaPeriodo.getDataInicial(); |
||
| 79 | Date dataFinal = turmaPeriodo.getDataFinal(); |
||
| 80 | |||
| 81 | if(VerificadorUtil.estaNulo(menorDataInicial) && VerificadorUtil.estaNulo(maiorDataFinal)){ |
||
| 82 | menorDataInicial = dataInicial; |
||
| 83 | maiorDataFinal = dataFinal; |
||
| 84 | } |
||
| 85 | |||
| 86 | if (dataInicial.before(menorDataInicial)) { |
||
| 87 | menorDataInicial = dataInicial; |
||
| 88 | } |
||
| 89 | |||
| 90 | if (dataFinal.after(maiorDataFinal)) { |
||
| 91 | maiorDataFinal = dataFinal; |
||
| 92 | } |
||
| 93 | } |
||
| 94 | |||
| 95 | if (dataAtual.before(menorDataInicial)) { |
||
| 96 | return TipoSituacaoTurma.NAO_INICIADA.getDescricao(); |
||
| 97 | } |
||
| 98 | |||
| 99 | if ((dataAtual.equals(menorDataInicial) || dataAtual.after(menorDataInicial)) && (dataAtual.before(maiorDataFinal) || dataAtual.equals(maiorDataFinal))){ |
||
| 100 | return TipoSituacaoTurma.EM_ANDAMENTO.getDescricao(); |
||
| 101 | } |
||
| 102 | |||
| 103 | if (dataAtual.equals(maiorDataFinal) || dataAtual.after(maiorDataFinal)) { |
||
| 104 | return TipoSituacaoTurma.CONCLUIDA.getDescricao(); |
||
| 105 | } |
||
| 106 | |||
| 107 | return TipoSituacaoTurma.CONCLUIDA.getDescricao(); |
||
| 108 | } |
||
| 109 | |||
| 110 | // Situação da Turma |
||
| 111 | // Valores possíveis: Não Iniciada, Em Andamento e Concluída. |
||
| 112 | // |
||
| 113 | // Não Iniciada: Data atual for inferior a data e hora inicial dos períodos. |
||
| 114 | // Em Andamento: Data atual estiver entre a data e hora de início e fim dos períodos. |
||
| 115 | // Concluída: Data atual for superior a data e hora final dos períodos. |
||
| 116 | |||
| 117 | } |