Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 espaco 1
package br.gov.al.saude.rhd.web.managebean.sessao;
2
 
3
import java.io.Serializable;
4
import java.util.ArrayList;
5
import java.util.Collection;
6
import java.util.List;
7
 
8
import javax.faces.bean.ManagedBean;
9
 
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.context.annotation.Scope;
12
import org.springframework.security.core.Authentication;
13
import org.springframework.security.core.GrantedAuthority;
14
import org.springframework.security.core.context.SecurityContextHolder;
15
import org.springframework.stereotype.Component;
16
 
17
import br.gov.al.saude.framework.security.authentication.authorities.IndraGrantedAuthority;
18
import br.gov.al.saude.framework.security.authentication.entity.UserIndra;
19
import br.gov.al.saude.framework.security.context.ContextoSeguranca;
20
import br.gov.al.saude.framework.web.exception.VerificadorLancamentoException;
21
import br.gov.al.saude.framework.web.exception.VerificadorLancamentoException.CommandBean;
22
import br.gov.al.saude.framework.web.message.LancadorMensagem;
23
import br.gov.al.saude.rhd.constantes.ConstantesRhd;
24
import br.gov.al.saude.rhd.core.application.cronograma.CronogramaFacade;
25
import br.gov.al.saude.rhd.core.application.grupoavaliacao.GrupoAvaliacaoFacade;
26
import br.gov.al.saude.rhd.core.application.ordenador.Ordenador;
27
import br.gov.al.saude.rhd.core.application.ordenador.impl.OrdenadorImpl;
28
import br.gov.al.saude.rhd.core.application.servidor.ServidorFacade;
29
import br.gov.al.saude.rhd.model.Cronograma;
30
import br.gov.al.saude.rhd.model.CronogramaEtapa;
31
import br.gov.al.saude.rhd.model.view.ServidorView;
32
import br.gov.al.saude.sca.model.usuario.view.UsuarioView;
33
 
34
@Component
35
@ManagedBean
36
@Scope("session")
37
public class SessaoBean implements Serializable {
38
 
39
        private static final long serialVersionUID = 1L;
40
 
41
        private CronogramaFacade cronogramaFacade;
42
        private GrupoAvaliacaoFacade grupoAvaliacaoFacade;
43
        private ServidorFacade servidorFacade;
44
 
45
        private ContextoSeguranca contextoSeguranca;
46
 
47
        private ServidorView servidor;
48
 
49
        private Cronograma cronogramaCorrente;
50
        private Ordenador ordenador;
51
 
52
        private Boolean temPapelServidor;
53
        private Boolean temPapelCoordenador;
54
        private Boolean temPapelApoiador;
55
 
56
        @Autowired
57
        public SessaoBean(ServidorFacade servidorFacade, CronogramaFacade cronogramaFacade, GrupoAvaliacaoFacade grupoAvaliacaoFacade, ContextoSeguranca contextoSeguranca) {
58
                this.cronogramaFacade = cronogramaFacade;
59
                this.servidorFacade = servidorFacade;
60
                this.grupoAvaliacaoFacade = grupoAvaliacaoFacade;
61
                this.contextoSeguranca = contextoSeguranca;
62
                consultarCronogramaCorrente();
63
                servidor = getServidorUsuarioLogado();
64
                setPermissoes();
65
                ordenador = new OrdenadorImpl();
66
        }
67
 
68
        public Boolean getTemPapelServidor() {
69
                return temPapelServidor;
70
        }
71
 
72
        public void setTemPapelServidor(Boolean temPapelServidor) {
73
                this.temPapelServidor = temPapelServidor;
74
        }
75
 
76
        public Boolean getTemPapelCoordenador() {
77
                return temPapelCoordenador;
78
        }
79
 
80
        public void setTemPapelCoordenador(Boolean temPapelCoordenador) {
81
                this.temPapelCoordenador = temPapelCoordenador;
82
        }
83
 
84
        public Boolean getTemPapelApoiador() {
85
                return temPapelApoiador;
86
        }
87
 
88
        public void setTemPapelApoiador(Boolean temPapelApoiador) {
89
                this.temPapelApoiador = temPapelApoiador;
90
        }
91
 
92
        public Boolean temPapelServidor() {
93
                return getTemPapelServidor();
94
        }
95
        public Boolean temPapelCoordenador() {
96
                return getTemPapelCoordenador();
97
        }
98
        public Boolean temPapelApoiador() {
99
                return getTemPapelApoiador();
100
        }
101
 
102
        private void setPermissoes() {
103
                setTemPapelServidor(verificarPermissao(ConstantesRhd.ROLE_PAPEL_SERVIDOR));
104
                setTemPapelCoordenador(verificarPermissao(ConstantesRhd.ROLE_PAPEL_COORDENADOR));
105
                setTemPapelApoiador(verificarPermissao(ConstantesRhd.ROLE_PAPEL_APOIADOR));
106
        }
107
 
108
        public ServidorView getServidor() {
109
                return servidor;
110
        }
111
 
112
        public Cronograma getCronogramaCorrente() {
113
                return cronogramaCorrente;
114
        }
115
 
116
        public void setCronogramaCorrente(Cronograma cronogramaCorrente) {
117
                this.cronogramaCorrente = cronogramaCorrente;
118
        }
119
 
120
        public List<CronogramaEtapa> getListaCronogramaEtapas() {
121
                List<CronogramaEtapa> listaCronogramaEtapas = new ArrayList<CronogramaEtapa>();
122
                if (cronogramaCorrente != null) {
123
                        listaCronogramaEtapas = new ArrayList<CronogramaEtapa>(getCronogramaCorrente().getCronogramaEtapas());
124
                }
125
                return (List<CronogramaEtapa>) ordenador.ordenar(listaCronogramaEtapas);
126
        }
127
 
128
        public UsuarioView getUsuarioLogado() {
129
                return (UsuarioView) obterUserIndra().getPrincipal();
130
        }
131
 
132
        public UserIndra obterUserIndra() {
133
                Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
134
                UserIndra principal = (UserIndra) authentication.getPrincipal();
135
                return principal;
136
        }
137
 
138
        public Boolean verificarSeEtapaEstaVigente(Long sequencialEtapa) {
139
                for (CronogramaEtapa etapa : getEtapaCorrente()) {
140
                        if (etapa.getEtapa().getCodigo().equals(sequencialEtapa)) {
141
                                return true;
142
                        }
143
                }
144
                return false;
145
        }
146
 
147
        public List<CronogramaEtapa> getEtapaCorrente() {
148
                List<CronogramaEtapa> listaEtapasVigentes = new ArrayList<CronogramaEtapa>();
149
                if (getCronogramaCorrente() != null) {
150
                        for (CronogramaEtapa etapaCorrente : getCronogramaCorrente().getCronogramaEtapas()) {
151
                                if (etapaCorrente.isDataEstaVigente()) {
152
                                        listaEtapasVigentes.add(etapaCorrente);
153
                                }
154
                        }
155
                }
156
                return listaEtapasVigentes;
157
        }
158
 
159
        public Boolean verificarSeServidorEhAvaliadorIhGrupoAprovado() {
160
                return grupoAvaliacaoFacade.isAvaliadorDeGrupoAprovado(getUsuarioLogado().getSequencialPessoa(), getCronogramaCorrente());
161
        }
162
 
163
        public void consultarCronogramaCorrente() {
164
                cronogramaCorrente = cronogramaFacade.consultarCronogramaCorrente();
165
        }
166
 
167
        public void cadastrarCronograma(final Cronograma entidade) {
168
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
169
                        public void execute() {
170
                                cronogramaFacade.cadastrar(entidade);
171
                                consultarCronogramaCorrente();
172
                                LancadorMensagem.lancarSucessoRedirecionandoTela("Registro cadastrado com sucesso!", "/paginas/cronograma.xhtml");
173
                        }
174
                });
175
        }
176
 
177
        public void alterarCronograma(final Cronograma entidade, final List<CronogramaEtapa> listaCronogramaEtapas, final UserIndra usuarioLogado) {
178
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
179
                        @Override
180
                        public void execute() {
181
                                entidade.setCronogramaEtapas(null);
182
                                entidade.adicionarCronogramaEtapas(listaCronogramaEtapas);
183
                                cronogramaFacade.alterarCronogramaInserindoHistorico(entidade, (UsuarioView) usuarioLogado.getPrincipal());
184
                                consultarCronogramaCorrente();
185
                                LancadorMensagem.lancarSucessoRedirecionandoTela("Registro alterado com sucesso!", "/paginas/cronograma.xhtml");
186
                        }
187
                });
188
        }
189
 
190
        private Boolean verificarPermissao(String permissao) {
191
                GrantedAuthority authority = new IndraGrantedAuthority(permissao);
192
                Collection<? extends GrantedAuthority> authorities = contextoSeguranca.obterUserIndra().getAuthorities();
193
                return authorities.contains(authority);
194
        }
195
 
196
        private ServidorView getServidorUsuarioLogado() {
197
                try {
198
                        return servidorFacade.consultarDadosPessoais(getUsuarioLogado().getSequencialPessoa());
199
                } catch (Exception e) {}
200
                return null;
201
        }
202
 
203
}