Project

General

Profile

1
package eu.dnetlib.goldoa.service.utils;
2

    
3
import eu.dnetlib.goldoa.domain.*;
4
import eu.dnetlib.goldoa.service.dao.UserDAO;
5
import org.apache.log4j.Logger;
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.beans.factory.annotation.Value;
8
import org.springframework.stereotype.Service;
9

    
10
import javax.mail.MessagingException;
11
import java.text.SimpleDateFormat;
12
import java.util.List;
13

    
14
/*
15
 * Created by antleb on 3/9/15.
16
*/
17

    
18

    
19
@Service("emailUtils")
20
public class EmailUtilsImpl implements EmailUtils {
21
	private static Logger logger = Logger.getLogger(EmailUtilsImpl.class);
22

    
23
	@Autowired
24
	UserDAO UserDAO;
25
	@Autowired
26
	private MailLibrary mailLibrary;
27

    
28

    
29
	@Value("${goldoa.baseAddress}")
30
	private String baseAddress;
31
	@Value("${goldoa.termsOfAgreementUrl}")
32
	private String termsOfAgreementUrl;
33
	
34
	String contactLink = "postgrantpilotinfo@openaire.eu";
35

    
36
	@Override
37
	public void sendActivationEmail(User user, String token) throws MessagingException {
38
		String link = baseAddress + "/GoldOAPortal.html?token=" + token + "&email=" + user.getEmail() + "#activate";
39
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Account activation";
40

    
41
		String message = "Dear " + user.getFirstname() + " " + user.getLastname() + ",\n" +
42
				"Welcome to the OpenAIRE FP7 post-grant Gold OA Pilot service, \n" +
43
				"\n" +
44
				"Thank you for signing up. To verify your account, please click on the link below:\n" +
45
				link + "\n" +
46
				"\n" +
47
				"Best,\n" +
48
				"The OpenAIRE team";
49
		mailLibrary.sendEmail(user.getEmail(), subject, message);
50
	}
51

    
52
	@Override
53
	public void sendResetPasswordEmail(User user, String password) throws MessagingException {
54
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] New password";
55
		String message = "Dear " + user.getFirstname() + " " + user.getLastname() + ",\n" +
56
				"Your new password is '" + password + "'. You can change it to one of your liking by editing your profile.\n" +
57
				"\n" +
58
				"Best,\n" +
59
				"The OpenAIRE team";
60

    
61
		mailLibrary.sendEmail(user.getEmail(), subject, message);
62
	}
63

    
64
	@Override
65
	public void sendRequesterOKEmail(Request request) throws MessagingException {
66
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request at " + new SimpleDateFormat("yyyy-MM-dd").format(request.getDate());
67
		String link = baseAddress + "/#existingFundingRequests";
68

    
69
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
70
				"\n" +
71
				"We have received a request to fund for the following:\n" +
72
				"\n" +
73
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
74
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
75

    
76
		if (request.getPublication().getJournal() != null) {
77
			text += "Journal: " + request.getPublication().getJournal().getTitle();
78

    
79
			if (request.getPublication().getJournal().getPublisher() != null)
80
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
81

    
82
			text += "\n";
83
		} else if (request.getPublication().getPublisher() != null)
84
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
85

    
86

    
87
		String currencyName = null;
88
		if(request.getCurrency() != null )
89
			currencyName = request.getCurrency().getName();
90

    
91
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
92
				"\n" +
93
				"At a first glance it seems that this is an eligible request and it will be processed asap. We will notify you if you need to take further actions and we will you keep you posted on its status.\n" +
94
				"\n" +
95
				"You may click on the link below at any time to follow the status of your request:\n" +
96
				link + "\n" +
97
				" \n" +
98
				"Best,\n" +
99
				"The OpenAIRE team";
100

    
101
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
102
	}
103

    
104
	@Override
105
	public void sendModeratorOKEmail(Request request, User moderator) throws MessagingException {
106
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] New funding request (" + request.getId() + ")";
107
		String link = baseAddress + "/#monitorFundingRequests";
108

    
109

    
110
		String text = "Dear moderator,\n" +
111
				"\n" +
112
				"We have received a request to fund for the following:\n" +
113
				"\n" +
114
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
115
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
116

    
117
		if (request.getPublication().getJournal() != null) {
118
			text += "Journal: " + request.getPublication().getJournal().getTitle();
119

    
120
			if (request.getPublication().getJournal().getPublisher() != null)
121
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
122

    
123
			text += "\n";
124
		} else if (request.getPublication().getPublisher() != null)
125
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
126

    
127

    
128
		String currencyName = null;
129
		if(request.getCurrency() != null )
130
			currencyName = request.getCurrency().getName();
131
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
132
				"\n" +
133
				"At a first glance it seems that this is an eligible request. Please visit the link below to validate and process the request:\n" +
134
				link + "\n" +
135
				" \n" +
136
				"Best,\n" +
137
				"The OpenAIRE team";
138

    
139
		mailLibrary.sendEmail(moderator.getEmail(), subject, text);
140
	}
141

    
142
	@Override
143
	public void sendRequesterIFFYEmail(Request request) throws MessagingException {
144
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request at " + new SimpleDateFormat("yyyy-MM-dd").format(request.getDate());
145

    
146
		String text = "Hello " + request.getUser().getFirstname() + ",\n" +
147
				" your request will be processed soon.The terms of agreement can be found here: " + termsOfAgreementUrl + "\n" +
148
				" The OpenAIRE Gold Open Access team.";
149

    
150
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
151
	}
152

    
153
	@Override
154
	public void sendModeratorIFFYEmail(Request request, User moderator) throws MessagingException {
155
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] New funding request (" + request.getId() + ")";
156
		String link = baseAddress + "/#monitorFundingRequests";
157

    
158

    
159
		String text = "Dear moderator,\n" +
160
				"\n" +
161
				"A new request has been submitted that needs your intervention:\n" +
162
				"\n" +
163
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
164
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
165

    
166
		if (request.getPublication().getJournal() != null) {
167
			text += "Journal: " + request.getPublication().getJournal().getTitle();
168

    
169
			if (request.getPublication().getJournal().getPublisher() != null)
170
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
171

    
172
			text += "\n";
173
		} else if (request.getPublication().getPublisher() != null)
174
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
175

    
176

    
177
		String currencyName = null;
178
		if(request.getCurrency() != null )
179
			currencyName = request.getCurrency().getName();
180

    
181
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
182
				"\n" +
183
				"At a first glance it seems that this is an eligible request. Please visit the link below to validate and process the request:\n" +
184
				link + "\n" +
185
				" \n" +
186
				"Best,\n" +
187
				"The OpenAIRE team";
188

    
189
		mailLibrary.sendEmail(moderator.getEmail(), subject, text);
190
	}
191

    
192
	@Override
193
	public void sendRequesterInitiallyApprovedEmail(Request request) throws MessagingException {
194
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request at " + new SimpleDateFormat("yyyy-MM-dd").format(request.getDate()) + " has been initially approved";
195
		String link = baseAddress + "/#existingFundingRequests";
196
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
197
				"\n" +
198
				"The following request is eligible and has been initially approved for funding but you must edit it before its final approval. Please, see the moderator's comments below.\n" +
199
				"\n" +
200
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
201
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
202

    
203
		if (request.getPublication().getJournal() != null) {
204
			text += "Journal: " + request.getPublication().getJournal().getTitle();
205

    
206
			if (request.getPublication().getJournal().getPublisher() != null)
207
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
208

    
209
			text += "\n";
210
		} else if (request.getPublication().getPublisher() != null)
211
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
212

    
213

    
214
		String currencyName = null;
215
		if(request.getCurrency() != null )
216
			currencyName = request.getCurrency().getName();
217
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
218
				"\n" +
219
				"If no invoice has been uploaded, or the publisher bank information is missing, our accounting office may put the request on hold until all information is in the system.\n" +
220
				"\n";
221

    
222
		text += formatComments(request);
223
		text += "You may click on the link below at any time to follow the status of your request:\n" +
224
				link + "\n" +
225
				" \n" +
226
				"Best,\n" +
227
				"The OpenAIRE team";
228

    
229
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
230
	}
231

    
232
	@Override
233
	public void sendRequesterApprovedEmail(Request request) throws MessagingException {
234
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request at " + new SimpleDateFormat("yyyy-MM-dd").format(request.getDate()) + " has been approved";
235
		String link = baseAddress + "/#existingFundingRequests";
236
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
237
				"\n" +
238
				"The following request is eligible and has been approved for funding:\n" +
239
				"\n" +
240
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
241
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
242

    
243
		if (request.getPublication().getJournal() != null) {
244
			text += "Journal: " + request.getPublication().getJournal().getTitle();
245

    
246
			if (request.getPublication().getJournal().getPublisher() != null)
247
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
248

    
249
			text += "\n";
250
		} else if (request.getPublication().getPublisher() != null)
251
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
252

    
253

    
254
		String currencyName = null;
255
		if(request.getCurrency() != null )
256
			currencyName = request.getCurrency().getName();
257
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
258
				"\n" +
259
				"If no invoice has been uploaded, or the publisher bank information is missing, our accounting office may put the request on hold until all information is in the system.\n" +
260
				"\n";
261

    
262
		text += formatComments(request);
263
		text += "You may click on the link below at any time to follow the status of your request:\n" +
264
				link + "\n" +
265
				" \n" +
266
				"Best,\n" +
267
				"The OpenAIRE team";
268
		System.out.println(text);
269
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
270
	}
271

    
272
	@Override
273
	public void sendRequesterRejectedEmail(Request request) throws MessagingException {
274
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request at " + new SimpleDateFormat("yyyy-MM-dd").format(request.getDate()) + " has been rejected";
275
		String link = baseAddress + "/#existingFundingRequests";
276

    
277
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
278
				"\n" +
279
				"The following request has been rejected:\n" +
280
				"\n" +
281
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
282
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
283

    
284
		if (request.getPublication().getJournal() != null) {
285
			text += "Journal: " + request.getPublication().getJournal().getTitle();
286

    
287
			if (request.getPublication().getJournal().getPublisher() != null)
288
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
289

    
290
			text += "\n";
291
		} else if (request.getPublication().getPublisher() != null)
292
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
293

    
294
		String currencyName = null;
295
		if(request.getCurrency() != null )
296
			currencyName = request.getCurrency().getName();
297
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
298
				"\n";
299
		text += formatComments(request);
300
		text += "You may click on the link below at any time to find more information:\n" +
301
				link + "\n" +
302
				" \n" +
303
				"Best,\n" +
304
				"The OpenAIRE team";
305

    
306
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
307
	}
308

    
309
	@Override
310
	public void sendModeratorNewBudgetEmail(User moderator, Budget budget) throws MessagingException {
311
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] New budget request";
312

    
313
		String text = "Hello " + moderator.getFirstname() + ",\n" +
314
				" A new budget request by " + budget.getUser().getFirstname() + " " + budget.getUser().getLastname() + " has been submitted!\n" +
315
				" The OpenAIRE Gold Open Access team.";
316

    
317
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
318
	}
319

    
320
	@Override
321
	public void sendUserNewBudgetEmail(Budget budget) throws MessagingException {
322
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] New budget request";
323

    
324
		String text = "Hello " + budget.getUser().getFirstname() + ",\n" +
325
				" Your budget request has been submitted. We'll process it as soon as possible!\n" +
326
				" The OpenAIRE Gold Open Access team.";
327

    
328
		mailLibrary.sendEmail(new String[]{budget.getUser().getEmail()}, subject, text);
329
	}
330

    
331
	@Override
332
	public void sendUserAcceptedBudgetEmail(Budget budget) throws MessagingException {
333
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your budget request";
334

    
335
		String text = "Hello " + budget.getUser().getFirstname() + ",\n" +
336
				" Your budget request has been accepted! Spend them wisely!\n" +
337
				" The OpenAIRE Gold Open Access team.";
338

    
339
		mailLibrary.sendEmail(new String[]{budget.getUser().getEmail()}, subject, text);
340
	}
341

    
342
	@Override
343
	public void sendModeratorAcceptedBudgetEmail(User moderator, Budget budget) throws MessagingException {
344
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Budget request accepted";
345

    
346
		String text = "Hello " + moderator.getFirstname() + ",\n" +
347
				" A budget request  by " + budget.getUser().getFirstname() + " " + budget.getUser().getLastname() + " has been accepted!\n" +
348
				" The OpenAIRE Gold Open Access team.";
349

    
350
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
351
	}
352

    
353
	@Override
354
	public void sendUserRejectedBudgetEmail(Budget budget) throws MessagingException {
355
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your budget request";
356

    
357
		String text = "Hello " + budget.getUser().getFirstname() + ",\n" +
358
				" Your budget request has been rejected :(\n" +
359
				" The OpenAIRE Gold Open Access team.";
360

    
361
		mailLibrary.sendEmail(new String[]{budget.getUser().getEmail()}, subject, text);
362
	}
363

    
364
	@Override
365
	public void sendModeratorRejectedBudgetEmail(User moderator, Budget budget) throws MessagingException {
366
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Budget request rejected";
367

    
368
		String text = "Hello " + moderator.getFirstname() + ",\n" +
369
				" A budget request  by " + budget.getUser().getFirstname() + " " + budget.getUser().getLastname() + " has been rejected.\n" +
370
				" The OpenAIRE Gold Open Access team.";
371

    
372
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
373
	}
374

    
375
	@Override
376
	public void sendUserRoleAcceptedEmail(User user, Role role) throws MessagingException {
377
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] " + role.getRole() + " status granted";
378

    
379
		String text = "Dear " + user.getFirstname() + " " + user.getLastname() + ",\n" +
380
				"\n" +
381
				"You have been upgraded/granted to the " + role.getRole() + " status.\n" +
382
				"\n" +
383
				"Best,\n" +
384
				"The OpenAIRE team";
385

    
386
		mailLibrary.sendEmail(new String[]{user.getEmail()}, subject, text);
387
	}
388

    
389
	@Override
390
	public void sendModeratorRoleAcceptedEmail(User moderator, User user, Role role) throws MessagingException {
391
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] " + role.getRole() + " status granted to user " + user.getFirstname() + " " + user.getLastname();
392

    
393
		String text = "Dear moderator,\n" +
394
				"\n" +
395
				"User " + user.getFirstname() + " " + user.getLastname();
396
		if (user.getAffiliations().size() > 0 && user.getAffiliations().get(0).getOrganization() != null &&
397
                user.getAffiliations().get(0).getOrganization().getName() != null)
398
			text += " from organization " + user.getAffiliations().get(0).getOrganization().getName();
399
		text += " has been upgraded/granted the " + role.getRole() + " status.\n" +
400
				" \n" +
401
				"Best,\n" +
402
				"The OpenAIRE team";
403

    
404
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
405
	}
406

    
407
	@Override
408
	public void sendUserRoleRejectedEmail(User user, Role role) throws MessagingException {
409
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] " + role.getRole() + " status not granted";
410
		// TODO use contact us link when ready
411
		String link = baseAddress + "/#home";
412

    
413
		String text = "Dear " + user.getFirstname() + " " + user.getLastname() + ",\n" +
414
				"\n" +
415
				"You have not been upgraded/granted the " + role.getRole() + " status.\n" +
416
				"\n" +
417
				"Contact us at " + link + " if you need further information.\n" +
418
				" \n" +
419
				"Best,\n" +
420
				"The OpenAIRE team";
421

    
422
		mailLibrary.sendEmail(new String[]{user.getEmail()}, subject, text);
423
	}
424

    
425
	@Override
426
	public void sendModeratorRoleRejectedEmail(User moderator, User user, Role role) throws MessagingException {
427
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] " + role.getRole() + " status NOT granted to user " + user.getFirstname() + " " + user.getLastname();
428

    
429
		String text = "Dear moderator,\n" +
430
				"\n" +
431
				"User " + user.getFirstname() + " " + user.getLastname();
432
		if (user.getAffiliations().size() > 0 && user.getAffiliations().get(0).getOrganization() != null
433
                && user.getAffiliations().get(0).getOrganization().getName() != null)
434
			text += " from organization " + user.getAffiliations().get(0).getOrganization().getName();
435
		text += "has not been upgraded/granted the " + role.getRole() + " status.\n" +
436
				" \n" +
437
				"Best,\n" +
438
				"The OpenAIRE team";
439

    
440
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
441
	}
442

    
443
	@Override
444
	public void sendUserRoleRequestedEmail(User user, List<Role> roles) throws MessagingException {
445
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] ";
446
		for (Role role : roles) {
447
			subject += role.getRole() + ", ";
448
		}
449
		subject = subject.substring(0, subject.length() - 2);
450
		subject += " status upgrade requested";
451
		// TODO use contact us link when ready
452
		String link = baseAddress + "/#home";
453

    
454
		String text = "Dear " + user.getFirstname() + " " + user.getLastname() + ",\n" +
455
				"\n" +
456
				"You have requested to upgrade your status to ";
457
		for (Role role : roles) {
458
			text += role.getRole() + ", ";
459
		}
460
		text = text.substring(0, text.length() - 2);
461
		text += "\n" +
462
				"We will process your request asap.\n" +
463
				"\n" +
464
				"If you don't hear us from us within the next few days, or need further information do not hesitate to contact us at " + link + ".\n" +
465
				" \n" +
466
				"Best,\n" +
467
				"The OpenAIRE team";
468

    
469
		System.out.println(text);
470
		mailLibrary.sendEmail(new String[]{user.getEmail()}, subject, text);
471
	}
472

    
473
	@Override
474
	public void sendModeratorRoleRequestedEmail(User moderator, User user, List<Role> roles) throws MessagingException {
475
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] ";
476
		for (Role role : roles) {
477
			subject += role.getRole() + ", ";
478
		}
479
		subject = subject.substring(0, subject.length() - 2);
480
		subject += " status upgrade requested by user " + user.getFirstname() + " " + user.getLastname();
481

    
482
		String text = "Dear moderator,\n" +
483
				"\n" +
484
				"User " + user.getFirstname() + " " + user.getLastname();
485
		if (user.getAffiliations().size() > 0 && user.getAffiliations().get(0).getOrganization() != null
486
                && user.getAffiliations().get(0).getOrganization().getName() != null)
487
			text += " from organization " + user.getAffiliations().get(0).getOrganization().getName();
488
		text += " has requested to upgraded/be granted the ";
489
		for (Role role : roles) {
490
			text += role.getRole() + ", ";
491
		}
492
		text = text.substring(0, text.length() - 2);
493
		text += " status.\n\n" +
494
				"Best,\n" +
495
				"The OpenAIRE team";
496

    
497
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
498
	}
499

    
500
	@Override
501
	public void sendRequesterInvoiceNotification(Request request) throws MessagingException {
502
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request " + request.getId() + " - missing invoice";
503
		// TODO use contact us link when ready
504
		String requestLink = baseAddress + "/#existingFundingRequests";
505

    
506
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
507
				"\n" +
508
				"The following request has been approved for funding but we are missing the invoice:\n" +
509
				"\n" +
510
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
511
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
512

    
513
		if (request.getPublication().getJournal() != null) {
514
			text += "Journal: " + request.getPublication().getJournal().getTitle();
515

    
516
			if (request.getPublication().getJournal().getPublisher() != null)
517
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
518

    
519
			text += "\n";
520
		} else if (request.getPublication().getPublisher() != null)
521
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
522

    
523
		String currencyName = null;
524
		if(request.getCurrency() != null )
525
			currencyName = request.getCurrency().getName();
526
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
527
				"\n" +
528
				"Please make sure that either you or the publisher uploads the invoice in our system. Unless you do so, the request will be left in a pending state.\n" +
529
				"\n" +
530
				"All invoices must be addressed to: \n" +
531
				"\"\"Athena\"\" Research Centre\n" +
532
				"Artemidos 6 & Epidavrou\n" +
533
				"GR-151 25, Athens - GREECE\n" +
534
				"Phone: +30 210 6875 300 Fax +30 210 6875 485\n" +
535
				"VAT NUMBER: EL999723442\n" +
536
				"\n";
537
		text += formatComments(request);
538
		text += "Click on the link below at any time to follow the status of your request:\n" +
539
				requestLink + "\n" +
540
				"\n" +
541
				"Feel free to contact us at " + contactLink + " if you need further information.\n" +
542
				" \n" +
543
				"Best,\n" +
544
				"The OpenAIRE team";
545

    
546
		mailLibrary.sendEmail(new String[]{request.getUser().getEmail()}, subject, text);
547
	}
548

    
549
	@Override
550
	public void sendPublisherInvoiceNotification(Request request) throws MessagingException {
551
		Publisher publisher = request.getPublication().getPublisher() != null ? request.getPublication().getPublisher() : request.getPublication().getJournal().getPublisher();
552
		String publisherEmail = null;
553

    
554
		if (request.getPublisher().getEmail() != null)
555
			publisherEmail = request.getPublisher().getEmail();
556
		else {
557
			if (publisher != null)
558
				publisherEmail = publisher.getEmail();
559
		}
560

    
561
		if (publisherEmail != null) {
562
			String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Funding request " + request.getId() + " - missing invoice";
563
			// TODO use contact us link when ready
564
			String requestLink = baseAddress + "/#existingFundingRequests";
565
			User contact;
566
			String text;
567

    
568
			if (publisher != null && publisher.getContacts().get(0) != null && publisher.getContacts().get(0).getEmail() != null) {
569
				contact = UserDAO.getUserByEmail(publisher.getContacts().get(0).getEmail());
570
				text = "Dear " + contact.getFirstname() + " " + contact.getLastname() + ",\n";
571
			} else {
572
				text = "Dear Madame/Sir,\n";
573
			}
574

    
575
			text += "The following request by " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + " has been approved for funding but we are missing the invoice:\n" +
576
					"\n" +
577
					"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
578
					"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
579

    
580
			if (request.getPublication().getJournal() != null) {
581
				text += "Journal: " + request.getPublication().getJournal().getTitle();
582

    
583
				if (request.getPublication().getJournal().getPublisher() != null)
584
					text += " , " + request.getPublication().getJournal().getPublisher().getName();
585

    
586
				text += "\n";
587
			} else if (request.getPublication().getPublisher() != null)
588
				text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
589

    
590
			text += "Requested funding: " + request.getFundingrequested() + " " + request.getCurrency().getName() + "\n" +
591
					"\n" +
592
					"If you haven't done so already, sign in our system and see how to upload the invoice. Unless you or do so, the request will be left in a pending state.\n" +
593
					"\n" +
594
					"All invoices must be addressed to: \n" +
595
					"\"\"Athena\"\" Research Centre\n" +
596
					"Artemidos 6 & Epidavrou\n" +
597
					"GR-151 25, Athens - GREECE\n" +
598
					"Phone: +30 210 6875 300 Fax +30 210 6875 485\n" +
599
					"VAT NUMBER: EL999723442\n" +
600
					"\n";
601

    
602
			text += formatComments(request);
603
			text += "Click on the link below at any time to follow the status of this request:\n" +
604
					requestLink + "\n" +
605
					"\n" +
606
					"Feel free to contact us at " + contactLink + " if you need further information.\n" +
607
					" \n" +
608
					"Best,\n" +
609
					"The OpenAIRE team";
610

    
611
			mailLibrary.sendEmail(new String[]{publisherEmail}, subject, text);
612
		}
613
	}
614

    
615
	@Override
616
	public void sendAccountingRequestApprovedEmail(User User, Request request) throws MessagingException {
617
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Funding request " + request.getId() + " approved";
618
		// TODO use contact us link when ready
619
		String requestLink = baseAddress + "/#accountingMonitorFundingRequests";
620

    
621
		String text = "Dear Accounting Officer,\n" +
622
				"\n" +
623
				"The following request has been approved for funding:\n" +
624
				"\n" +
625
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
626
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
627

    
628
		if (request.getPublication().getJournal() != null) {
629
			text += "Journal: " + request.getPublication().getJournal().getTitle();
630

    
631
			if (request.getPublication().getJournal().getPublisher() != null)
632
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
633

    
634
			text += "\n";
635
		} else if (request.getPublication().getPublisher() != null)
636
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
637

    
638
		String currencyName = null;
639
		if(request.getCurrency() != null )
640
			currencyName = request.getCurrency().getName();
641

    
642
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
643
				"\n";
644
		text += "Click on the link below to visit the publication data and related accounting info:\n" +
645
				requestLink + "\n" +
646
				"\n" +
647
				"Best,\n" +
648
				"The OpenAIRE team";
649

    
650
		mailLibrary.sendEmail(new String[]{User.getEmail()}, subject, text);
651
	}
652

    
653
	@Override
654
	public void sendRequesterPaidEmail(Request request) throws MessagingException {
655
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request " + request.getId() + " has been paid";
656

    
657
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
658
				"\n" +
659
				"The following request has been completed and APCs have been paid:\n" +
660
				"\n" +
661
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
662
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
663

    
664
		if (request.getPublication().getJournal() != null) {
665
			text += "Journal: " + request.getPublication().getJournal().getTitle();
666

    
667
			if (request.getPublication().getJournal().getPublisher() != null)
668
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
669

    
670
			text += "\n";
671
		} else if (request.getPublication().getPublisher() != null)
672
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
673

    
674

    
675
		String currencyName = null;
676
		if(request.getCurrency() != null )
677
			currencyName = request.getCurrency().getName();
678

    
679
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
680
				"\n";
681
		text += "APC paid: " + request.getApcPaid() + " Euro\n";
682
		text += "Additional costs: " + (request.getOtherCost() + request.getTransferCost()) + " Euro\n";
683
		text += "Bank Transfer Document: " + baseAddress + "/GoldOAPortal/bankTransfer?requestId=" + request.getId() + "\n\n";
684
		text += "Please make sure that you or the researcher\n" +
685
				"1. update the DOI in our system, and \n" +
686
				"2. deposit the final manuscript in an OpenAIRE compliant repository (see list here: " +
687
				"https://www.openaire.eu/search/data-providers#pubRepo#comp3#comp2plus)\n";
688

    
689
		text += formatComments(request);
690
		text += "Feel free to contact us at " + contactLink + " if you need further information.\n\n" +
691
				"Best,\n" +
692
				"The OpenAIRE team";
693

    
694
		mailLibrary.sendEmail(new String[]{request.getUser().getEmail()}, subject, text);
695
	}
696

    
697
	@Override
698
	public void sendEvaPaidEmail(String evaEmail, Request request) throws MessagingException {
699
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Funding request " + request.getId() + " has been paid";
700

    
701
		String text = "Dear Eva,\n" +
702
				"\n" +
703
				"The following request has been completed and APCs have been paid:\n" +
704
				"\n" +
705
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
706
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
707

    
708
		if (request.getPublication().getJournal() != null) {
709
			text += "Journal: " + request.getPublication().getJournal().getTitle();
710

    
711
			if (request.getPublication().getJournal().getPublisher() != null)
712
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
713

    
714
			text += "\n";
715
		} else if (request.getPublication().getPublisher() != null)
716
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
717

    
718
		text += "Requested funding: " + request.getFundingrequested() + " " + request.getCurrency().getName() + "\n" +
719
				"\n";
720
		text += "APC paid: " + request.getApcPaid() + " Euro\n";
721
		text += "Additional costs: " + (request.getOtherCost() + request.getTransferCost()) + " Euro\n\n";
722
		text += "Invoice: " + baseAddress + "/GoldOAPortal/invoice?invoiceId=" + request.getInvoice().getId() + "\n";
723
		text += "Bank Transfer Document: " + baseAddress + "/GoldOAPortal/bankTransfer?requestId=" + request.getId() + "\n\n";
724

    
725
		text += formatComments(request);
726
		text += "Feel free to contact us at " + contactLink + " if you need further information.\n\n" +
727
				"Best,\n" +
728
				"The OpenAIRE team";
729

    
730
		mailLibrary.sendEmail(new String[]{evaEmail}, subject, text);
731
	}
732

    
733
	@Override
734
	public void sendPublisherPaidEmail(Request request) throws MessagingException {
735
		Publisher publisher = request.getPublication().getPublisher() != null ? request.getPublication().getPublisher() : request.getPublication().getJournal().getPublisher();
736
		String publisherEmail = null;
737

    
738
		if (request.getPublisher().getEmail() != null)
739
			publisherEmail = request.getPublisher().getEmail();
740
		else {
741
			if (publisher != null)
742
				publisherEmail = publisher.getEmail();
743
		}
744

    
745
		if (publisherEmail != null) {
746
			String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Funding request " + request.getId() + " for invoice " + request.getInvoice().getNumber() + " has been paid";
747
			String text;
748
			User contact;
749

    
750
			if (publisher != null && publisher.getContacts().get(0).getEmail() != null && publisher.getContacts().get(0).getEmail() != null) {
751
				contact = UserDAO.getUserByEmail(publisher.getContacts().get(0).getEmail());
752
				text = "Dear " + contact.getFirstname() + " " + contact.getLastname() + ",\n";
753
			} else {
754
				text = "Dear Madame/Sir,\n";
755
			}
756

    
757
			text += "\n" +
758
					"The following request has been completed and APCs have been paid:\n" +
759
					"\n" +
760
					"Invoice #: " + request.getInvoice().getNumber() + "\n" +
761
					"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
762
					"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
763

    
764
			if (request.getPublication().getJournal() != null) {
765
				text += "Journal: " + request.getPublication().getJournal().getTitle();
766

    
767
				if (request.getPublication().getJournal().getPublisher() != null)
768
					text += " , " + request.getPublication().getJournal().getPublisher().getName();
769

    
770
				text += "\n";
771
			} else if (request.getPublication().getPublisher() != null)
772
				text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
773

    
774

    
775
			String currencyName = null;
776
			if(request.getCurrency() != null )
777
				currencyName = request.getCurrency().getName();
778

    
779
			text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
780
					"\n";
781
			text += "APC paid: " + request.getApcPaid() + " Euro\n";
782
			text += "Additional costs: " + (request.getOtherCost() + request.getTransferCost()) + " Euro\n";
783
			text += "Bank Transfer Document: " + baseAddress + "/GoldOAPortal/bankTransfer?requestId=" + request.getId() + "\n\n";
784
			text += "Please make sure that you or the researcher\n" +
785
					"1. update the DOI in our system, and \n" +
786
					"2. deposit the final manuscript in an OpenAIRE compliant repository (see list here)\n" +
787
					"\n";
788
			text += formatComments(request);
789
			text += "Feel free to contact us at " + contactLink + " if you need further information.\n\n" +
790
					"Best,\n" +
791
					"The OpenAIRE team";
792

    
793
			mailLibrary.sendEmail(new String[]{publisherEmail}, subject, text);
794
		}
795
	}
796

    
797
	@Override
798
	public void sendModeratorPaidEmail(User moderator, Request request) throws MessagingException {
799
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Funding request " + request.getId() + " for invoice " + request.getInvoice().getNumber() + " has been paid";
800
		String text;
801

    
802
		text = "Dear moderator,\n";
803
		text += "\n" +
804
				"The following request has been completed and APCs have been paid:\n" +
805
				"\n" +
806
				"Invoice #: " + request.getInvoice().getNumber() + "\n" +
807
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
808
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
809

    
810
		if (request.getPublication().getJournal() != null) {
811
			text += "Journal: " + request.getPublication().getJournal().getTitle();
812

    
813
			if (request.getPublication().getJournal().getPublisher() != null)
814
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
815

    
816
			text += "\n";
817
		} else if (request.getPublication().getPublisher() != null)
818
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
819

    
820
		String currencyName = null;
821
		if(request.getCurrency() != null )
822
			currencyName = request.getCurrency().getName();
823

    
824
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
825
				"\n";
826
		text += "APC paid: " + request.getApcPaid() + " Euro\n";
827
		text += "Additional costs: " + (request.getOtherCost() + request.getTransferCost()) + " Euro\n";
828
		text += "Bank Transfer Document: " + baseAddress + "/GoldOAPortal/bankTransfer?requestId=" + request.getId() + "\n\n";
829

    
830
		text += "Best,\n" +
831
				"The OpenAIRE team";
832

    
833
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
834
	}
835

    
836
	@Override
837
	public void sendRequesterOnHoldEmail(Request request) throws MessagingException {
838
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request " + request.getId() + " has been put on hold";
839
		String requestLink = baseAddress + "/#existingFundingRequests";
840

    
841
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
842
				"\n" +
843
				"The following request has been put on hold by our accounting office:\n" +
844
				"\n" +
845
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
846
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
847

    
848
		if (request.getPublication().getJournal() != null) {
849
			text += "Journal: " + request.getPublication().getJournal().getTitle();
850

    
851
			if (request.getPublication().getJournal().getPublisher() != null)
852
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
853

    
854
			text += "\n";
855
		} else if (request.getPublication().getPublisher() != null)
856
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
857

    
858
		String currencyName = null;
859
		if(request.getCurrency() != null )
860
			currencyName = request.getCurrency().getName();
861

    
862
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
863
				"\n";
864
		text += formatComments(request);
865
		text += "Click on the link below at any time to follow the status of your request:\n" +
866
				requestLink + "\n" +
867
				"\n" +
868
				"Feel free to contact us at " + contactLink + " if you need further information.\n\n" +
869
				"Best,\n" +
870
				"The OpenAIRE team";
871

    
872
		mailLibrary.sendEmail(new String[]{request.getUser().getEmail()}, subject, text);
873
	}
874

    
875
	@Override
876
	public void sendModeratorOnHoldEmail(User moderator, Request request) throws MessagingException {
877
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] The funding request " + request.getId() + " has been put on hold";
878

    
879
		String text = "Dear Moderator,\n" +
880
				"\n" +
881
				"The following request has been put on hold by our accounting office:\n" +
882
				"\n" +
883
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
884
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
885

    
886
		if (request.getPublication().getJournal() != null) {
887
			text += "Journal: " + request.getPublication().getJournal().getTitle();
888

    
889
			if (request.getPublication().getJournal().getPublisher() != null)
890
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
891

    
892
			text += "\n";
893
		} else if (request.getPublication().getPublisher() != null)
894
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
895

    
896

    
897
		String currencyName = null;
898
		if(request.getCurrency() != null )
899
			currencyName = request.getCurrency().getName();
900

    
901
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
902
				"\n";
903
		text += formatComments(request);
904
		text += "Best,\n" +
905
				"The OpenAIRE team";
906

    
907
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
908
	}
909

    
910
	private String formatComments(Request request) {
911
		String text = "";
912

    
913
		if (request.getRequestComments() != null && request.getRequestComments().size() > 0) {
914
			text = "IMPORTANT:\n";
915

    
916
			for (int i = 0; i < request.getRequestComments().size(); i++) {
917
				Comment comment = request.getRequestComments().get(i);
918

    
919
				if (i > 0)
920
					text += "\n";
921

    
922
				text += comment.getComment() + " -" + comment.getUser().getFirstname() + " " + comment.getUser().getLastname() + " @ " + new SimpleDateFormat("yyyy-MM-dd").format(comment.getDate());
923
			}
924

    
925
			//Comment comment = request.getRequestComments().get(request.getRequestComments().size() - 1);
926

    
927
 			//text += comment.getComment() + " -" + comment.getUser().getFirstname() + " " + comment.getUser().getLastname() + " @ " + new SimpleDateFormat("yyyy-MM-dd").format(comment.getDate());
928
			text += "\n\n";
929
		}
930

    
931
		return text;
932
	}
933

    
934
	@Override
935
	public void sendPublisherOnHoldEmail(Request request) throws MessagingException {
936
		Publisher publisher = request.getPublication().getPublisher() != null ? request.getPublication().getPublisher() : request.getPublication().getJournal().getPublisher();
937
		String publisherEmail = null;
938

    
939
		if (request.getPublisher().getEmail() != null)
940
			publisherEmail = request.getPublisher().getEmail();
941
		else {
942
			if (publisher != null)
943
				publisherEmail = publisher.getEmail();
944
		}
945

    
946
		if (publisherEmail != null) {
947
			String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Funding request " + request.getId() + " for invoice " + request.getInvoice().getNumber() + " has been put on hold";
948
			String requestLink = baseAddress + "/#existingFundingRequests";
949
			String text;
950
			User contact;
951

    
952
			if (publisher != null && publisher.getContacts() != null && publisher.getContacts().get(0).getEmail() != null) {
953
				contact = UserDAO.getUserByEmail(publisher.getContacts().get(0).getEmail());
954
				text = "Dear " + contact.getFirstname() + " " + contact.getLastname() + ",\n";
955
			} else {
956
				text = "Dear Madame/Sir,\n";
957
			}
958

    
959
			text += "\n" +
960
					"The following request has been put on hold by our accounting office:\n" +
961
					"\n" +
962
					"Invoice #: " + request.getInvoice().getNumber() + "\n" +
963
					"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
964
					"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
965

    
966
			if (request.getPublication().getJournal() != null) {
967
				text += "Journal: " + request.getPublication().getJournal().getTitle();
968

    
969
				if (request.getPublication().getJournal().getPublisher() != null)
970
					text += " , " + request.getPublication().getJournal().getPublisher().getName();
971

    
972
				text += "\n";
973
			} else if (request.getPublication().getPublisher() != null)
974
				text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
975

    
976
			String currencyName = null;
977
			if(request.getCurrency() != null )
978
				currencyName = request.getCurrency().getName();
979

    
980
			text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
981
					"\n";
982
			text += formatComments(request);
983
			text += "Click on the link below at any time to follow the status of your request:\n" +
984
					requestLink + "\n" +
985
					"\n" +
986
					"Feel free to contact us at " + contactLink + " if you need further information.\n\n" +
987
					"Best,\n" +
988
					"The OpenAIRE team";
989

    
990
			mailLibrary.sendEmail(new String[]{publisherEmail}, subject, text);
991
		}
992
	}
993

    
994
	@Override
995
	public void sendRequesterDeniedEmail(Request request) throws MessagingException {
996
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request " + request.getId() + " has been denied payment";
997
		String requestLink = baseAddress + "/#existingFundingRequests";
998

    
999
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
1000
				"\n" +
1001
				"The following request has been denied payment by our accounting office:\n" +
1002
				"\n" +
1003
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
1004
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
1005

    
1006
		if (request.getPublication().getJournal() != null) {
1007
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1008

    
1009
			if (request.getPublication().getJournal().getPublisher() != null)
1010
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1011

    
1012
			text += "\n";
1013
		} else if (request.getPublication().getPublisher() != null)
1014
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1015

    
1016
		text += "Requested funding: " + request.getFundingrequested() + " " + request.getCurrency().getName() + "\n" +
1017
				"\n";
1018
		text += formatComments(request);
1019
		text += "Click on the link below at any time to follow the status of your request:\n" +
1020
				requestLink + "\n" +
1021
				"\n" +
1022
				"Feel free to contact us at " + contactLink + " if you need further information.\n\n" +
1023
				"Best,\n" +
1024
				"The OpenAIRE team";
1025

    
1026
		mailLibrary.sendEmail(new String[]{request.getUser().getEmail()}, subject, text);
1027
	}
1028

    
1029
	@Override
1030
	public void sendModeratorDeniedEmail(User moderator, Request request) throws MessagingException {
1031
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] The funding request " + request.getId() + " has been denied payment";
1032

    
1033
		String text = "Dear Moderator,\n" +
1034
				"\n" +
1035
				"The following request has been denied payment by our accounting office:\n" +
1036
				"\n" +
1037
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
1038
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
1039

    
1040
		if (request.getPublication().getJournal() != null) {
1041
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1042

    
1043
			if (request.getPublication().getJournal().getPublisher() != null)
1044
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1045

    
1046
			text += "\n";
1047
		} else if (request.getPublication().getPublisher() != null)
1048
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1049

    
1050
		String currencyName = null;
1051
		if(request.getCurrency() != null )
1052
			currencyName = request.getCurrency().getName();
1053

    
1054
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
1055
				"\n";
1056
		text += formatComments(request);
1057
		text += "Best,\n" +
1058
				"The OpenAIRE team";
1059

    
1060
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
1061
	}
1062

    
1063
	@Override
1064
	public void sendModeratorProcessingEmail(User moderator, Request request) throws MessagingException {
1065
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] The funding request " + request.getId() + " is being processed";
1066

    
1067
		String text = "Dear Moderator,\n" +
1068
				"\n" +
1069
				"The following request is being processed by our accounting office:\n" +
1070
				"\n" +
1071
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
1072
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
1073

    
1074
		if (request.getPublication().getJournal() != null) {
1075
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1076

    
1077
			if (request.getPublication().getJournal().getPublisher() != null)
1078
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1079

    
1080
			text += "\n";
1081
		} else if (request.getPublication().getPublisher() != null)
1082
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1083

    
1084
		String currencyName = null;
1085
		if(request.getCurrency() != null )
1086
			currencyName = request.getCurrency().getName();
1087

    
1088
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
1089
				"\n";
1090
		text += formatComments(request);
1091
		text += "Best,\n" +
1092
				"The OpenAIRE team";
1093

    
1094
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
1095
	}
1096

    
1097
	@Override
1098
	public void sendModeratorInvoiceUploaded(User moderator, Request request) throws MessagingException {
1099
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Invoice for funding request " + request.getId() + " has been uploaded";
1100

    
1101
		String text = "Dear Moderator,\n" +
1102
				"\n" +
1103
				"The invoice for the following request has been uploaded:\n" +
1104
				"\n" +
1105
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
1106
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
1107

    
1108
		if (request.getPublication().getJournal() != null) {
1109
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1110

    
1111
			if (request.getPublication().getJournal().getPublisher() != null)
1112
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1113

    
1114
			text += "\n";
1115
		} else if (request.getPublication().getPublisher() != null)
1116
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1117

    
1118
		String currencyName = null;
1119
		if(request.getCurrency() != null )
1120
			currencyName = request.getCurrency().getName();
1121

    
1122

    
1123
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
1124
				"\n";
1125
		text += formatComments(request);
1126
		text += "Best,\n" +
1127
				"The OpenAIRE team";
1128

    
1129
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
1130
	}
1131

    
1132
	@Override
1133
	public void sendPublisherDeniedEmail(Request request) throws MessagingException {
1134
		//
1135
	}
1136

    
1137
	@Override
1138
	public void sendCoordinatorRequestSubmittedEmail(User coordinator, Request request) throws MessagingException {
1139
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] A new funding request (" + request.getId() + ") has been submitted";
1140
		String portalLink = baseAddress + "/#home";
1141

    
1142
		String text = "Dear " + coordinator.getFirstname() + " " + coordinator.getLastname() + ",\n" +
1143
				"We are contacting you in your capacity of project coordinator for project " + request.getProject().getAcronym() + ".\n" +
1144
				"As you may already know your project is eligible for publising funds from the OpenAIRE FP7 post-grant Gold Open Access Pilot " + portalLink + ".\n";
1145

    
1146

    
1147
		if (!request.getUser().getId().equals(request.getResearcher().getId())) {
1148
			text += request.getUser().getFirstname() + " " + request.getUser().getLastname() + " from " + request.getUser().getAffiliations().get(0).getOrganization().getName() +
1149
					" has requested on behalf of " + request.getResearcher().getFirstname() + " " + request.getResearcher().getLastname() +
1150
					" the funding of the following publication:\n";
1151
		} else {
1152
			text += request.getResearcher().getFirstname() + " " + request.getResearcher().getLastname() + " from " + request.getUser().getAffiliations().get(0).getOrganization().getName() +
1153
					" has requested the funding of the following publication:\n";
1154
		}
1155

    
1156
		text += "\n";
1157
		text += "Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
1158

    
1159
		if (request.getPublication().getJournal() != null) {
1160
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1161

    
1162
			if (request.getPublication().getJournal().getPublisher() != null)
1163
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1164

    
1165
			text += "\n";
1166
		} else if (request.getPublication().getPublisher() != null)
1167
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1168

    
1169
		String currencyName = null;
1170
		if(request.getCurrency() != null )
1171
			currencyName = request.getCurrency().getName();
1172

    
1173
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
1174
				"\n";
1175

    
1176
		text += "As there is a limit of 3 publications from each project from this Pilot and would like to ensure a fair use of the fund. For the project's best interests, please let us know if there is any reason why we should not proceed with the requestd funding within the next 3 working days.\n";
1177
		text += "Feel free to contact us at " + this.contactLink + " if you need further information.\n\n" +
1178
				"Best,\n" +
1179
				"The OpenAIRE team";
1180

    
1181
		mailLibrary.sendEmail(coordinator.getEmail(), subject, text);
1182
	}
1183

    
1184
	public String getBaseAddress() {
1185
		return baseAddress;
1186
	}
1187

    
1188
	public void setBaseAddress(String baseAddress) {
1189
		this.baseAddress = baseAddress;
1190
	}
1191

    
1192
	public String getTermsOfAgreementUrl() {
1193
		return termsOfAgreementUrl;
1194
	}
1195

    
1196
	public void setTermsOfAgreementUrl(String termsOfAgreementUrl) {
1197
		this.termsOfAgreementUrl = termsOfAgreementUrl;
1198
	}
1199
}
(2-2/7)