Subversion Repositories bacoAlunos

Rev

Rev 1489 | Rev 1574 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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