Subversion Repositories bacoAlunos

Rev

Rev 1312 | Rev 1425 | 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
 
1353 jmachado 434
        //String directUrl = Globals.EMAIL_COURSEUNIT_WORK_RELATIVE_URL;
435
        //directUrl = Globals.SITE_URL +  MessageFormat.format(directUrl,assignement.getCourseUnit().getId());
436
 
419 jmachado 437
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
438
        1.5.0/docs/api/java/lang/String.html">String template;
439
 
440
        if(langEnum == LangEnum.PORTUGUESE)
441
        {
440 jmachado 442
            if(newWork)
443
                template = Globals.EMAIL_COURSEUNIT_WORK_TEMPLATE_PT;
444
            else
445
                template = Globals.EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_PT;
419 jmachado 446
            subjectTxt = Globals.EMAIL_COURSEUNIT_WORK_SUBJECT_PT;
447
        }
448
        else
449
        {
440 jmachado 450
            if(newWork)
451
                template = Globals.EMAIL_COURSEUNIT_WORK_TEMPLATE_EN;
452
            else
453
                template = Globals.EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_EN;
419 jmachado 454
            subjectTxt = Globals.EMAIL_COURSEUNIT_WORK_SUBJECT_EN;
455
        }
456
 
457
        List<String> recipients = new ArrayList<String>();
458
        for(User u: users)
459
        {
460
            if(Email.validEmail(u.getEmail()))
461
                recipients.add(u.getEmail());
462
            if(Email.validEmail(u.getOutEmail()))
463
                recipients.add(u.getOutEmail());
464
        }
465
 
466
        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()});
467
 
468
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
469
        if(userSession!= null && userSession.getUser() != null && Email.validEmail(userSession.getUser().getEmail()))
470
            fromEmail = userSession.getUser().getEmail();
471
        return new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
472
    }
473
 
474
 
475
 
236 jmachado 476
    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)
477
    {
478
        List<String> arguments = new ArrayList<String>();
479
 
480
        1.5.0/docs/api/java/lang/String.html">String subject;
481
        1.5.0/docs/api/java/lang/String.html">String template;
482
 
483
        if(langEnum == LangEnum.PORTUGUESE)
484
        {
485
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_PT;
237 jmachado 486
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_PT;
236 jmachado 487
        }
488
        else
489
        {
490
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_EN;
237 jmachado 491
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_EN;
236 jmachado 492
        }
493
 
494
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder gradesBuilder = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
495
        for(1.5.0/docs/api/java/lang/String.html">String[] grade:  grades)
496
        {
497
            1.5.0/docs/api/java/lang/String.html">String gradeTxt = TemplateUtils.formatMessageTemplate(gradeUnitTemplate,grade);
498
            gradesBuilder.append(gradeTxt);
499
        }
500
 
501
        arguments.add(studentName);
502
        arguments.add(gradesBuilder.toString());
503
 
504
        List<String> recipients = new ArrayList<String>();
505
        recipients.add(studentEmail);
506
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
507
    }
508
 
358 jmachado 509
    public Email getSummaryEmail(List<String> emails, CourseUnitSummary cUS, CourseUnit c, LangEnum langEnum)
510
    {
511
        List<String> arguments = new ArrayList<String>();
512
 
513
        1.5.0/docs/api/java/lang/String.html">String data = DatesUtils.getStringFromDate(cUS.getDataAula());
514
        1.5.0/docs/api/java/lang/String.html">String subject;
515
        1.5.0/docs/api/java/lang/String.html">String template;
516
 
517
        if(langEnum == LangEnum.PORTUGUESE)
518
        {
519
            template = Globals.EMAIL_SUMMARY_TEMPLATE_PT;
520
            subject = Globals.EMAIL_SUMMARY_SUBJECT_PT;
521
        }
522
        else
523
        {
524
            template = Globals.EMAIL_SUMMARY_TEMPLATE_EN;
525
            subject = Globals.EMAIL_SUMMARY_SUBJECT_EN;
526
        }
527
        subject = TemplateUtils.formatMessageTemplate(subject,new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
528
 
529
        arguments.add(c.getName());
530
        arguments.add(""+cUS.getNumeroAula());
531
        arguments.add(data);
532
        arguments.add(cUS.getTitulo());
533
        arguments.add(cUS.getDescricao());
534
 
535
        List<String> recipients = new ArrayList<String>();
536
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
537
            recipients.add(email);
538
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
539
    }
540
 
995 jmachado 541
 
542
    //TODO TESTAR
543
    public Email getSummariesEmail(List<String> emails, List<CourseUnitSummary> cUS, CourseUnit c, LangEnum langEnum)
544
    {
545
 
546
 
547
        1.5.0/docs/api/java/lang/String.html">String ultimaData = DatesUtils.getStringFromDate(cUS.get(cUS.size() - 1).getDataAula());
548
        1.5.0/docs/api/java/lang/String.html">String subject;
549
        1.5.0/docs/api/java/lang/String.html">String template;
550
        1.5.0/docs/api/java/lang/String.html">String templateFragment;
551
 
552
        if(langEnum == LangEnum.PORTUGUESE)
553
        {
554
            template = Globals.EMAIL_SUMMARIES_TEMPLATE_PT;
555
            templateFragment = Globals.EMAIL_SUMMARIES_FRAGMENT_TEMPLATE_PT;
556
            subject = Globals.EMAIL_SUMMARY_SUBJECT_PT;
557
        }
558
        else
559
        {
560
            template = Globals.EMAIL_SUMMARIES_TEMPLATE_EN;
561
            templateFragment = Globals.EMAIL_SUMMARIES_FRAGMENT_TEMPLATE_EN;
562
            subject = Globals.EMAIL_SUMMARY_SUBJECT_EN;
563
        }
564
        subject = TemplateUtils.formatMessageTemplate(subject,new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
565
 
566
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder fragments = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
567
 
568
        List<String> arguments = new ArrayList<String>();
569
        1.5.0/docs/api/java/lang/String.html">String fragmentSummaryTemplate = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + templateFragment);
570
        for(CourseUnitSummary summary: cUS)
571
        {
572
            List<String> argumentsFrag = new ArrayList<String>();
573
            argumentsFrag.add(summary.getTitulo());
574
            argumentsFrag.add(DatesUtils.getStringFromDate(summary.getDataAula()));
575
            argumentsFrag.add(summary.getDescricao());
576
            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());
577
            fragments.append("\n").append(fullMessage);
578
        }
579
 
580
        arguments.add(c.getName());
581
        arguments.add(ultimaData);
582
        arguments.add(fragments.toString());
583
 
584
        List<String> recipients = new ArrayList<String>();
585
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
586
            recipients.add(email);
587
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
588
    }
589
 
751 jmachado 590
    public Email getUnidadeEdicaoEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
591
    {
592
        List<String> arguments = new ArrayList<String>();
593
 
594
 
595
        1.5.0/docs/api/java/lang/String.html">String subject;
596
        1.5.0/docs/api/java/lang/String.html">String template;
597
 
598
        if(langEnum == LangEnum.PORTUGUESE)
599
        {
600
            template = Globals.EMAIL_UNDADE_EDICAO_TEMPLATE_PT;
601
            subject = Globals.EMAIL_UNDADE_EDICAO_SUBJECT_PT;
602
        }
603
        else
604
        {
605
            template = Globals.EMAIL_UNDADE_EDICAO_TEMPLATE_EN;
606
            subject = Globals.EMAIL_UNDADE_EDICAO_SUBJECT_EN;
607
        }
608
        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()});
609
 
610
        arguments.add(c.getName());
611
 
612
        List<String> recipients = new ArrayList<String>();
613
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
614
            recipients.add(email);
615
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
616
    }
617
 
618
     public Email getUnidadeValidadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
619
    {
620
        List<String> arguments = new ArrayList<String>();
621
 
622
 
623
        1.5.0/docs/api/java/lang/String.html">String subject;
624
        1.5.0/docs/api/java/lang/String.html">String template;
625
 
626
        if(langEnum == LangEnum.PORTUGUESE)
627
        {
628
            template = Globals.EMAIL_UNDADE_VALIDADA_TEMPLATE_PT;
629
            subject = Globals.EMAIL_UNDADE_VALIDADA_SUBJECT_PT;
630
        }
631
        else
632
        {
633
            template = Globals.EMAIL_UNDADE_VALIDADA_TEMPLATE_EN;
634
            subject = Globals.EMAIL_UNDADE_VALIDADA_SUBJECT_EN;
635
        }
636
        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()});
637
 
638
        arguments.add(c.getName());
639
 
640
        List<String> recipients = new ArrayList<String>();
641
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
642
            recipients.add(email);
643
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
644
    }
645
 
646
    public Email getUnidadeEditadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum)
647
    {
648
        List<String> arguments = new ArrayList<String>();
649
 
650
 
651
        1.5.0/docs/api/java/lang/String.html">String subject;
652
        1.5.0/docs/api/java/lang/String.html">String template;
653
 
654
        if(langEnum == LangEnum.PORTUGUESE)
655
        {
656
            template = Globals.EMAIL_UNDADE_EDITADA_TEMPLATE_PT;
657
            subject = Globals.EMAIL_UNDADE_EDITADA_SUBJECT_PT;
658
        }
659
        else
660
        {
661
            template = Globals.EMAIL_UNDADE_EDITADA_TEMPLATE_EN;
662
            subject = Globals.EMAIL_UNDADE_EDITADA_SUBJECT_EN;
663
        }
664
        subject = 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(ConfigProperties.getProperty(subject),new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
665
 
666
        arguments.add(c.getCourseName());
667
        arguments.add(c.getName());
668
 
669
        List<String> recipients = new ArrayList<String>();
670
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
671
            recipients.add(email);
672
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
673
    }
674
 
1033 jmachado 675
    public Email getRelatorioAvaliacaoUnidadeEditadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum,1.5.0/docs/api/java/lang/String.html">String estado)
676
    {
677
        List<String> arguments = new ArrayList<String>();
678
 
679
 
680
        1.5.0/docs/api/java/lang/String.html">String subject;
681
        1.5.0/docs/api/java/lang/String.html">String template;
682
 
683
        if(langEnum == LangEnum.PORTUGUESE)
684
        {
685
            template = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_PT;
686
            subject = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_PT;
687
        }
688
        else
689
        {
690
            template = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_EN;
691
            subject = Globals.EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_EN;
692
        }
693
        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()});
694
 
695
        arguments.add(c.getCourseName());
696
        arguments.add(c.getName());
697
        arguments.add(estado);
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
 
236 jmachado 705
    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)
706
    {
707
        try
708
        {
709
            sendEmail(getNewGradesEmail(grades,langEnum,studentEmail,studentName));
710
            return true;
711
        }
712
        catch (ServiceException e)
713
        {
714
            return false;
715
        }
716
 
717
    }
718
 
719
    public static void main(1.5.0/docs/api/java/lang/String.html">String [] args)
720
    {
440 jmachado 721
        1.5.0/docs/api/java/lang/System.html">System.out.println( DatesUtils.getStringFromDate(new 5+0%2Fdocs%2Fapi+Date">Date()));
722
//        List<String[]> grades = new ArrayList<String[]>();
723
//        grades.add(new String[]{"Teste","3"});
724
//        grades.add(new String[]{"Teste2","4"});
725
//        new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
236 jmachado 726
    }
727
 
29 jmachado 728
}