Subversion Repositories bacoAlunos

Rev

Rev 1455 | Rev 1457 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1455 Rev 1456
1
package pt.estgp.estgweb.services.questionarios;
1
package pt.estgp.estgweb.services.questionarios;
2
 
2
 
3
import org.apache.log4j.Logger;
3
import org.apache.log4j.Logger;
4
import pt.estgp.estgweb.Globals;
4
import pt.estgp.estgweb.Globals;
5
import pt.estgp.estgweb.domain.*;
5
import pt.estgp.estgweb.domain.*;
6
import pt.estgp.estgweb.domain.dao.DaoFactory;
6
import pt.estgp.estgweb.domain.dao.DaoFactory;
7
import pt.estgp.estgweb.domain.dao.impl.AnnouncementDaoImpl;
7
import pt.estgp.estgweb.domain.dao.impl.AnnouncementDaoImpl;
8
import pt.estgp.estgweb.domain.views.QuestionarioView;
8
import pt.estgp.estgweb.domain.views.QuestionarioView;
9
import pt.estgp.estgweb.services.email.EMAILJob;
9
import pt.estgp.estgweb.services.email.EMAILJob;
10
import pt.estgp.estgweb.services.email.EMAILJobPersonalizedCertificated;
10
import pt.estgp.estgweb.services.email.EMAILJobPersonalizedCertificated;
11
import pt.estgp.estgweb.services.email.SendEmailService;
11
import pt.estgp.estgweb.services.email.SendEmailService;
12
import pt.estgp.estgweb.services.jobs.JobScheduleService;
12
import pt.estgp.estgweb.services.jobs.JobScheduleService;
-
 
13
import pt.estgp.estgweb.utils.ConfigProperties;
13
import pt.estgp.estgweb.utils.Email;
14
import pt.estgp.estgweb.utils.Email;
14
import pt.estgp.estgweb.utils.EmailPersonalizedCertificated;
15
import pt.estgp.estgweb.utils.EmailPersonalizedCertificated;
15
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
16
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
16
import pt.utl.ist.berserk.logic.serviceManager.IService;
17
import pt.utl.ist.berserk.logic.serviceManager.IService;
17
 
18
 
18
import java.util.*;
19
import java.util.*;
19
 
20
 
20
/**
21
/**
21
 * Created by jorgemachado on 21/03/16.
22
 * Created by jorgemachado on 21/03/16.
22
 */
23
 */
23
public class QuestionariosService implements IService
24
public class QuestionariosService implements IService
24
{
25
{
25
 
26
 
26
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(QuestionariosService.class);
27
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(QuestionariosService.class);
27
 
28
 
28
    //NEW QUESTIONARIOS COME BY THIS SERVICE
29
    //NEW QUESTIONARIOS COME BY THIS SERVICE
29
    public QuestionarioImpl newQuestionarioForm(QuestionarioImpl qform, UserSession userSession) throws NotAuthorizedException
30
    public QuestionarioImpl newQuestionarioForm(QuestionarioImpl qform, UserSession userSession) throws NotAuthorizedException
30
    {
31
    {
31
        if(qform.getQuestionarioHistoryDrive().getId() > 0)
32
        if(qform.getQuestionarioHistoryDrive().getId() > 0)
32
        {
33
        {
33
            QuestionarioHistoryDrive hist = DaoFactory.getQuestionarioHistoryDriveDaoImpl().load(qform.getQuestionarioHistoryDrive().getId());
34
            QuestionarioHistoryDrive hist = DaoFactory.getQuestionarioHistoryDriveDaoImpl().load(qform.getQuestionarioHistoryDrive().getId());
34
            qform.setQuestionarioHistoryDrive(hist);
35
            qform.setQuestionarioHistoryDrive(hist);
35
        }
36
        }
36
        else
37
        else
37
        {
38
        {
38
            qform.setQuestionarioHistoryDrive(null);
39
            qform.setQuestionarioHistoryDrive(null);
39
        }
40
        }
40
        DaoFactory.getQuestionarioDaoImpl().save(qform);
41
        DaoFactory.getQuestionarioDaoImpl().save(qform);
41
        return qform;
42
        return qform;
42
    }
43
    }
43
    public QuestionarioImpl saveQuestionarioForm(QuestionarioImpl qform, UserSession userSession, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
44
    public QuestionarioImpl saveQuestionarioForm(QuestionarioImpl qform, UserSession userSession, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
44
        if(qform.getQuestionarioHistoryDrive().getId() > 0)
45
        if(qform.getQuestionarioHistoryDrive().getId() > 0)
45
        {
46
        {
46
            QuestionarioHistoryDrive hist = DaoFactory.getQuestionarioHistoryDriveDaoImpl().load(qform.getQuestionarioHistoryDrive().getId());
47
            QuestionarioHistoryDrive hist = DaoFactory.getQuestionarioHistoryDriveDaoImpl().load(qform.getQuestionarioHistoryDrive().getId());
47
            qform.setQuestionarioHistoryDrive(hist);
48
            qform.setQuestionarioHistoryDrive(hist);
48
        }
49
        }
49
        else
50
        else
50
        {
51
        {
51
            qform.setQuestionarioHistoryDrive(null);
52
            qform.setQuestionarioHistoryDrive(null);
52
        }
53
        }
53
        Questionario qPersistent = questionarioCleared;
54
        Questionario qPersistent = questionarioCleared;
54
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name()))
55
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name()))
55
        {
56
        {
56
            QuestionarioView qv = new QuestionarioView(qform);
57
            QuestionarioView qv = new QuestionarioView(qform);
57
            if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_ANSWER_PROCESSOR.name()))
58
            if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_ANSWER_PROCESSOR.name()))
58
            {
59
            {
59
                qv.persistAnswersProcessor(qPersistent);
60
                qv.persistAnswersProcessor(qPersistent);
60
            }
61
            }
61
            qv.persistViewInObjectForm(qPersistent);
62
            qv.persistViewInObjectForm(qPersistent);
62
            qPersistent.setQuestionarioHistoryDrive(qform.getQuestionarioHistoryDrive());
63
            qPersistent.setQuestionarioHistoryDrive(qform.getQuestionarioHistoryDrive());
63
        }
64
        }
64
        else
65
        else
65
            throw new NotAuthorizedException("Não pode alterar o formulário porque o questionário está num estado avançado");
66
            throw new NotAuthorizedException("Não pode alterar o formulário porque o questionário está num estado avançado");
66
 
67
 
67
        return loadInit(questionarioCleared);
68
        return loadInit(questionarioCleared);
68
    }
69
    }
69
 
70
 
70
    public QuestionarioImpl setAssignDetailsState(long id, UserSession userSession, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
71
    public QuestionarioImpl setAssignDetailsState(long id, UserSession userSession, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
71
 
72
 
72
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_STATE_ASSIGNATION_DETAILS.name()))
73
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_STATE_ASSIGNATION_DETAILS.name()))
73
        {
74
        {
74
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNATION_DETAILS);
75
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNATION_DETAILS);
75
            questionarioCleared.getiAnswersProcessorClass().startAfetacoes(questionarioCleared);
76
            questionarioCleared.getiAnswersProcessorClass().startAfetacoes(questionarioCleared);
76
        }
77
        }
77
        else
78
        else
78
            throw new NotAuthorizedException("Não alterar o questionário para este estado neste momento");
79
            throw new NotAuthorizedException("Não alterar o questionário para este estado neste momento");
79
 
80
 
80
        return loadInit(questionarioCleared);
81
        return loadInit(questionarioCleared);
81
    }
82
    }
82
    /**
83
    /**
83
     * Questionario comes already cleared from Filter
84
     * Questionario comes already cleared from Filter
84
     * @param questionarioId
85
     * @param questionarioId
85
     * @param questionarioCleared
86
     * @param questionarioCleared
86
     * @param userSession
87
     * @param userSession
87
     * @return
88
     * @return
88
     */
89
     */
89
    public QuestionarioImpl loadQuestionario(long questionarioId,UserSession userSession,QuestionarioImpl questionarioCleared)
90
    public QuestionarioImpl loadQuestionario(long questionarioId,UserSession userSession,QuestionarioImpl questionarioCleared)
90
    {
91
    {
91
        return loadInit(questionarioCleared);
92
        return loadInit(questionarioCleared);
92
    }
93
    }
93
 
94
 
94
    /**
95
    /**
95
     * just to load proxys
96
     * just to load proxys
96
     * @param questionarioCleared
97
     * @param questionarioCleared
97
     * @return
98
     * @return
98
     */
99
     */
99
    private QuestionarioImpl loadInit(QuestionarioImpl questionarioCleared)
100
    private QuestionarioImpl loadInit(QuestionarioImpl questionarioCleared)
100
    {
101
    {
101
        questionarioCleared.getDescription();//to load proxy just in case
102
        questionarioCleared.getDescription();//to load proxy just in case
102
        if(questionarioCleared.getQuestionarioHistoryDrive() != null)
103
        if(questionarioCleared.getQuestionarioHistoryDrive() != null)
103
            questionarioCleared.getQuestionarioHistoryDrive().getCodeName();
104
            questionarioCleared.getQuestionarioHistoryDrive().getCodeName();
104
        IAnswersProcessor processor = questionarioCleared.getiAnswersProcessorClass();
105
        IAnswersProcessor processor = questionarioCleared.getiAnswersProcessorClass();
105
        processor.initQuestionarioAfetacoesVariables(questionarioCleared);
106
        processor.initQuestionarioAfetacoesVariables(questionarioCleared);
106
        return questionarioCleared;
107
        return questionarioCleared;
107
    }
108
    }
108
 
109
 
109
    public void loadInit(List<QuestionarioImpl> questionarioCleared)
110
    public void loadInit(List<QuestionarioImpl> questionarioCleared)
110
    {
111
    {
111
        for(QuestionarioImpl q: questionarioCleared)
112
        for(QuestionarioImpl q: questionarioCleared)
112
        {
113
        {
113
            loadInit(q);
114
            loadInit(q);
114
        }
115
        }
115
    }
116
    }
116
 
117
 
117
 
118
 
118
 
119
 
119
    public void deleteQuestionario(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
120
    public void deleteQuestionario(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
120
    {
121
    {
121
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_DELETE.name()))
122
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_DELETE.name()))
122
        {
123
        {
123
            DaoFactory.getQuestionarioDaoImpl().delete(questionarioCleared);
124
            DaoFactory.getQuestionarioDaoImpl().delete(questionarioCleared);
124
        }
125
        }
125
    }
126
    }
126
 
127
 
127
    /**
128
    /**
128
     * Passa para o estado ASSIGNED_ANSWERS
129
     * Passa para o estado ASSIGNED_ANSWERS
129
     * @param questionarioId
130
     * @param questionarioId
130
     * @param userSession
131
     * @param userSession
131
     * @param questionarioCleared
132
     * @param questionarioCleared
132
     * @return
133
     * @return
133
     */
134
     */
134
    public QuestionarioImpl putAssignedAnswers(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
135
    public QuestionarioImpl putAssignedAnswers(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
135
    {
136
    {
136
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_PUT_ANSWERS_ASSIGNED.toString()))
137
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_PUT_ANSWERS_ASSIGNED.toString()))
137
        {
138
        {
138
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS);
139
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS);
139
        }
140
        }
140
        return questionarioCleared;
141
        return questionarioCleared;
141
    }
142
    }
142
 
143
 
143
    public QuestionarioImpl revertAssignationDetails(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
144
    public QuestionarioImpl revertAssignationDetails(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
144
    {
145
    {
145
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_TO_ASSIGNATION_DETAILS.toString()))
146
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_TO_ASSIGNATION_DETAILS.toString()))
146
        {
147
        {
147
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNATION_DETAILS);
148
            questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNATION_DETAILS);
148
        }
149
        }
149
        return questionarioCleared;
150
        return questionarioCleared;
150
    }
151
    }
151
 
152
 
152
    public QuestionarioImpl startProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
153
    public QuestionarioImpl startProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
153
    {
154
    {
154
 
155
 
155
        if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_PROCESSEMENT.toString()))
156
        if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_PROCESSEMENT.toString()))
156
        {
157
        {
157
            if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS)
158
            if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS)
158
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING);
159
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING);
159
            else if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.STOPED_WITH_ANSWERS)
160
            else if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.STOPED_WITH_ANSWERS)
160
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS);
161
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS);
161
        }
162
        }
162
        return questionarioCleared;
163
        return questionarioCleared;
163
    }
164
    }
164
 
165
 
165
    public QuestionarioImpl stopProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
166
    public QuestionarioImpl stopProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
166
    {
167
    {
167
 
168
 
168
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.toString()))
169
        if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.toString()))
169
        {
170
        {
170
            if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING)
171
            if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING)
171
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS);
172
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.ASSIGNED_ANSWERS);
172
            else if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS)
173
            else if(questionarioCleared.getStateEnum() == QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS)
173
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.STOPED_WITH_ANSWERS);
174
                questionarioCleared.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.STOPED_WITH_ANSWERS);
174
        }
175
        }
175
        return questionarioCleared;
176
        return questionarioCleared;
176
    }
177
    }
177
 
178
 
178
    public void salvarResposta(QuestionarioResposta resposta,1.5.0/docs/api/java/lang/Long.html">Long alunoRequisitadoId,UserSession userSession) throws NotAuthorizedException {
179
    public void salvarResposta(QuestionarioResposta resposta,1.5.0/docs/api/java/lang/Long.html">Long alunoRequisitadoId,UserSession userSession) throws NotAuthorizedException {
179
        Questionario q = DaoFactory.getQuestionarioDaoImpl().load(resposta.getQuestionario().getId());
180
        Questionario q = DaoFactory.getQuestionarioDaoImpl().load(resposta.getQuestionario().getId());
180
        QuestionarioImpl questionario = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().narrow(q);
181
        QuestionarioImpl questionario = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().narrow(q);
181
        QuestionarioPedagogicoAlunoRequisitado alunoRequisitado = DaoFactory.getQuestionarioPedagogicoAlunoRequisitadoDaoImpl().load(alunoRequisitadoId);
182
        QuestionarioPedagogicoAlunoRequisitado alunoRequisitado = DaoFactory.getQuestionarioPedagogicoAlunoRequisitadoDaoImpl().load(alunoRequisitadoId);
182
        if(questionario.getStateEnum() != QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING && questionario.getStateEnum() != QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS )
183
        if(questionario.getStateEnum() != QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING && questionario.getStateEnum() != QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS )
183
        {
184
        {
184
            throw new NotAuthorizedException("O questionário interrompido por razões administrativas, por favor tente mais tarde");
185
            throw new NotAuthorizedException("O questionário interrompido por razões administrativas, por favor tente mais tarde");
185
        }
186
        }
186
        if(!((alunoRequisitado.getRespostaRequisitada().getQuestionario().getId() == questionario.getId())
187
        if(!((alunoRequisitado.getRespostaRequisitada().getQuestionario().getId() == questionario.getId())
187
                &&
188
                &&
188
                alunoRequisitado.getRespostaRequisitada().getResposta() == null
189
                alunoRequisitado.getRespostaRequisitada().getResposta() == null
189
                &&
190
                &&
190
                alunoRequisitado.getAluno().getId() == userSession.getUser().getId()))
191
                alunoRequisitado.getAluno().getId() == userSession.getUser().getId()))
191
        {
192
        {
192
            throw new NotAuthorizedException("Não está autorizado a submeter esta resposta.");
193
            throw new NotAuthorizedException("Não está autorizado a submeter esta resposta.");
193
        }
194
        }
194
 
195
 
195
        resposta.setId(0);
196
        resposta.setId(0);
196
        resposta.setQuestionario(questionario);
197
        resposta.setQuestionario(questionario);
197
        resposta.setUser(alunoRequisitado.getAluno());
198
        resposta.setUser(alunoRequisitado.getAluno());
198
        alunoRequisitado.getRespostaRequisitada().setResposta(resposta);
199
        alunoRequisitado.getRespostaRequisitada().setResposta(resposta);
199
        DaoFactory.getQuestionarioRespostaDaoImpl().save(resposta);
200
        DaoFactory.getQuestionarioRespostaDaoImpl().save(resposta);
200
        questionario.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS);
201
        questionario.setStateClass(QuestionarioImpl.1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/State.html">State.PROCESSING_WITH_ANSWERS);
201
    }
202
    }
202
 
203
 
203
 
204
 
204
    SendEmailService sendEmailService = new SendEmailService();
205
    SendEmailService sendEmailService = new SendEmailService();
205
    public int sendMessage(boolean onlyNotAnswered,1.5.0/docs/api/java/lang/Long.html">Long id,1.5.0/docs/api/java/lang/String.html">String msg,1.5.0/docs/api/java/lang/String.html">String emailFrom,1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject,UserSession userSession)
206
    public int sendMessage(boolean onlyNotAnswered,1.5.0/docs/api/java/lang/Long.html">Long id,1.5.0/docs/api/java/lang/String.html">String msg,1.5.0/docs/api/java/lang/String.html">String emailFrom,1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject,UserSession userSession)
206
    {
207
    {
207
        1.5.0/docs/api/java/lang/String.html">String source = "questionario message";
208
        1.5.0/docs/api/java/lang/String.html">String source = "questionario message";
208
        AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIds(id, onlyNotAnswered);
209
        AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIds(id, onlyNotAnswered);
209
 
210
 
210
        return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
211
        return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
211
    }
212
    }
212
 
213
 
213
    public int sendMessageCursoAfeto(boolean onlyNotAnswered,1.5.0/docs/api/java/lang/Long.html">Long id,1.5.0/docs/api/java/lang/String.html">String msg,1.5.0/docs/api/java/lang/String.html">String emailFrom,1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject,UserSession userSession)
214
    public int sendMessageCursoAfeto(boolean onlyNotAnswered,1.5.0/docs/api/java/lang/Long.html">Long id,1.5.0/docs/api/java/lang/String.html">String msg,1.5.0/docs/api/java/lang/String.html">String emailFrom,1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject,UserSession userSession)
214
    {
215
    {
215
        1.5.0/docs/api/java/lang/String.html">String source = "questionario curso message";
216
        1.5.0/docs/api/java/lang/String.html">String source = "questionario curso message";
216
        AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIdsPedagogico(onlyNotAnswered, id, 0);
217
        AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIdsPedagogico(onlyNotAnswered, id, 0);
217
        return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
218
        return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
218
    }
219
    }
219
    public int sendMessageUnidadeAfeta(boolean onlyNotAnswered,1.5.0/docs/api/java/lang/Long.html">Long id,1.5.0/docs/api/java/lang/String.html">String msg,1.5.0/docs/api/java/lang/String.html">String emailFrom,1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject,UserSession userSession)
220
    public int sendMessageUnidadeAfeta(boolean onlyNotAnswered,1.5.0/docs/api/java/lang/Long.html">Long id,1.5.0/docs/api/java/lang/String.html">String msg,1.5.0/docs/api/java/lang/String.html">String emailFrom,1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject,UserSession userSession)
220
    {
221
    {
221
        1.5.0/docs/api/java/lang/String.html">String source = "questionario unidade message";
222
        1.5.0/docs/api/java/lang/String.html">String source = "questionario unidade message";
222
        AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIdsPedagogico(onlyNotAnswered, 0, id);
223
        AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIdsPedagogico(onlyNotAnswered, 0, id);
223
        return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
224
        return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
224
    }
225
    }
225
 
226
 
226
 
227
 
227
    private int sendEmails(1.5.0/docs/api/java/lang/Long.html">Long id, 1.5.0/docs/api/java/lang/String.html">String msg, 1.5.0/docs/api/java/lang/String.html">String emailFrom, 1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject, UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String source, AnnouncementDaoImpl.FindUsersIdResult result) {
228
    private int sendEmails(1.5.0/docs/api/java/lang/Long.html">Long id, 1.5.0/docs/api/java/lang/String.html">String msg, 1.5.0/docs/api/java/lang/String.html">String emailFrom, 1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject, UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String source, AnnouncementDaoImpl.FindUsersIdResult result) {
228
        List<Long> usersToConsume = result.userIds;
229
        List<Long> usersToConsume = result.userIds;
229
 
230
 
230
 
231
 
231
        logger.info("Scheduling mail jobs to " + result.users + " users: " + usersToConsume.size() + " recipients");
232
        logger.info("Scheduling mail jobs to " + result.users + " users: " + usersToConsume.size() + " recipients");
232
        //while(usersToConsume.size() > 0)
233
        //while(usersToConsume.size() > 0)
233
        //{
234
        //{
234
        //    Iterator<String> iter = usersToConsume.iterator();
235
        //    Iterator<String> iter = usersToConsume.iterator();
235
        //    List<String> usersToJob = new ArrayList<String>();
236
        //    List<String> usersToJob = new ArrayList<String>();
236
        //    int contador = 0;
237
        //    int contador = 0;
237
        //    while(iter.hasNext() && contador < 20)
238
        //    while(iter.hasNext() && contador < 20)
238
        //    {
239
        //    {
239
        //        usersToJob.add(iter.next());
240
        //        usersToJob.add(iter.next());
240
        //        iter.remove();
241
        //        iter.remove();
241
        //        contador++;
242
        //        contador++;
242
        //    }
243
        //    }
243
 
244
 
244
        1.5.0/docs/api/java/lang/String.html">String suffix = Globals.SYSTEM_EMAIL_CERTIFICATED_HOME_PAGE;
245
        1.5.0/docs/api/java/lang/String.html">String suffix = Globals.SYSTEM_EMAIL_CERTIFICATED_HOME_PAGE;
245
        if(suffix.startsWith("/"))
246
        if(suffix.startsWith("/"))
246
            suffix = suffix.substring(1);
247
            suffix = suffix.substring(1);
247
        1.5.0/docs/api/java/lang/String.html">String url = Globals.SITE_URL.endsWith("/") ? Globals.SITE_URL + suffix : Globals.SITE_URL + "/" + suffix;
248
        1.5.0/docs/api/java/lang/String.html">String url = Globals.SITE_URL.endsWith("/") ? Globals.SITE_URL + suffix : Globals.SITE_URL + "/" + suffix;
248
 
249
 
249
        EmailPersonalizedCertificated e =  sendEmailService.getMessageEmailAdulteredFromEmailIppCertificated(emailFrom,
250
        EmailPersonalizedCertificated e =  sendEmailService.getMessageEmailAdulteredFromEmailIppCertificated(emailFrom,
250
                personFrom,
251
                personFrom,
251
                subject,
252
                subject,
252
                msg,
253
                msg,
253
                userSession.getUser(),
254
                userSession.getUser(),
254
                usersToConsume,
255
                usersToConsume,
255
                url);
256
                url);
256
 
257
 
257
        e.setHtml(true);
258
        e.setHtml(true);
258
        EMAILJobPersonalizedCertificated emailJob = new EMAILJobPersonalizedCertificated(e);
259
        EMAILJobPersonalizedCertificated emailJob = new EMAILJobPersonalizedCertificated(e);
259
        JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id +  ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject  ,userSession);
260
        JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id +  ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject  ,userSession);
260
        //}
261
        //}
261
        enviarComprovativoAoRemetente(id, msg, emailFrom, personFrom, subject, userSession, source,usersToConsume.size());
262
        enviarComprovativoAoRemetente(id, msg, emailFrom, personFrom, subject, userSession, source,usersToConsume.size());
-
 
263
        enviarComprovativoAAdministracao(id, msg, emailFrom, personFrom, subject, userSession, source,usersToConsume.size());
262
        return result.users;
264
        return result.users;
263
    }
265
    }
-
 
266
 
-
 
267
    private void enviarComprovativoAAdministracao(1.5.0/docs/api/java/lang/Long.html">Long id, 1.5.0/docs/api/java/lang/String.html">String msg, 1.5.0/docs/api/java/lang/String.html">String emailFrom, 1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject, UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String source,int sentTo)
-
 
268
    {
-
 
269
 
-
 
270
 
-
 
271
       Email e =  sendEmailService.getMessageEmailAdulteredFromEmailIpp(emailFrom,
-
 
272
                personFrom,
-
 
273
                subject + " (COMPROVATIVO PAE) ",
-
 
274
                "<u>Caros membros da administração este é um comprovativo de um email enviado pelo PAE pelo user: " + userSession.getUser().getName() + " - Este é um comprovativo do seu envio de mensagem a " + sentTo + " Alunos</u><br/><br/>" + msg,
-
 
275
               ConfigProperties.getListValuesByPrefix("admin.email"),
-
 
276
                userSession.getUser());
-
 
277
 
-
 
278
        e.setHtml(true);
-
 
279
        EMAILJob emailJob = new EMAILJob(e);
-
 
280
        JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id +  ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject  ,userSession);
-
 
281
    }
264
 
282
 
265
    private void enviarComprovativoAoRemetente(1.5.0/docs/api/java/lang/Long.html">Long id, 1.5.0/docs/api/java/lang/String.html">String msg, 1.5.0/docs/api/java/lang/String.html">String emailFrom, 1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject, UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String source,int sentTo)
283
    private void enviarComprovativoAoRemetente(1.5.0/docs/api/java/lang/Long.html">Long id, 1.5.0/docs/api/java/lang/String.html">String msg, 1.5.0/docs/api/java/lang/String.html">String emailFrom, 1.5.0/docs/api/java/lang/String.html">String personFrom, 1.5.0/docs/api/java/lang/String.html">String subject, UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String source,int sentTo)
266
    {
284
    {
267
        Map<String,String> emailsComprovativos = new HashMap<String, String>();
285
        Map<String,String> emailsComprovativos = new HashMap<String, String>();
268
        if(Email.validEmail(userSession.getUser().getEmail()))
286
        if(Email.validEmail(userSession.getUser().getEmail()))
269
            emailsComprovativos.put(userSession.getUser().getEmail(),"");
287
            emailsComprovativos.put(userSession.getUser().getEmail(),"");
270
        if(Email.validEmail(userSession.getUser().getOutEmail()))
288
        if(Email.validEmail(userSession.getUser().getOutEmail()))
271
            emailsComprovativos.put(userSession.getUser().getOutEmail(),"");
289
            emailsComprovativos.put(userSession.getUser().getOutEmail(),"");
272
        if(Email.validEmail(userSession.getUser().getPreferrefEmail()))
290
        if(Email.validEmail(userSession.getUser().getPreferrefEmail()))
273
            emailsComprovativos.put(userSession.getUser().getPreferrefEmail(),"");
291
            emailsComprovativos.put(userSession.getUser().getPreferrefEmail(),"");
274
        List<String> comprovativos = new ArrayList<String>();
292
        List<String> comprovativos = new ArrayList<String>();
275
        comprovativos.addAll(emailsComprovativos.keySet());
293
        comprovativos.addAll(emailsComprovativos.keySet());
276
        if(comprovativos.size() > 0)
294
        if(comprovativos.size() > 0)
277
        {
295
        {
278
            Email e =  sendEmailService.getMessageEmailAdulteredFromEmailIpp(emailFrom,
296
            Email e =  sendEmailService.getMessageEmailAdulteredFromEmailIpp(emailFrom,
279
                    personFrom,
297
                    personFrom,
280
                    subject + " (COMPROVATIVO PAE) ",
298
                    subject + " (COMPROVATIVO PAE) ",
281
                    "<u>Olá " + userSession.getUser().getName() + " - Este é um comprovativo do seu envio de mensagem a " + sentTo + " Alunos</u><br/><br/>" + msg,
299
                    "<u>Olá " + userSession.getUser().getName() + " - Este é um comprovativo do seu envio de mensagem a " + sentTo + " Alunos</u><br/><br/>" + msg,
282
                    comprovativos,
300
                    comprovativos,
283
                    userSession.getUser());
301
                    userSession.getUser());
284
 
302
 
285
            e.setHtml(true);
303
            e.setHtml(true);
286
            EMAILJob emailJob = new EMAILJob(e);
304
            EMAILJob emailJob = new EMAILJob(e);
287
            JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id +  ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject  ,userSession);
305
            JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id +  ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject  ,userSession);
288
        }
306
        }
289
    }
307
    }
290
 
308
 
291
 
309
 
292
}
310
}
293
 
311