Subversion Repositories bacoAlunos

Rev

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

Rev Author Line No. Line
29 jmachado 1
package pt.estgp.estgweb.services.email;
2
 
236 jmachado 3
import jomm.utils.TemplateUtils;
4
import org.apache.log4j.Logger;
5
import pt.estgp.estgweb.Globals;
929 jmachado 6
import pt.estgp.estgweb.domain.*;
7
import pt.estgp.estgweb.domain.enums.LangEnum;
8
import pt.estgp.estgweb.services.expceptions.ServiceException;
751 jmachado 9
import pt.estgp.estgweb.utils.ConfigProperties;
929 jmachado 10
import pt.estgp.estgweb.utils.Email;
358 jmachado 11
import pt.estgp.estgweb.web.utils.DatesUtils;
236 jmachado 12
import pt.utl.ist.berserk.logic.serviceManager.IService;
13
 
929 jmachado 14
import javax.mail.*;
15
import javax.mail.internet.InternetAddress;
236 jmachado 16
import javax.mail.internet.MimeMessage;
872 jmachado 17
import java.io.UnsupportedEncodingException;
929 jmachado 18
import java.text.MessageFormat;
236 jmachado 19
import java.util.ArrayList;
929 jmachado 20
import java.util.Date;
29 jmachado 21
import java.util.List;
236 jmachado 22
import java.util.Properties;
29 jmachado 23
 
24
/**
25
 * @author Jorge Machado
26
 * @date 20/Mar/2008
27
 * @time 18:31:00
28
 * @see pt.estgp.estgweb.services.email
29
 */
236 jmachado 30
public class SendEmailService implements IService
29 jmachado 31
{
236 jmachado 32
    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(SendEmailService.class);
33
 
34
    private static final 1.5.0/docs/api/java/lang/String.html">String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE;
35
 
36
    public void sendEmail(Email email) throws ServiceException
29 jmachado 37
    {
236 jmachado 38
        try{
39
 
40
            // Set up properties for mail session
41
            1.5.0/docs/api/java/util/Properties.html">Properties props = 1.5.0/docs/api/java/lang/System.html">System.getProperties();
42
            props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
929 jmachado 43
            final 1.5.0/docs/api/java/lang/String.html">String username = Globals.EMAIL_SERVER_USERNAME;
44
            final 1.5.0/docs/api/java/lang/String.html">String password = Globals.EMAIL_SERVER_PASSWORD;
45
            javax.mail.1.5.0/docs/api/java/net/Authenticator.html">Authenticator authenticator = null;
46
            if(Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("TLS")==0)
47
            {
48
                props.put("mail.smtp.auth", "true");
49
                props.put("mail.smtp.starttls.enable", "true");
50
                props.put("mail.smtp.port", ""+ Globals.EMAIL_SERVER_SECURITY_TLS);
51
                authenticator = new javax.mail.1.5.0/docs/api/java/net/Authenticator.html">Authenticator() {
52
                    protected 1.5.0/docs/api/java/net/PasswordAuthentication.html">PasswordAuthentication getPasswordAuthentication() {
53
                        return new 1.5.0/docs/api/java/net/PasswordAuthentication.html">PasswordAuthentication(username, password);
54
                    }
55
                };
56
            }
57
            else if(Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("SSL")==0)
58
            {
59
                props.put("mail.smtp.socketFactory.port", Globals.EMAIL_SERVER_SECURITY_SSL);
60
                props.put("mail.smtp.socketFactory.class",
61
                        "javax.net.ssl.SSLSocketFactory");
62
                props.put("mail.smtp.auth", "true");
63
                props.put("mail.smtp.port", Globals.EMAIL_SERVER_SECURITY_SSL);
64
                authenticator = new javax.mail.1.5.0/docs/api/java/net/Authenticator.html">Authenticator() {
65
                    protected 1.5.0/docs/api/java/net/PasswordAuthentication.html">PasswordAuthentication getPasswordAuthentication() {
66
                        return new 1.5.0/docs/api/java/net/PasswordAuthentication.html">PasswordAuthentication(username,password);
67
                    }
68
                };
69
            }
70
            else
71
            {
236 jmachado 72
 
929 jmachado 73
            }
74
 
75
 
76
 
77
 
78
 
79
 
236 jmachado 80
            // Get session
930 jmachado 81
            Session session = Session.getDefaultInstance(props, authenticator);
933 jmachado 82
            session.setDebug(true);
83
            session.setDebugOut(1.5.0/docs/api/java/lang/System.html">System.out);
236 jmachado 84
 
85
            // Create message
86
            MimeMessage message = new MimeMessage(session);
87
            // Set the recipients of the message
298 jmachado 88
            boolean valid = false;
89
            for (1.5.0/docs/api/java/lang/String.html">String recipient : email.getRecipients())
90
            {
91
                if(Email.validEmail(recipient))
92
                {
93
                    valid=true;
419 jmachado 94
                    message.addRecipient(email.getType(),new InternetAddress(recipient));
811 jmachado 95
                    logger.info("Adding recipient to transport:"+recipient);
298 jmachado 96
                }
236 jmachado 97
            }
298 jmachado 98
            if(valid)
99
            {
811 jmachado 100
 
298 jmachado 101
                1.5.0/docs/api/java/lang/String.html">String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + email.getEmailTemplateName());
102
                // Format the mail message
936 jmachado 103
                1.5.0/docs/api/java/lang/String.html">String fullMessage = 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(content, email.getArguments().toArray());
236 jmachado 104
 
935 jmachado 105
 
106
 
931 jmachado 107
                logger.info("FROM:" + email.getFrom() + " but using: " + Globals.SYSTEM_EMAIL_BOX);
932 jmachado 108
                //if(email.getFromName() != null)
872 jmachado 109
                    try {
934 jmachado 110
                        message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX,Globals.SYSTEM_EMAIL_BOX));
872 jmachado 111
                    } catch (1.5.0/docs/api/java/io/UnsupportedEncodingException.html">UnsupportedEncodingException e) {
112
                        logger.error(e,e);
113
                        message.setFrom(new InternetAddress(email.getFrom()));
114
                    }
932 jmachado 115
                //else
116
                //    message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX));
935 jmachado 117
                message.setSubject(email.getSubject() + " - não responda para este endereço");
936 jmachado 118
 
119
                if(email.isHtml())
120
                {
121
 
992 jmachado 122
                    fullMessage += email.getFrom() != null && email.getFrom().length()>0 && !email.getFrom().equals(Globals.SYSTEM_EMAIL_BOX) ?  "<br/><br/>Responda para " + email.getFrom() : "<br/><br/>Por favor não responda a este email";
936 jmachado 123
                    fullMessage += " <br/> <br/> <h5> Mensagem Segura - enviada através da Google Apps Api através de baco 2015 </h5>";
124
 
125
                }
126
                else
127
                {
992 jmachado 128
                    fullMessage += email.getFrom() != null && email.getFrom().length()>0 && !email.getFrom().equals(Globals.SYSTEM_EMAIL_BOX) ? "\n\nResponda para " + email.getFrom() : "\n\nPor favor não responda a este email";
936 jmachado 129
                    fullMessage += " \n\n Mensagem Segura - enviada através da Google Apps Api através de baco 2015";
130
                }
131
 
492 jmachado 132
                message.setText(fullMessage,"utf-8");
236 jmachado 133
 
490 jmachado 134
 
512 jmachado 135
                if(email.isHtml())
935 jmachado 136
                {
512 jmachado 137
                    message.setHeader("Content-Type","text/html; charset=\"utf-8\"");
935 jmachado 138
                }
512 jmachado 139
                else
935 jmachado 140
                {
512 jmachado 141
                    message.setHeader("Content-Type","text/plain; charset=\"utf-8\"");
935 jmachado 142
                }
490 jmachado 143
                message.setHeader("Content-Transfer-Encoding", "quoted-printable");
811 jmachado 144
                logger.info("Sending email to transport:"+fullMessage);
492 jmachado 145
 
811 jmachado 146
 
933 jmachado 147
 
298 jmachado 148
                Transport.send(message);
149
            }
236 jmachado 150
        }
151
        catch(MessagingException e)
152
        {
153
            logger.error(e,e);
154
            throw new ServiceException(e.toString());
155
        }
29 jmachado 156
    }
236 jmachado 157
 
158
    public Email getSendUrlToFriendEmail(1.5.0/docs/api/java/lang/String.html">String url, 1.5.0/docs/api/java/lang/String.html">String from, LangEnum langEnum, List<String> recipients)
159
    {
160
        List<String> arguments = new ArrayList<String>();
161
        arguments.add(from);
162
        arguments.add(url);
163
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
164
        1.5.0/docs/api/java/lang/String.html">String template;
165
 
166
        if(langEnum == LangEnum.PORTUGUESE)
167
        {
168
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_PT;
237 jmachado 169
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_SUBJECT_PT;
236 jmachado 170
        }
171
        else
172
        {
173
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_EN;
237 jmachado 174
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_SUBJECT_EN;
236 jmachado 175
        }
176
 
177
        1.5.0/docs/api/java/lang/String.html">String subject = java.text.1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(subjectTxt,new 1.5.0/docs/api/java/lang/String.html">String[]{from});
178
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
179
    }
180
 
181
    public boolean sendUrlToFriend(1.5.0/docs/api/java/lang/String.html">String url, 1.5.0/docs/api/java/lang/String.html">String from, LangEnum langEnum, List<String> recipients)
182
    {
183
        try
184
        {
185
            sendEmail(getSendUrlToFriendEmail(url,from,langEnum,recipients));
186
            return true;
187
        }
188
        catch (ServiceException e)
189
        {
190
            return false;
191
        }
192
    }
193
 
237 jmachado 194
    public boolean sendCourseUnitAnnouncement(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
195
    {
196
        try
197
        {
198
            sendEmail(getCourseUnitAnnouncementEmail(announcement,langEnum,from,users));
199
            return true;
200
        }
201
        catch (ServiceException e)
202
        {
203
            return false;
204
        }
205
    }
236 jmachado 206
 
1089 jmachado 207
    public static class SendTo
512 jmachado 208
    {
1089 jmachado 209
        public 1.5.0/docs/api/java/lang/String.html">String name;
210
        public 1.5.0/docs/api/java/lang/String.html">String email;
211
        public 1.5.0/docs/api/java/lang/String.html">String outEmail;
212
    }
213
 
214
    public Email getMessageEmail(1.5.0/docs/api/java/lang/String.html">String from, 1.5.0/docs/api/java/lang/String.html">String subject,1.5.0/docs/api/java/lang/String.html">String text, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String target, List<String> emails, User user)
215
    {
512 jmachado 216
//        # 0 : From
217
//        # 1 : Subject
218
//        # 2 : Text
219
//        # 3 : person
220
//        # 4 : target
221
        List<String> arguments = new ArrayList<String>();
222
        arguments.add(from);
223
        arguments.add(subject);
224
        arguments.add(text);
225
        arguments.add(user.getName());
226
        arguments.add(target);
227
 
228
        1.5.0/docs/api/java/lang/String.html">String template;
229
 
230
        if(langEnum == LangEnum.PORTUGUESE)
231
        {
232
            template = Globals.EMAIL_MESSAGE_TEMPLATE_PT;
233
        }
234
        else
235
        {
236
            template = Globals.EMAIL_MESSAGE_TEMPLATE_EN;
237
        }
238
 
239
        List<String> recipients = new ArrayList<String>();
1089 jmachado 240
        for(1.5.0/docs/api/java/lang/String.html">String e: emails)
241
        {
242
            if(Email.validEmail(e))
243
                recipients.add(e);
244
        }
245
        logger.info("subject: " + subject);
246
        logger.info("user: " + user.getEmail());
247
        logger.info("template: " + template);
248
        logger.info("arguments:");
249
        for(1.5.0/docs/api/java/lang/String.html">String arg: arguments)
250
            logger.info(arg);
251
        logger.info("recipients:");
252
        for(1.5.0/docs/api/java/lang/String.html">String rec: recipients)
253
            logger.info(rec);
254
        logger.info("arguments end");
255
        Email email = new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC);
256
        email.setFromName(from + " (ESTG)");
257
        return email;
258
    }
259
 
260
    public Email getMessageEmailOld(1.5.0/docs/api/java/lang/String.html">String from, 1.5.0/docs/api/java/lang/String.html">String subject,1.5.0/docs/api/java/lang/String.html">String text, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String target, List<User> users, User user)
261
    {
262
//        # 0 : From
263
//        # 1 : Subject
264
//        # 2 : Text
265
//        # 3 : person
266
//        # 4 : target
267
        List<String> arguments = new ArrayList<String>();
268
        arguments.add(from);
269
        arguments.add(subject);
270
        arguments.add(text);
271
        arguments.add(user.getName());
272
        arguments.add(target);
273
 
274
        1.5.0/docs/api/java/lang/String.html">String template;
275
 
276
        if(langEnum == LangEnum.PORTUGUESE)
277
        {
278
            template = Globals.EMAIL_MESSAGE_TEMPLATE_PT;
279
        }
280
        else
281
        {
282
            template = Globals.EMAIL_MESSAGE_TEMPLATE_EN;
283
        }
284
 
285
        List<String> recipients = new ArrayList<String>();
512 jmachado 286
        for(User u: users)
287
        {
288
            if(Email.validEmail(u.getEmail()))
289
                recipients.add(u.getEmail());
290
            if(Email.validEmail(u.getOutEmail()))
291
                recipients.add(u.getOutEmail());
292
        }
810 jmachado 293
        logger.info("subject: " + subject);
294
        logger.info("user: " + user.getEmail());
295
        logger.info("template: " + template);
296
        logger.info("arguments:");
297
        for(1.5.0/docs/api/java/lang/String.html">String arg: arguments)
298
            logger.info(arg);
299
        logger.info("recipients:");
300
        for(1.5.0/docs/api/java/lang/String.html">String rec: recipients)
301
            logger.info(rec);
302
        logger.info("arguments end");
872 jmachado 303
        Email email = new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC);
304
        email.setFromName(from + " (ESTG)");
305
        return email;
512 jmachado 306
    }
307
 
237 jmachado 308
    public Email getCourseUnitAnnouncementEmail(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
309
    {
310
        List<String> arguments = new ArrayList<String>();
311
        arguments.add(announcement.getCourseUnit().getName());
312
        arguments.add(announcement.getTitle());
313
        arguments.add(announcement.getText());
314
        arguments.add(from);
315
 
316
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
317
        1.5.0/docs/api/java/lang/String.html">String template;
318
 
319
        if(langEnum == LangEnum.PORTUGUESE)
320
        {
321
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_PT;
322
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_PT;
323
        }
324
        else
325
        {
326
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_EN;
327
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_EN;
328
        }
329
 
330
        List<String> recipients = new ArrayList<String>();
331
        for(User u: users)
332
        {
298 jmachado 333
            if(Email.validEmail(u.getEmail()))
334
                recipients.add(u.getEmail());
419 jmachado 335
            if(Email.validEmail(u.getOutEmail()))
336
                recipients.add(u.getOutEmail());
237 jmachado 337
        }
338
 
339
        1.5.0/docs/api/java/lang/String.html">String subject = java.text.1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(subjectTxt,new 1.5.0/docs/api/java/lang/String.html">String[]{announcement.getCourseUnit().getNormalizedName(),announcement.getTitle()});
419 jmachado 340
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
341
        if(announcement.getOwner() != null && Email.validEmail(announcement.getOwner().getEmail()))
342
            fromEmail = announcement.getOwner().getEmail();
343
        return new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
237 jmachado 344
    }
345
 
363 jmachado 346
    public Email getCourseUnitBlogPostEmail(BlogPost post, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
347
    {
348
        List<String> arguments = new ArrayList<String>();
349
        arguments.add(((CourseUnitBlog)post.getBlog()).getCourseUnit().getName());
350
        arguments.add(post.getTitle());
351
        arguments.add(post.getText());
352
        arguments.add(from);
237 jmachado 353
 
363 jmachado 354
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
355
        1.5.0/docs/api/java/lang/String.html">String template;
356
 
357
        if(langEnum == LangEnum.PORTUGUESE)
358
        {
359
            template = Globals.EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_PT;
360
            subjectTxt = Globals.EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_PT;
361
        }
362
        else
363
        {
364
            template = Globals.EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_EN;
365
            subjectTxt = Globals.EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_EN;
366
        }
367
 
368
        List<String> recipients = new ArrayList<String>();
369
        for(User u: users)
370
        {
371
            if(Email.validEmail(u.getEmail()))
372
                recipients.add(u.getEmail());
419 jmachado 373
            if(Email.validEmail(u.getOutEmail()))
374
                recipients.add(u.getOutEmail());
363 jmachado 375
        }
376
 
377
        1.5.0/docs/api/java/lang/String.html">String subject = java.text.1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(subjectTxt,new 1.5.0/docs/api/java/lang/String.html">String[]{((CourseUnitBlog)post.getBlog()).getCourseUnit().getNormalizedName(),post.getTitle()});
419 jmachado 378
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
379
        if(post.getOwner() != null && Email.validEmail(post.getOwner().getEmail()))
380
            fromEmail = post.getOwner().getEmail();
381
        return new Email(subject ,recipients, fromEmail, template,arguments,Message.RecipientType.BCC);
363 jmachado 382
    }
383
 
440 jmachado 384
    public Email getCourseUnitWorkEmail(CourseUnitAssignement assignement, LangEnum langEnum, UserSession userSession,  List<User> users, boolean newWork)
419 jmachado 385
    {
386
        List<String> arguments = new ArrayList<String>();
387
        arguments.add(assignement.getCourseUnit().getName());
388
        arguments.add(assignement.getTitle());
389
        arguments.add(assignement.getDescription());
440 jmachado 390
 
419 jmachado 391
        if(userSession != null && userSession.getName() != null)
392
            arguments.add(userSession.getName());
393
        else
394
            arguments.add("unknown");
363 jmachado 395
 
440 jmachado 396
        arguments.add( DatesUtils.getStringFromDate(assignement.getDeliverDate()));
492 jmachado 397
 
419 jmachado 398
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
399
        1.5.0/docs/api/java/lang/String.html">String template;
400
 
401
        if(langEnum == LangEnum.PORTUGUESE)
402
        {
440 jmachado 403
            if(newWork)
404
                template = Globals.EMAIL_COURSEUNIT_WORK_TEMPLATE_PT;
405
            else
406
                template = Globals.EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_PT;
419 jmachado 407
            subjectTxt = Globals.EMAIL_COURSEUNIT_WORK_SUBJECT_PT;
408
        }
409
        else
410
        {
440 jmachado 411
            if(newWork)
412
                template = Globals.EMAIL_COURSEUNIT_WORK_TEMPLATE_EN;
413
            else
414
                template = Globals.EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_EN;
419 jmachado 415
            subjectTxt = Globals.EMAIL_COURSEUNIT_WORK_SUBJECT_EN;
416
        }
417
 
418
        List<String> recipients = new ArrayList<String>();
419
        for(User u: users)
420
        {
421
            if(Email.validEmail(u.getEmail()))
422
                recipients.add(u.getEmail());
423
            if(Email.validEmail(u.getOutEmail()))
424
                recipients.add(u.getOutEmail());
425
        }
426
 
427
        1.5.0/docs/api/java/lang/String.html">String subject = java.text.1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(subjectTxt,new 1.5.0/docs/api/java/lang/String.html">String[]{assignement.getCourseUnit().getNormalizedName(),assignement.getTitle()});
428
 
429
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
430
        if(userSession!= null && userSession.getUser() != null && Email.validEmail(userSession.getUser().getEmail()))
431
            fromEmail = userSession.getUser().getEmail();
432
        return new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
433
    }
434
 
435
 
436
 
236 jmachado 437
    public Email getNewGradesEmail(List<String[]> grades, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String studentEmail, 1.5.0/docs/api/java/lang/String.html">String studentName)
438
    {
439
        List<String> arguments = new ArrayList<String>();
440
 
441
        1.5.0/docs/api/java/lang/String.html">String subject;
442
        1.5.0/docs/api/java/lang/String.html">String template;
443
 
444
        if(langEnum == LangEnum.PORTUGUESE)
445
        {
446
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_PT;
237 jmachado 447
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_PT;
236 jmachado 448
        }
449
        else
450
        {
451
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_EN;
237 jmachado 452
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_EN;
236 jmachado 453
        }
454
 
455
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder gradesBuilder = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
456
        for(1.5.0/docs/api/java/lang/String.html">String[] grade:  grades)
457
        {
458
            1.5.0/docs/api/java/lang/String.html">String gradeTxt = TemplateUtils.formatMessageTemplate(gradeUnitTemplate,grade);
459
            gradesBuilder.append(gradeTxt);
460
        }
461
 
462
        arguments.add(studentName);
463
        arguments.add(gradesBuilder.toString());
464
 
465
        List<String> recipients = new ArrayList<String>();
466
        recipients.add(studentEmail);
467
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
468
    }
469
 
358 jmachado 470
    public Email getSummaryEmail(List<String> emails, CourseUnitSummary cUS, CourseUnit c, LangEnum langEnum)
471
    {
472
        List<String> arguments = new ArrayList<String>();
473
 
474
        1.5.0/docs/api/java/lang/String.html">String data = DatesUtils.getStringFromDate(cUS.getDataAula());
475
        1.5.0/docs/api/java/lang/String.html">String subject;
476
        1.5.0/docs/api/java/lang/String.html">String template;
477
 
478
        if(langEnum == LangEnum.PORTUGUESE)
479
        {
480
            template = Globals.EMAIL_SUMMARY_TEMPLATE_PT;
481
            subject = Globals.EMAIL_SUMMARY_SUBJECT_PT;
482
        }
483
        else
484
        {
485
            template = Globals.EMAIL_SUMMARY_TEMPLATE_EN;
486
            subject = Globals.EMAIL_SUMMARY_SUBJECT_EN;
487
        }
488
        subject = TemplateUtils.formatMessageTemplate(subject,new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
489
 
490
        arguments.add(c.getName());
491
        arguments.add(""+cUS.getNumeroAula());
492
        arguments.add(data);
493
        arguments.add(cUS.getTitulo());
494
        arguments.add(cUS.getDescricao());
495
 
496
        List<String> recipients = new ArrayList<String>();
497
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
498
            recipients.add(email);
499
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
500
    }
501
 
995 jmachado 502
 
503
    //TODO TESTAR
504
    public Email getSummariesEmail(List<String> emails, List<CourseUnitSummary> cUS, CourseUnit c, LangEnum langEnum)
505
    {
506
 
507
 
508
        1.5.0/docs/api/java/lang/String.html">String ultimaData = DatesUtils.getStringFromDate(cUS.get(cUS.size() - 1).getDataAula());
509
        1.5.0/docs/api/java/lang/String.html">String subject;
510
        1.5.0/docs/api/java/lang/String.html">String template;
511
        1.5.0/docs/api/java/lang/String.html">String templateFragment;
512
 
513
        if(langEnum == LangEnum.PORTUGUESE)
514
        {
515
            template = Globals.EMAIL_SUMMARIES_TEMPLATE_PT;
516
            templateFragment = Globals.EMAIL_SUMMARIES_FRAGMENT_TEMPLATE_PT;
517
            subject = Globals.EMAIL_SUMMARY_SUBJECT_PT;
518
        }
519
        else
520
        {
521
            template = Globals.EMAIL_SUMMARIES_TEMPLATE_EN;
522
            templateFragment = Globals.EMAIL_SUMMARIES_FRAGMENT_TEMPLATE_EN;
523
            subject = Globals.EMAIL_SUMMARY_SUBJECT_EN;
524
        }
525
        subject = TemplateUtils.formatMessageTemplate(subject,new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
526
 
527
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder fragments = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
528
 
529
        List<String> arguments = new ArrayList<String>();
530
        1.5.0/docs/api/java/lang/String.html">String fragmentSummaryTemplate = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + templateFragment);
531
        for(CourseUnitSummary summary: cUS)
532
        {
533
            List<String> argumentsFrag = new ArrayList<String>();
534
            argumentsFrag.add(summary.getTitulo());
535
            argumentsFrag.add(DatesUtils.getStringFromDate(summary.getDataAula()));
536
            argumentsFrag.add(summary.getDescricao());
537
            1.5.0/docs/api/java/lang/String.html">String fullMessage = 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(fragmentSummaryTemplate, argumentsFrag.toArray());
538
            fragments.append("\n").append(fullMessage);
539
        }
540
 
541
        arguments.add(c.getName());
542
        arguments.add(ultimaData);
543
        arguments.add(fragments.toString());
544
 
545
        List<String> recipients = new ArrayList<String>();
546
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
547
            recipients.add(email);
548
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
549
    }
550
 
751 jmachado 551
    public Email getUnidadeEdicaoEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
552
    {
553
        List<String> arguments = new ArrayList<String>();
554
 
555
 
556
        1.5.0/docs/api/java/lang/String.html">String subject;
557
        1.5.0/docs/api/java/lang/String.html">String template;
558
 
559
        if(langEnum == LangEnum.PORTUGUESE)
560
        {
561
            template = Globals.EMAIL_UNDADE_EDICAO_TEMPLATE_PT;
562
            subject = Globals.EMAIL_UNDADE_EDICAO_SUBJECT_PT;
563
        }
564
        else
565
        {
566
            template = Globals.EMAIL_UNDADE_EDICAO_TEMPLATE_EN;
567
            subject = Globals.EMAIL_UNDADE_EDICAO_SUBJECT_EN;
568
        }
569
        subject = 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(ConfigProperties.getProperty(subject),new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
570
 
571
        arguments.add(c.getName());
572
 
573
        List<String> recipients = new ArrayList<String>();
574
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
575
            recipients.add(email);
576
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
577
    }
578
 
579
     public Email getUnidadeValidadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
580
    {
581
        List<String> arguments = new ArrayList<String>();
582
 
583
 
584
        1.5.0/docs/api/java/lang/String.html">String subject;
585
        1.5.0/docs/api/java/lang/String.html">String template;
586
 
587
        if(langEnum == LangEnum.PORTUGUESE)
588
        {
589
            template = Globals.EMAIL_UNDADE_VALIDADA_TEMPLATE_PT;
590
            subject = Globals.EMAIL_UNDADE_VALIDADA_SUBJECT_PT;
591
        }
592
        else
593
        {
594
            template = Globals.EMAIL_UNDADE_VALIDADA_TEMPLATE_EN;
595
            subject = Globals.EMAIL_UNDADE_VALIDADA_SUBJECT_EN;
596
        }
597
        subject = 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(ConfigProperties.getProperty(subject),new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
598
 
599
        arguments.add(c.getName());
600
 
601
        List<String> recipients = new ArrayList<String>();
602
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
603
            recipients.add(email);
604
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
605
    }
606
 
607
    public Email getUnidadeEditadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
608
    {
609
        List<String> arguments = new ArrayList<String>();
610
 
611
 
612
        1.5.0/docs/api/java/lang/String.html">String subject;
613
        1.5.0/docs/api/java/lang/String.html">String template;
614
 
615
        if(langEnum == LangEnum.PORTUGUESE)
616
        {
617
            template = Globals.EMAIL_UNDADE_EDITADA_TEMPLATE_PT;
618
            subject = Globals.EMAIL_UNDADE_EDITADA_SUBJECT_PT;
619
        }
620
        else
621
        {
622
            template = Globals.EMAIL_UNDADE_EDITADA_TEMPLATE_EN;
623
            subject = Globals.EMAIL_UNDADE_EDITADA_SUBJECT_EN;
624
        }
625
        subject = 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(ConfigProperties.getProperty(subject),new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
626
 
627
        arguments.add(c.getCourseName());
628
        arguments.add(c.getName());
629
 
630
        List<String> recipients = new ArrayList<String>();
631
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
632
            recipients.add(email);
633
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
634
    }
635
 
1033 jmachado 636
    public Email getRelatorioAvaliacaoUnidadeEditadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum,1.5.0/docs/api/java/lang/String.html">String estado)
637
    {
638
        List<String> arguments = new ArrayList<String>();
639
 
640
 
641
        1.5.0/docs/api/java/lang/String.html">String subject;
642
        1.5.0/docs/api/java/lang/String.html">String template;
643
 
644
        if(langEnum == LangEnum.PORTUGUESE)
645
        {
646
            template = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_PT;
647
            subject = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_PT;
648
        }
649
        else
650
        {
651
            template = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_EN;
652
            subject = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_EN;
653
        }
654
        subject = 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(ConfigProperties.getProperty(subject),new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
655
 
656
        arguments.add(c.getCourseName());
657
        arguments.add(c.getName());
658
        arguments.add(estado);
659
 
660
        List<String> recipients = new ArrayList<String>();
661
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
662
            recipients.add(email);
663
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
664
    }
665
 
236 jmachado 666
    public boolean sendNewGrades(List<String[]> grades, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String studentEmail, 1.5.0/docs/api/java/lang/String.html">String studentName)
667
    {
668
        try
669
        {
670
            sendEmail(getNewGradesEmail(grades,langEnum,studentEmail,studentName));
671
            return true;
672
        }
673
        catch (ServiceException e)
674
        {
675
            return false;
676
        }
677
 
678
    }
679
 
680
    public static void main(1.5.0/docs/api/java/lang/String.html">String [] args)
681
    {
440 jmachado 682
        1.5.0/docs/api/java/lang/System.html">System.out.println( DatesUtils.getStringFromDate(new 5+0%2Fdocs%2Fapi+Date">Date()));
683
//        List<String[]> grades = new ArrayList<String[]>();
684
//        grades.add(new String[]{"Teste","3"});
685
//        grades.add(new String[]{"Teste2","4"});
686
//        new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
236 jmachado 687
    }
688
 
29 jmachado 689
}