Subversion Repositories bacoAlunos

Rev

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