Subversion Repositories bacoAlunos

Rev

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