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.stereotype.Service;
8

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

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

    
17

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

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

    
27
	private String baseAddress;
28
	private String termsOfAgreementUrl;
29
	
30
	String contactLink = "postgrantpilotinfo@openaire.eu";
31

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

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

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

    
57
		mailLibrary.sendEmail(user.getEmail(), subject, message);
58
	}
59

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

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

    
72
		if (request.getPublication().getJournal() != null) {
73
			text += "Journal: " + request.getPublication().getJournal().getTitle();
74

    
75
			if (request.getPublication().getJournal().getPublisher() != null)
76
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
77

    
78
			text += "\n";
79
		} else if (request.getPublication().getPublisher() != null)
80
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
81

    
82

    
83
		String currencyName = null;
84
		if(request.getCurrency() != null )
85
			currencyName = request.getCurrency().getName();
86

    
87
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
88
				"\n" +
89
				"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" +
90
				"\n" +
91
				"You may click on the link below at any time to follow the status of your request:\n" +
92
				link + "\n" +
93
				" \n" +
94
				"Best,\n" +
95
				"The OpenAIRE team";
96

    
97
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
98
	}
99

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

    
105

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

    
113
		if (request.getPublication().getJournal() != null) {
114
			text += "Journal: " + request.getPublication().getJournal().getTitle();
115

    
116
			if (request.getPublication().getJournal().getPublisher() != null)
117
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
118

    
119
			text += "\n";
120
		} else if (request.getPublication().getPublisher() != null)
121
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
122

    
123

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

    
135
		mailLibrary.sendEmail(moderator.getEmail(), subject, text);
136
	}
137

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

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

    
146
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
147
	}
148

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

    
154

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

    
162
		if (request.getPublication().getJournal() != null) {
163
			text += "Journal: " + request.getPublication().getJournal().getTitle();
164

    
165
			if (request.getPublication().getJournal().getPublisher() != null)
166
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
167

    
168
			text += "\n";
169
		} else if (request.getPublication().getPublisher() != null)
170
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
171

    
172

    
173
		String currencyName = null;
174
		if(request.getCurrency() != null )
175
			currencyName = request.getCurrency().getName();
176

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

    
185
		mailLibrary.sendEmail(moderator.getEmail(), subject, text);
186
	}
187

    
188
	@Override
189
	public void sendRequesterInitiallyApprovedEmail(Request request) throws MessagingException {
190
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your funding request at " + new SimpleDateFormat("yyyy-MM-dd").format(request.getDate()) + " has been initially approved";
191
		String link = baseAddress + "/#existingFundingRequests";
192
		String text = "Dear " + request.getUser().getFirstname() + " " + request.getUser().getLastname() + ",\n" +
193
				"\n" +
194
				"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" +
195
				"\n" +
196
				"Project: " + request.getProject().getAcronym() + " - " + request.getProject().getGrant() + "\n" +
197
				"Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
198

    
199
		if (request.getPublication().getJournal() != null) {
200
			text += "Journal: " + request.getPublication().getJournal().getTitle();
201

    
202
			if (request.getPublication().getJournal().getPublisher() != null)
203
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
204

    
205
			text += "\n";
206
		} else if (request.getPublication().getPublisher() != null)
207
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
208

    
209

    
210
		String currencyName = null;
211
		if(request.getCurrency() != null )
212
			currencyName = request.getCurrency().getName();
213
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
214
				"\n" +
215
				"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" +
216
				"\n";
217

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

    
225
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
226
	}
227

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

    
239
		if (request.getPublication().getJournal() != null) {
240
			text += "Journal: " + request.getPublication().getJournal().getTitle();
241

    
242
			if (request.getPublication().getJournal().getPublisher() != null)
243
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
244

    
245
			text += "\n";
246
		} else if (request.getPublication().getPublisher() != null)
247
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
248

    
249

    
250
		String currencyName = null;
251
		if(request.getCurrency() != null )
252
			currencyName = request.getCurrency().getName();
253
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
254
				"\n" +
255
				"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" +
256
				"\n";
257

    
258
		text += formatComments(request);
259
		text += "You may click on the link below at any time to follow the status of your request:\n" +
260
				link + "\n" +
261
				" \n" +
262
				"Best,\n" +
263
				"The OpenAIRE team";
264

    
265
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
266
	}
267

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

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

    
280
		if (request.getPublication().getJournal() != null) {
281
			text += "Journal: " + request.getPublication().getJournal().getTitle();
282

    
283
			if (request.getPublication().getJournal().getPublisher() != null)
284
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
285

    
286
			text += "\n";
287
		} else if (request.getPublication().getPublisher() != null)
288
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
289

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

    
302
		mailLibrary.sendEmail(request.getUser().getEmail(), subject, text);
303
	}
304

    
305
	@Override
306
	public void sendModeratorNewBudgetEmail(User moderator, Budget budget) throws MessagingException {
307
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] New budget request";
308

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

    
313
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
314
	}
315

    
316
	@Override
317
	public void sendUserNewBudgetEmail(Budget budget) throws MessagingException {
318
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] New budget request";
319

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

    
324
		mailLibrary.sendEmail(new String[]{budget.getUser().getEmail()}, subject, text);
325
	}
326

    
327
	@Override
328
	public void sendUserAcceptedBudgetEmail(Budget budget) throws MessagingException {
329
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your budget request";
330

    
331
		String text = "Hello " + budget.getUser().getFirstname() + ",\n" +
332
				" Your budget request has been accepted! Spend them wisely!\n" +
333
				" The OpenAIRE Gold Open Access team.";
334

    
335
		mailLibrary.sendEmail(new String[]{budget.getUser().getEmail()}, subject, text);
336
	}
337

    
338
	@Override
339
	public void sendModeratorAcceptedBudgetEmail(User moderator, Budget budget) throws MessagingException {
340
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Budget request accepted";
341

    
342
		String text = "Hello " + moderator.getFirstname() + ",\n" +
343
				" A budget request  by " + budget.getUser().getFirstname() + " " + budget.getUser().getLastname() + " has been accepted!\n" +
344
				" The OpenAIRE Gold Open Access team.";
345

    
346
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
347
	}
348

    
349
	@Override
350
	public void sendUserRejectedBudgetEmail(Budget budget) throws MessagingException {
351
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Your budget request";
352

    
353
		String text = "Hello " + budget.getUser().getFirstname() + ",\n" +
354
				" Your budget request has been rejected :(\n" +
355
				" The OpenAIRE Gold Open Access team.";
356

    
357
		mailLibrary.sendEmail(new String[]{budget.getUser().getEmail()}, subject, text);
358
	}
359

    
360
	@Override
361
	public void sendModeratorRejectedBudgetEmail(User moderator, Budget budget) throws MessagingException {
362
		String subject = "[OpenAIRE-FP7-Post-Grant-OA-Pilot] Budget request rejected";
363

    
364
		String text = "Hello " + moderator.getFirstname() + ",\n" +
365
				" A budget request  by " + budget.getUser().getFirstname() + " " + budget.getUser().getLastname() + " has been rejected.\n" +
366
				" The OpenAIRE Gold Open Access team.";
367

    
368
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
369
	}
370

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

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

    
382
		mailLibrary.sendEmail(new String[]{user.getEmail()}, subject, text);
383
	}
384

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

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

    
400
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
401
	}
402

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

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

    
418
		mailLibrary.sendEmail(new String[]{user.getEmail()}, subject, text);
419
	}
420

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

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

    
436
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
437
	}
438

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

    
450
		String text = "Dear " + user.getFirstname() + " " + user.getLastname() + ",\n" +
451
				"\n" +
452
				"You have requested to upgrade your status to ";
453
		for (Role role : roles) {
454
			text += role.getRole() + ", ";
455
		}
456
		text = text.substring(0, text.length() - 2);
457
		text += "\n" +
458
				"We will process your request asap.\n" +
459
				"\n" +
460
				"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" +
461
				" \n" +
462
				"Best,\n" +
463
				"The OpenAIRE team";
464

    
465
		System.out.println(text);
466
		mailLibrary.sendEmail(new String[]{user.getEmail()}, subject, text);
467
	}
468

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

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

    
493
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
494
	}
495

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

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

    
509
		if (request.getPublication().getJournal() != null) {
510
			text += "Journal: " + request.getPublication().getJournal().getTitle();
511

    
512
			if (request.getPublication().getJournal().getPublisher() != null)
513
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
514

    
515
			text += "\n";
516
		} else if (request.getPublication().getPublisher() != null)
517
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
518

    
519
		String currencyName = null;
520
		if(request.getCurrency() != null )
521
			currencyName = request.getCurrency().getName();
522
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
523
				"\n" +
524
				"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" +
525
				"\n" +
526
				"All invoices must be addressed to: \n" +
527
				"\"\"Athena\"\" Research Centre\n" +
528
				"Artemidos 6 & Epidavrou\n" +
529
				"GR-151 25, Athens - GREECE\n" +
530
				"Phone: +30 210 6875 300 Fax +30 210 6875 485\n" +
531
				"VAT NUMBER: EL999723442\n" +
532
				"\n";
533
		text += formatComments(request);
534
		text += "Click on the link below at any time to follow the status of your request:\n" +
535
				requestLink + "\n" +
536
				"\n" +
537
				"Feel free to contact us at " + contactLink + " if you need further information.\n" +
538
				" \n" +
539
				"Best,\n" +
540
				"The OpenAIRE team";
541

    
542
		mailLibrary.sendEmail(new String[]{request.getUser().getEmail()}, subject, text);
543
	}
544

    
545
	@Override
546
	public void sendPublisherInvoiceNotification(Request request) throws MessagingException {
547
		Publisher publisher = request.getPublication().getPublisher() != null ? request.getPublication().getPublisher() : request.getPublication().getJournal().getPublisher();
548
		String publisherEmail = null;
549

    
550
		if (request.getPublisher().getEmail() != null)
551
			publisherEmail = request.getPublisher().getEmail();
552
		else {
553
			if (publisher != null)
554
				publisherEmail = publisher.getEmail();
555
		}
556

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

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

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

    
576
			if (request.getPublication().getJournal() != null) {
577
				text += "Journal: " + request.getPublication().getJournal().getTitle();
578

    
579
				if (request.getPublication().getJournal().getPublisher() != null)
580
					text += " , " + request.getPublication().getJournal().getPublisher().getName();
581

    
582
				text += "\n";
583
			} else if (request.getPublication().getPublisher() != null)
584
				text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
585

    
586
			text += "Requested funding: " + request.getFundingrequested() + " " + request.getCurrency().getName() + "\n" +
587
					"\n" +
588
					"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" +
589
					"\n" +
590
					"All invoices must be addressed to: \n" +
591
					"\"\"Athena\"\" Research Centre\n" +
592
					"Artemidos 6 & Epidavrou\n" +
593
					"GR-151 25, Athens - GREECE\n" +
594
					"Phone: +30 210 6875 300 Fax +30 210 6875 485\n" +
595
					"VAT NUMBER: EL999723442\n" +
596
					"\n";
597

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

    
607
			mailLibrary.sendEmail(new String[]{publisherEmail}, subject, text);
608
		}
609
	}
610

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

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

    
624
		if (request.getPublication().getJournal() != null) {
625
			text += "Journal: " + request.getPublication().getJournal().getTitle();
626

    
627
			if (request.getPublication().getJournal().getPublisher() != null)
628
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
629

    
630
			text += "\n";
631
		} else if (request.getPublication().getPublisher() != null)
632
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
633

    
634
		String currencyName = null;
635
		if(request.getCurrency() != null )
636
			currencyName = request.getCurrency().getName();
637

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

    
646
		mailLibrary.sendEmail(new String[]{User.getEmail()}, subject, text);
647
	}
648

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

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

    
660
		if (request.getPublication().getJournal() != null) {
661
			text += "Journal: " + request.getPublication().getJournal().getTitle();
662

    
663
			if (request.getPublication().getJournal().getPublisher() != null)
664
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
665

    
666
			text += "\n";
667
		} else if (request.getPublication().getPublisher() != null)
668
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
669

    
670

    
671
		String currencyName = null;
672
		if(request.getCurrency() != null )
673
			currencyName = request.getCurrency().getName();
674

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

    
685
		text += formatComments(request);
686
		text += "Feel free to contact us at " + contactLink + " if you need further information.\n\n" +
687
				"Best,\n" +
688
				"The OpenAIRE team";
689

    
690
		mailLibrary.sendEmail(new String[]{request.getUser().getEmail()}, subject, text);
691
	}
692

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

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

    
704
		if (request.getPublication().getJournal() != null) {
705
			text += "Journal: " + request.getPublication().getJournal().getTitle();
706

    
707
			if (request.getPublication().getJournal().getPublisher() != null)
708
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
709

    
710
			text += "\n";
711
		} else if (request.getPublication().getPublisher() != null)
712
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
713

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

    
721
		text += formatComments(request);
722
		text += "Feel free to contact us at " + contactLink + " if you need further information.\n\n" +
723
				"Best,\n" +
724
				"The OpenAIRE team";
725

    
726
		mailLibrary.sendEmail(new String[]{evaEmail}, subject, text);
727
	}
728

    
729
	@Override
730
	public void sendPublisherPaidEmail(Request request) throws MessagingException {
731
		Publisher publisher = request.getPublication().getPublisher() != null ? request.getPublication().getPublisher() : request.getPublication().getJournal().getPublisher();
732
		String publisherEmail = null;
733

    
734
		if (request.getPublisher().getEmail() != null)
735
			publisherEmail = request.getPublisher().getEmail();
736
		else {
737
			if (publisher != null)
738
				publisherEmail = publisher.getEmail();
739
		}
740

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

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

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

    
760
			if (request.getPublication().getJournal() != null) {
761
				text += "Journal: " + request.getPublication().getJournal().getTitle();
762

    
763
				if (request.getPublication().getJournal().getPublisher() != null)
764
					text += " , " + request.getPublication().getJournal().getPublisher().getName();
765

    
766
				text += "\n";
767
			} else if (request.getPublication().getPublisher() != null)
768
				text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
769

    
770

    
771
			String currencyName = null;
772
			if(request.getCurrency() != null )
773
				currencyName = request.getCurrency().getName();
774

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

    
789
			mailLibrary.sendEmail(new String[]{publisherEmail}, subject, text);
790
		}
791
	}
792

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

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

    
806
		if (request.getPublication().getJournal() != null) {
807
			text += "Journal: " + request.getPublication().getJournal().getTitle();
808

    
809
			if (request.getPublication().getJournal().getPublisher() != null)
810
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
811

    
812
			text += "\n";
813
		} else if (request.getPublication().getPublisher() != null)
814
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
815

    
816
		String currencyName = null;
817
		if(request.getCurrency() != null )
818
			currencyName = request.getCurrency().getName();
819

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

    
826
		text += "Best,\n" +
827
				"The OpenAIRE team";
828

    
829
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
830
	}
831

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

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

    
844
		if (request.getPublication().getJournal() != null) {
845
			text += "Journal: " + request.getPublication().getJournal().getTitle();
846

    
847
			if (request.getPublication().getJournal().getPublisher() != null)
848
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
849

    
850
			text += "\n";
851
		} else if (request.getPublication().getPublisher() != null)
852
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
853

    
854
		String currencyName = null;
855
		if(request.getCurrency() != null )
856
			currencyName = request.getCurrency().getName();
857

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

    
868
		mailLibrary.sendEmail(new String[]{request.getUser().getEmail()}, subject, text);
869
	}
870

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

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

    
882
		if (request.getPublication().getJournal() != null) {
883
			text += "Journal: " + request.getPublication().getJournal().getTitle();
884

    
885
			if (request.getPublication().getJournal().getPublisher() != null)
886
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
887

    
888
			text += "\n";
889
		} else if (request.getPublication().getPublisher() != null)
890
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
891

    
892

    
893
		String currencyName = null;
894
		if(request.getCurrency() != null )
895
			currencyName = request.getCurrency().getName();
896

    
897
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
898
				"\n";
899
		text += formatComments(request);
900
		text += "Best,\n" +
901
				"The OpenAIRE team";
902

    
903
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
904
	}
905

    
906
	private String formatComments(Request request) {
907
		String text = "";
908

    
909
		if (request.getRequestComments() != null && request.getRequestComments().size() > 0) {
910
			text = "IMPORTANT:\n";
911

    
912
	/*		for (int i = 0; i < request.getComments().size(); i++) {
913
				Comment comment = request.getComments().get(i);
914

    
915
				if (i > 0)
916
					text += "\n";
917

    
918
				text += comment.getComment() + " -" + comment.getUser().getName() + " " + comment.getUser().getLastname() + " @ " + new SimpleDateFormat("yyyy-MM-dd").format(comment.getDate());
919
			}
920

    
921
			RequestComment comment = request.getRequestComments().get(request.getRequestComments().size() - 1);
922

    
923
 			text += comment.getComment() + " -" + comment.getUser().getFirstname() + " " + comment.getUser().getLastname() + " @ " + new SimpleDateFormat("yyyy-MM-dd").format(comment.getComment().getDate());
924
*/
925
			text += "\n\n";
926
		}
927

    
928
		return text;
929
	}
930

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

    
936
		if (request.getPublisher().getEmail() != null)
937
			publisherEmail = request.getPublisher().getEmail();
938
		else {
939
			if (publisher != null)
940
				publisherEmail = publisher.getEmail();
941
		}
942

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

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

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

    
963
			if (request.getPublication().getJournal() != null) {
964
				text += "Journal: " + request.getPublication().getJournal().getTitle();
965

    
966
				if (request.getPublication().getJournal().getPublisher() != null)
967
					text += " , " + request.getPublication().getJournal().getPublisher().getName();
968

    
969
				text += "\n";
970
			} else if (request.getPublication().getPublisher() != null)
971
				text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
972

    
973
			String currencyName = null;
974
			if(request.getCurrency() != null )
975
				currencyName = request.getCurrency().getName();
976

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

    
987
			mailLibrary.sendEmail(new String[]{publisherEmail}, subject, text);
988
		}
989
	}
990

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

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

    
1003
		if (request.getPublication().getJournal() != null) {
1004
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1005

    
1006
			if (request.getPublication().getJournal().getPublisher() != null)
1007
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1008

    
1009
			text += "\n";
1010
		} else if (request.getPublication().getPublisher() != null)
1011
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1012

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

    
1023
		mailLibrary.sendEmail(new String[]{request.getUser().getEmail()}, subject, text);
1024
	}
1025

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

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

    
1037
		if (request.getPublication().getJournal() != null) {
1038
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1039

    
1040
			if (request.getPublication().getJournal().getPublisher() != null)
1041
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1042

    
1043
			text += "\n";
1044
		} else if (request.getPublication().getPublisher() != null)
1045
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1046

    
1047
		String currencyName = null;
1048
		if(request.getCurrency() != null )
1049
			currencyName = request.getCurrency().getName();
1050

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

    
1057
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
1058
	}
1059

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

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

    
1071
		if (request.getPublication().getJournal() != null) {
1072
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1073

    
1074
			if (request.getPublication().getJournal().getPublisher() != null)
1075
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1076

    
1077
			text += "\n";
1078
		} else if (request.getPublication().getPublisher() != null)
1079
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1080

    
1081
		String currencyName = null;
1082
		if(request.getCurrency() != null )
1083
			currencyName = request.getCurrency().getName();
1084

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

    
1091
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
1092
	}
1093

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

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

    
1105
		if (request.getPublication().getJournal() != null) {
1106
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1107

    
1108
			if (request.getPublication().getJournal().getPublisher() != null)
1109
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1110

    
1111
			text += "\n";
1112
		} else if (request.getPublication().getPublisher() != null)
1113
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1114

    
1115
		String currencyName = null;
1116
		if(request.getCurrency() != null )
1117
			currencyName = request.getCurrency().getName();
1118

    
1119

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

    
1126
		mailLibrary.sendEmail(new String[]{moderator.getEmail()}, subject, text);
1127
	}
1128

    
1129
	@Override
1130
	public void sendPublisherDeniedEmail(Request request) throws MessagingException {
1131
		//
1132
	}
1133

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

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

    
1143

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

    
1153
		text += "\n";
1154
		text += "Publication: " + request.getPublication().getTitle() + "\n"; // TODO add authors
1155

    
1156
		if (request.getPublication().getJournal() != null) {
1157
			text += "Journal: " + request.getPublication().getJournal().getTitle();
1158

    
1159
			if (request.getPublication().getJournal().getPublisher() != null)
1160
				text += " , " + request.getPublication().getJournal().getPublisher().getName();
1161

    
1162
			text += "\n";
1163
		} else if (request.getPublication().getPublisher() != null)
1164
			text += "Publisher: " + request.getPublication().getPublisher().getName() + "\n";
1165

    
1166
		String currencyName = null;
1167
		if(request.getCurrency() != null )
1168
			currencyName = request.getCurrency().getName();
1169

    
1170
		text += "Requested funding: " + request.getFundingrequested() + " " + currencyName + "\n" +
1171
				"\n";
1172

    
1173
		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";
1174
		text += "Feel free to contact us at " + this.contactLink + " if you need further information.\n\n" +
1175
				"Best,\n" +
1176
				"The OpenAIRE team";
1177

    
1178
		mailLibrary.sendEmail(coordinator.getEmail(), subject, text);
1179
	}
1180

    
1181
	public String getBaseAddress() {
1182
		return baseAddress;
1183
	}
1184

    
1185
	public void setBaseAddress(String baseAddress) {
1186
		this.baseAddress = baseAddress;
1187
	}
1188

    
1189
	public String getTermsOfAgreementUrl() {
1190
		return termsOfAgreementUrl;
1191
	}
1192

    
1193
	public void setTermsOfAgreementUrl(String termsOfAgreementUrl) {
1194
		this.termsOfAgreementUrl = termsOfAgreementUrl;
1195
	}
1196
}
(2-2/7)