Subversion Repositories bacoAlunos

Rev

Rev 1425 | Rev 1427 | 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));
811 jmachado 118
                    logger.info("Adding recipient 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)");
1426 jmachado 347
 
348
        email = new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
349
        email.setFromName(from + " (PAE-IPP)");
1425 jmachado 350
        return email;
351
    }
352
 
1426 jmachado 353
 
354
 
1089 jmachado 355
    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)
356
    {
357
//        # 0 : From
358
//        # 1 : Subject
359
//        # 2 : Text
360
//        # 3 : person
361
//        # 4 : target
362
        List<String> arguments = new ArrayList<String>();
363
        arguments.add(from);
364
        arguments.add(subject);
365
        arguments.add(text);
366
        arguments.add(user.getName());
367
        arguments.add(target);
368
 
369
        1.5.0/docs/api/java/lang/String.html">String template;
370
 
371
        if(langEnum == LangEnum.PORTUGUESE)
372
        {
373
            template = Globals.EMAIL_MESSAGE_TEMPLATE_PT;
374
        }
375
        else
376
        {
377
            template = Globals.EMAIL_MESSAGE_TEMPLATE_EN;
378
        }
379
 
380
        List<String> recipients = new ArrayList<String>();
512 jmachado 381
        for(User u: users)
382
        {
383
            if(Email.validEmail(u.getEmail()))
384
                recipients.add(u.getEmail());
385
            if(Email.validEmail(u.getOutEmail()))
386
                recipients.add(u.getOutEmail());
387
        }
810 jmachado 388
        logger.info("subject: " + subject);
389
        logger.info("user: " + user.getEmail());
390
        logger.info("template: " + template);
391
        logger.info("arguments:");
392
        for(1.5.0/docs/api/java/lang/String.html">String arg: arguments)
393
            logger.info(arg);
394
        logger.info("recipients:");
395
        for(1.5.0/docs/api/java/lang/String.html">String rec: recipients)
396
            logger.info(rec);
397
        logger.info("arguments end");
872 jmachado 398
        Email email = new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC);
399
        email.setFromName(from + " (ESTG)");
400
        return email;
512 jmachado 401
    }
402
 
237 jmachado 403
    public Email getCourseUnitAnnouncementEmail(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
404
    {
405
        List<String> arguments = new ArrayList<String>();
406
        arguments.add(announcement.getCourseUnit().getName());
407
        arguments.add(announcement.getTitle());
408
        arguments.add(announcement.getText());
409
        arguments.add(from);
410
 
411
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
412
        1.5.0/docs/api/java/lang/String.html">String template;
413
 
414
        if(langEnum == LangEnum.PORTUGUESE)
415
        {
416
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_PT;
417
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_PT;
418
        }
419
        else
420
        {
421
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_EN;
422
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_EN;
423
        }
424
 
425
        List<String> recipients = new ArrayList<String>();
426
        for(User u: users)
427
        {
298 jmachado 428
            if(Email.validEmail(u.getEmail()))
429
                recipients.add(u.getEmail());
419 jmachado 430
            if(Email.validEmail(u.getOutEmail()))
431
                recipients.add(u.getOutEmail());
237 jmachado 432
        }
433
 
434
        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 435
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
436
        if(announcement.getOwner() != null && Email.validEmail(announcement.getOwner().getEmail()))
437
            fromEmail = announcement.getOwner().getEmail();
438
        return new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
237 jmachado 439
    }
440
 
363 jmachado 441
    public Email getCourseUnitBlogPostEmail(BlogPost post, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
442
    {
443
        List<String> arguments = new ArrayList<String>();
444
        arguments.add(((CourseUnitBlog)post.getBlog()).getCourseUnit().getName());
445
        arguments.add(post.getTitle());
446
        arguments.add(post.getText());
447
        arguments.add(from);
237 jmachado 448
 
363 jmachado 449
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
450
        1.5.0/docs/api/java/lang/String.html">String template;
451
 
452
        if(langEnum == LangEnum.PORTUGUESE)
453
        {
454
            template = Globals.EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_PT;
455
            subjectTxt = Globals.EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_PT;
456
        }
457
        else
458
        {
459
            template = Globals.EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_EN;
460
            subjectTxt = Globals.EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_EN;
461
        }
462
 
463
        List<String> recipients = new ArrayList<String>();
464
        for(User u: users)
465
        {
466
            if(Email.validEmail(u.getEmail()))
467
                recipients.add(u.getEmail());
419 jmachado 468
            if(Email.validEmail(u.getOutEmail()))
469
                recipients.add(u.getOutEmail());
363 jmachado 470
        }
471
 
472
        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 473
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
474
        if(post.getOwner() != null && Email.validEmail(post.getOwner().getEmail()))
475
            fromEmail = post.getOwner().getEmail();
476
        return new Email(subject ,recipients, fromEmail, template,arguments,Message.RecipientType.BCC);
363 jmachado 477
    }
478
 
440 jmachado 479
    public Email getCourseUnitWorkEmail(CourseUnitAssignement assignement, LangEnum langEnum, UserSession userSession,  List<User> users, boolean newWork)
419 jmachado 480
    {
481
        List<String> arguments = new ArrayList<String>();
482
        arguments.add(assignement.getCourseUnit().getName());
483
        arguments.add(assignement.getTitle());
484
        arguments.add(assignement.getDescription());
440 jmachado 485
 
419 jmachado 486
        if(userSession != null && userSession.getName() != null)
487
            arguments.add(userSession.getName());
488
        else
489
            arguments.add("unknown");
363 jmachado 490
 
440 jmachado 491
        arguments.add( DatesUtils.getStringFromDate(assignement.getDeliverDate()));
492 jmachado 492
 
1353 jmachado 493
        //String directUrl = Globals.EMAIL_COURSEUNIT_WORK_RELATIVE_URL;
494
        //directUrl = Globals.SITE_URL +  MessageFormat.format(directUrl,assignement.getCourseUnit().getId());
495
 
419 jmachado 496
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
497
        1.5.0/docs/api/java/lang/String.html">String template;
498
 
499
        if(langEnum == LangEnum.PORTUGUESE)
500
        {
440 jmachado 501
            if(newWork)
502
                template = Globals.EMAIL_COURSEUNIT_WORK_TEMPLATE_PT;
503
            else
504
                template = Globals.EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_PT;
419 jmachado 505
            subjectTxt = Globals.EMAIL_COURSEUNIT_WORK_SUBJECT_PT;
506
        }
507
        else
508
        {
440 jmachado 509
            if(newWork)
510
                template = Globals.EMAIL_COURSEUNIT_WORK_TEMPLATE_EN;
511
            else
512
                template = Globals.EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_EN;
419 jmachado 513
            subjectTxt = Globals.EMAIL_COURSEUNIT_WORK_SUBJECT_EN;
514
        }
515
 
516
        List<String> recipients = new ArrayList<String>();
517
        for(User u: users)
518
        {
519
            if(Email.validEmail(u.getEmail()))
520
                recipients.add(u.getEmail());
521
            if(Email.validEmail(u.getOutEmail()))
522
                recipients.add(u.getOutEmail());
523
        }
524
 
525
        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()});
526
 
527
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
528
        if(userSession!= null && userSession.getUser() != null && Email.validEmail(userSession.getUser().getEmail()))
529
            fromEmail = userSession.getUser().getEmail();
530
        return new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
531
    }
532
 
533
 
534
 
236 jmachado 535
    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)
536
    {
537
        List<String> arguments = new ArrayList<String>();
538
 
539
        1.5.0/docs/api/java/lang/String.html">String subject;
540
        1.5.0/docs/api/java/lang/String.html">String template;
541
 
542
        if(langEnum == LangEnum.PORTUGUESE)
543
        {
544
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_PT;
237 jmachado 545
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_PT;
236 jmachado 546
        }
547
        else
548
        {
549
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_EN;
237 jmachado 550
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_EN;
236 jmachado 551
        }
552
 
553
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder gradesBuilder = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
554
        for(1.5.0/docs/api/java/lang/String.html">String[] grade:  grades)
555
        {
556
            1.5.0/docs/api/java/lang/String.html">String gradeTxt = TemplateUtils.formatMessageTemplate(gradeUnitTemplate,grade);
557
            gradesBuilder.append(gradeTxt);
558
        }
559
 
560
        arguments.add(studentName);
561
        arguments.add(gradesBuilder.toString());
562
 
563
        List<String> recipients = new ArrayList<String>();
564
        recipients.add(studentEmail);
565
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
566
    }
567
 
358 jmachado 568
    public Email getSummaryEmail(List<String> emails, CourseUnitSummary cUS, CourseUnit c, LangEnum langEnum)
569
    {
570
        List<String> arguments = new ArrayList<String>();
571
 
572
        1.5.0/docs/api/java/lang/String.html">String data = DatesUtils.getStringFromDate(cUS.getDataAula());
573
        1.5.0/docs/api/java/lang/String.html">String subject;
574
        1.5.0/docs/api/java/lang/String.html">String template;
575
 
576
        if(langEnum == LangEnum.PORTUGUESE)
577
        {
578
            template = Globals.EMAIL_SUMMARY_TEMPLATE_PT;
579
            subject = Globals.EMAIL_SUMMARY_SUBJECT_PT;
580
        }
581
        else
582
        {
583
            template = Globals.EMAIL_SUMMARY_TEMPLATE_EN;
584
            subject = Globals.EMAIL_SUMMARY_SUBJECT_EN;
585
        }
586
        subject = TemplateUtils.formatMessageTemplate(subject,new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
587
 
588
        arguments.add(c.getName());
589
        arguments.add(""+cUS.getNumeroAula());
590
        arguments.add(data);
591
        arguments.add(cUS.getTitulo());
592
        arguments.add(cUS.getDescricao());
593
 
594
        List<String> recipients = new ArrayList<String>();
595
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
596
            recipients.add(email);
597
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
598
    }
599
 
995 jmachado 600
 
601
    //TODO TESTAR
602
    public Email getSummariesEmail(List<String> emails, List<CourseUnitSummary> cUS, CourseUnit c, LangEnum langEnum)
603
    {
604
 
605
 
606
        1.5.0/docs/api/java/lang/String.html">String ultimaData = DatesUtils.getStringFromDate(cUS.get(cUS.size() - 1).getDataAula());
607
        1.5.0/docs/api/java/lang/String.html">String subject;
608
        1.5.0/docs/api/java/lang/String.html">String template;
609
        1.5.0/docs/api/java/lang/String.html">String templateFragment;
610
 
611
        if(langEnum == LangEnum.PORTUGUESE)
612
        {
613
            template = Globals.EMAIL_SUMMARIES_TEMPLATE_PT;
614
            templateFragment = Globals.EMAIL_SUMMARIES_FRAGMENT_TEMPLATE_PT;
615
            subject = Globals.EMAIL_SUMMARY_SUBJECT_PT;
616
        }
617
        else
618
        {
619
            template = Globals.EMAIL_SUMMARIES_TEMPLATE_EN;
620
            templateFragment = Globals.EMAIL_SUMMARIES_FRAGMENT_TEMPLATE_EN;
621
            subject = Globals.EMAIL_SUMMARY_SUBJECT_EN;
622
        }
623
        subject = TemplateUtils.formatMessageTemplate(subject,new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
624
 
625
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder fragments = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
626
 
627
        List<String> arguments = new ArrayList<String>();
628
        1.5.0/docs/api/java/lang/String.html">String fragmentSummaryTemplate = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + templateFragment);
629
        for(CourseUnitSummary summary: cUS)
630
        {
631
            List<String> argumentsFrag = new ArrayList<String>();
632
            argumentsFrag.add(summary.getTitulo());
633
            argumentsFrag.add(DatesUtils.getStringFromDate(summary.getDataAula()));
634
            argumentsFrag.add(summary.getDescricao());
635
            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());
636
            fragments.append("\n").append(fullMessage);
637
        }
638
 
639
        arguments.add(c.getName());
640
        arguments.add(ultimaData);
641
        arguments.add(fragments.toString());
642
 
643
        List<String> recipients = new ArrayList<String>();
644
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
645
            recipients.add(email);
646
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
647
    }
648
 
751 jmachado 649
    public Email getUnidadeEdicaoEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
650
    {
651
        List<String> arguments = new ArrayList<String>();
652
 
653
 
654
        1.5.0/docs/api/java/lang/String.html">String subject;
655
        1.5.0/docs/api/java/lang/String.html">String template;
656
 
657
        if(langEnum == LangEnum.PORTUGUESE)
658
        {
659
            template = Globals.EMAIL_UNDADE_EDICAO_TEMPLATE_PT;
660
            subject = Globals.EMAIL_UNDADE_EDICAO_SUBJECT_PT;
661
        }
662
        else
663
        {
664
            template = Globals.EMAIL_UNDADE_EDICAO_TEMPLATE_EN;
665
            subject = Globals.EMAIL_UNDADE_EDICAO_SUBJECT_EN;
666
        }
667
        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()});
668
 
669
        arguments.add(c.getName());
670
 
671
        List<String> recipients = new ArrayList<String>();
672
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
673
            recipients.add(email);
674
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
675
    }
676
 
677
     public Email getUnidadeValidadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
678
    {
679
        List<String> arguments = new ArrayList<String>();
680
 
681
 
682
        1.5.0/docs/api/java/lang/String.html">String subject;
683
        1.5.0/docs/api/java/lang/String.html">String template;
684
 
685
        if(langEnum == LangEnum.PORTUGUESE)
686
        {
687
            template = Globals.EMAIL_UNDADE_VALIDADA_TEMPLATE_PT;
688
            subject = Globals.EMAIL_UNDADE_VALIDADA_SUBJECT_PT;
689
        }
690
        else
691
        {
692
            template = Globals.EMAIL_UNDADE_VALIDADA_TEMPLATE_EN;
693
            subject = Globals.EMAIL_UNDADE_VALIDADA_SUBJECT_EN;
694
        }
695
        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()});
696
 
697
        arguments.add(c.getName());
698
 
699
        List<String> recipients = new ArrayList<String>();
700
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
701
            recipients.add(email);
702
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
703
    }
704
 
705
    public Email getUnidadeEditadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
706
    {
707
        List<String> arguments = new ArrayList<String>();
708
 
709
 
710
        1.5.0/docs/api/java/lang/String.html">String subject;
711
        1.5.0/docs/api/java/lang/String.html">String template;
712
 
713
        if(langEnum == LangEnum.PORTUGUESE)
714
        {
715
            template = Globals.EMAIL_UNDADE_EDITADA_TEMPLATE_PT;
716
            subject = Globals.EMAIL_UNDADE_EDITADA_SUBJECT_PT;
717
        }
718
        else
719
        {
720
            template = Globals.EMAIL_UNDADE_EDITADA_TEMPLATE_EN;
721
            subject = Globals.EMAIL_UNDADE_EDITADA_SUBJECT_EN;
722
        }
723
        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()});
724
 
725
        arguments.add(c.getCourseName());
726
        arguments.add(c.getName());
727
 
728
        List<String> recipients = new ArrayList<String>();
729
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
730
            recipients.add(email);
731
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
732
    }
733
 
1033 jmachado 734
    public Email getRelatorioAvaliacaoUnidadeEditadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum,1.5.0/docs/api/java/lang/String.html">String estado)
735
    {
736
        List<String> arguments = new ArrayList<String>();
737
 
738
 
739
        1.5.0/docs/api/java/lang/String.html">String subject;
740
        1.5.0/docs/api/java/lang/String.html">String template;
741
 
742
        if(langEnum == LangEnum.PORTUGUESE)
743
        {
744
            template = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_PT;
745
            subject = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_PT;
746
        }
747
        else
748
        {
749
            template = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_EN;
750
            subject = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_EN;
751
        }
752
        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()});
753
 
754
        arguments.add(c.getCourseName());
755
        arguments.add(c.getName());
756
        arguments.add(estado);
757
 
758
        List<String> recipients = new ArrayList<String>();
759
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
760
            recipients.add(email);
761
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
762
    }
763
 
236 jmachado 764
    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)
765
    {
766
        try
767
        {
768
            sendEmail(getNewGradesEmail(grades,langEnum,studentEmail,studentName));
769
            return true;
770
        }
771
        catch (ServiceException e)
772
        {
773
            return false;
774
        }
775
 
776
    }
777
 
778
    public static void main(1.5.0/docs/api/java/lang/String.html">String [] args)
779
    {
440 jmachado 780
        1.5.0/docs/api/java/lang/System.html">System.out.println( DatesUtils.getStringFromDate(new 5+0%2Fdocs%2Fapi+Date">Date()));
781
//        List<String[]> grades = new ArrayList<String[]>();
782
//        grades.add(new String[]{"Teste","3"});
783
//        grades.add(new String[]{"Teste2","4"});
784
//        new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
236 jmachado 785
    }
786
 
29 jmachado 787
}