Subversion Repositories bacoAlunos

Rev

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