Project

General

Profile

1
package eu.dnetlib.goldoa.service;
2

    
3
import eu.dnetlib.goldoa.domain.*;
4
import eu.dnetlib.goldoa.service.dao.RequestDAO;
5
import eu.dnetlib.goldoa.service.utils.EmailUtils;
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.dao.EmptyResultDataAccessException;
8
import org.springframework.stereotype.Service;
9
import org.springframework.transaction.annotation.Transactional;
10

    
11
import javax.mail.MessagingException;
12
import java.io.IOException;
13
import java.io.InputStream;
14
import java.sql.Timestamp;
15
import java.text.SimpleDateFormat;
16
import java.util.ArrayList;
17
import java.util.Date;
18
import java.util.List;
19
import java.util.concurrent.ExecutorService;
20

    
21
/*
22
 * Created by antleb on 3/10/15.
23
*/
24

    
25

    
26
@Transactional
27
@Service
28
public class RequestManagerImpl implements RequestManager {
29

    
30
	@Autowired
31
	private RequestDAO requestDAO;
32
	@Autowired
33
	private UserManager userManager;
34
	@Autowired
35
	private OrganizationManager organizationManager;
36
	@Autowired
37
	private ProjectManager projectManager;
38
	@Autowired
39
	private PublicationManager publicationManager;
40
	@Autowired
41
	private InvoiceManager invoiceManager;
42
	@Autowired
43
	private BudgetManager budgetManager;
44
	@Autowired
45
	private EligibilityManager eligibilityManager;
46
	@Autowired
47
	private EmailUtils emailUtils;
48
	@Autowired
49
	private ExecutorService executorService;
50

    
51
	private boolean sendCoordinatorEmails = false;
52
	private boolean sendEvaEmail = false;
53
	private String evaEmail = null;
54

    
55
	@Override
56
	public Request saveRequest(final Request request) {
57

    
58
		if (request.getId() == null) {
59
			request.setId(new SimpleDateFormat("yyyyMMdd-").format(new Date()) + requestDAO.getRequestId());
60
			Budget budget = budgetManager.getForRequest(request.getOrganization().getId(),
61
                                            request.getPublisher().getEmail());
62
			if (budget != null) {
63
				request.setBudget(budget);
64
				// TODO fix amounts
65
//				budget.setRemaining(budget.getRemaining() - request.getFundingRequested());
66
//				budgetManager.saveBudget(budget);
67
			}
68
		}
69
		System.out.println("saving request " + request.getId() + " with status " + request.getStatus());
70
		requestDAO.saveRequest(request);
71
		return request;
72
	}
73

    
74
	@Override
75
	public Request getById(String requestId) {
76
		return null;
77
	}
78

    
79
	@Override
80
	public RequestPage getForUser(String personId, Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
81
		RequestPage requests = requestDAO.getForUser(personId, fromDate, toDate, requestSortBy, order, requestFilter, term, statusFilter, from, to);
82
		//List<RequestInfo> res = new ArrayList<RequestInfo>();
83

    
84
		/*for (Request request : requests.getRequests()) {
85
			try {
86
				request.setCoFunders(requestDAO.getCoFunders(request));
87

    
88
				RequestInfo req = getShortRequestInfo(request);
89

    
90
				res.add(req);
91
			} catch (Exception e) {
92
				e.printStackTrace();
93
			}
94
		}*/
95
		return requests;
96
		//return new RequestPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());
97
	}
98

    
99
	@Override
100
	public RequestPage getForPublisher(String publisherId, Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
101
		RequestPage requests = requestDAO.getForPublisher(publisherId, fromDate, toDate, requestSortBy, order, requestFilter, term, statusFilter, from, to);
102
		return requests;
103
		/*List<RequestInfo> res = new ArrayList<RequestInfo>();
104

    
105
		for (Request request : requests.getRequests()) {
106
			try {
107
				request.setCoFunders(requestDAO.getCoFunders(request));
108

    
109
				RequestInfo req = getShortRequestInfo(request);
110

    
111
				res.add(req);
112
			} catch (Exception e) {
113
				e.printStackTrace();
114
			}
115
		}
116

    
117
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());*/
118
	}
119

    
120
	@Override
121
	public RequestPage getForOrganization(List<String> organizationIds, Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
122
		RequestPage requests = requestDAO.getForOrganization(organizationIds, fromDate, toDate, requestSortBy, order, requestFilter, term, statusFilter, from, to);
123
		return requests;
124
		/*List<RequestInfo> res = new ArrayList<RequestInfo>();
125

    
126
		for (Request request : requests.getRequests()) {
127
			try {
128
				request.setCoFunders(requestDAO.getCoFunders(request));
129

    
130
				RequestInfo req = getShortRequestInfo(request);
131

    
132
				res.add(req);
133
			} catch (Exception e) {
134
				e.printStackTrace();
135
			}
136
		}
137

    
138
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());*/
139
	}
140

    
141
	@Override
142
	public List<Request> getForProject(String projectId) {
143
		return requestDAO.getForProject(projectId);
144
	}
145

    
146
	@Override
147
	public String getCSV(String mode, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter) {
148
		Integer[] statuses = null;
149

    
150
		if ("moderator".equals(mode)) {
151
			if (statusFilter == null || statusFilter.length == 0) {
152

    
153
			} else {
154
				statuses = new Integer[statusFilter.length];
155

    
156
				for (int i = 0; i < statusFilter.length; i++) {
157
					statuses[i] = statusFilter[i].getCode();
158
				}
159
			}
160
		} else if ("accounting".equals(mode)) {
161
			if (statusFilter == null || statusFilter.length == 0)
162
				statuses = new Integer[] {
163
						Request.RequestStatus.APPROVED.getCode(),
164
						Request.RequestStatus.ACCOUNTING_PROCESSING.getCode(),
165
						Request.RequestStatus.ACCOUNTING_ON_HOLD.getCode(),
166
						Request.RequestStatus.ACCOUNTING_DENIED.getCode(),
167
						Request.RequestStatus.ACCOUNTING_PAID.getCode()};
168

    
169
			else {
170
				statuses = new Integer[statusFilter.length];
171

    
172
				for (int i = 0; i < statusFilter.length; i++) {
173
					Request.RequestStatus s = statusFilter[i];
174

    
175
					statuses[i] = s.getCode();
176
				}
177
			}
178
		}
179

    
180
		try {
181
			return requestDAO.getCSV(requestSortBy, order, requestFilter, term, statuses);
182
		} catch (IOException e) {
183
			e.printStackTrace();
184

    
185
			return e.getMessage();
186
		}
187
	}
188

    
189
	@Override
190
	public RequestPage getRequests(Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
191
		RequestPage requestPage = requestDAO.getRequests(fromDate, toDate, requestSortBy, order, requestFilter, term, statusFilter, from, to);
192
		return requestPage;
193
		/*List<RequestInfo> res = new ArrayList<RequestInfo>();
194

    
195
		for (Request request : requests.getRequests()) {
196
			try {
197
				request.setCoFunders(requestDAO.getCoFunders(request));
198

    
199
				RequestInfo req = getShortRequestInfo(request);
200

    
201
				res.add(req);
202
			} catch (Exception e) {
203
				e.printStackTrace();
204
			}
205
		}
206

    
207
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());*/
208
	}
209

    
210
	@Override
211
	public RequestPage getForAccounting(Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
212
		Integer[] statuses;
213

    
214
		if (statusFilter == null || statusFilter.length == 0)
215
			statuses = new Integer[] {Request.RequestStatus.APPROVED.getCode(), Request.RequestStatus.ACCOUNTING_PROCESSING.getCode(), Request.RequestStatus.ACCOUNTING_ON_HOLD.getCode()
216
			, Request.RequestStatus.ACCOUNTING_DENIED.getCode(), Request.RequestStatus.ACCOUNTING_PAID.getCode()};
217

    
218
		else {
219
			statuses = new Integer[statusFilter.length];
220

    
221
			for (int i = 0; i < statusFilter.length; i++) {
222
				Request.RequestStatus s = statusFilter[i];
223

    
224
				statuses[i] = s.getCode();
225
			}
226
		}
227

    
228
		RequestPage requests = requestDAO.getRequests(fromDate, toDate, requestSortBy, order, requestFilter, term, statuses, from, to);
229
		/*List<RequestInfo> res = new ArrayList<RequestInfo>();
230

    
231
		for (Request request : requests.getRequests()) {
232
			try {
233
				request.setCoFunders(requestDAO.getCoFunders(request));
234

    
235
				RequestInfo req = getShortRequestInfo(request);
236

    
237
				res.add(req);
238
			} catch (Exception e) {
239
				e.printStackTrace();
240
			}
241
		}
242

    
243
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());*/
244
		return requests;
245
	}
246

    
247
	@Override
248
	public Request submitRequest(final Request request) {
249

    
250
		if (request.getBudget() != null) {
251
            Budget budget = request.getBudget();
252

    
253
			if (budget.getOrganization() != null)
254
				request.setStatus(Request.RequestStatus.LIBRARY_FUND_SUBMITTED);
255
			else if (budget.getPublisher() != null)
256
				request.setStatus(Request.RequestStatus.PUBLISHER_FUND_SUBMITTED);
257
		} else {
258
			request.setStatus(Request.RequestStatus.SUBMITTED);
259
		}
260
		request.setSubmissiondate(new Timestamp(new Date().getTime()));
261

    
262
		requestDAO.submitRequest(request.getId());
263

    
264
		saveRequest(request);
265

    
266
		executorService.submit(new Runnable() {
267
			@Override
268
			public void run() {
269

    
270
				/*try {
271

    
272
					switch (request.getEligibility().getStatus()) {
273
						case OK:
274
							emailUtils.sendRequesterOKEmail(request);
275

    
276
							for (User user : userManager.getModerators())
277
								emailUtils.sendModeratorOKEmail(request, user);
278
							break;
279
						case IFFY:
280
							emailUtils.sendRequesterIFFYEmail(request);
281

    
282
							for (User user : userManager.getModerators())
283
								emailUtils.sendModeratorIFFYEmail(request, user);
284
							break;
285
						case NONO:
286
							break;
287
					}
288

    
289
					if (sendCoordinatorEmails) {
290
						for (User  coordinator : request.getProject().getCoordinators())
291
							emailUtils.sendCoordinatorRequestSubmittedEmail(coordinator, request);
292
					}
293
				} catch (MessagingException e) {
294
					e.printStackTrace();
295
				} catch (Exception e) {
296
					e.printStackTrace();
297
				}*/
298
			}
299
		});
300

    
301
		return request;
302
	}
303

    
304
	@Override
305
	public Request submitLibraryRequest(final Request request) throws PersonManagerException {
306
		request.setStatus(Request.RequestStatus.LIBRARY_FUND_SUBMITTED);
307
		request.setSubmissiondate(new Timestamp(new Date().getTime()));
308

    
309
//		requestDAO.submitRequest(request.getId());
310

    
311
		saveRequest(request);
312

    
313
//		executorService.submit(new Runnable() {
314
//			@Override
315
//			public void run() {
316
//				RequestInfo requestInfo = null;
317
//				try {
318
//					requestInfo = getRequestInfo(request);
319
//
320
//					switch (requestInfo.getEligibility().getStatus()) {
321
//						case OK:
322
//							emailUtils.sendRequesterOKEmail(requestInfo);
323
//
324
//							for (Person person : personManager.getModerators())
325
//								emailUtils.sendModeratorOKEmail(requestInfo, person);
326
//							break;
327
//						case IFFY:
328
//							emailUtils.sendRequesterIFFYEmail(requestInfo);
329
//
330
//							for (Person person : personManager.getModerators())
331
//								emailUtils.sendModeratorIFFYEmail(requestInfo, person);
332
//							break;
333
//						case NONO:
334
//							break;
335
//					}
336
//
337
//					if (sendCoordinatorEmails) {
338
//						for (Person coordinator : requestInfo.getProject().getCoordinators())
339
//							emailUtils.sendCoordinatorRequestSubmittedEmail(coordinator, requestInfo);
340
//					}
341
//				} catch (MessagingException e) {
342
//					e.printStackTrace();
343
//				} catch (PersonManagerException e) {
344
//					e.printStackTrace();
345
//				} catch (Exception e) {
346
//					e.printStackTrace();
347
//				}
348
//			}
349
//		});
350

    
351
		return request;
352
	}
353

    
354
	@Override
355
	public Request submitPublisherRequest(Request request) throws PersonManagerException {
356
        request.setStatus(Request.RequestStatus.PUBLISHER_FUND_SUBMITTED);
357
        request.setSubmissiondate(new Timestamp(new Date().getTime()));
358

    
359
//		requestDAO.submitRequest(request.getId());
360

    
361
		saveRequest(request);
362

    
363
//		executorService.submit(new Runnable() {
364
//			@Override
365
//			public void run() {
366
//				RequestInfo requestInfo = null;
367
//				try {
368
//					requestInfo = getRequestInfo(request);
369
//
370
//					switch (requestInfo.getEligibility().getStatus()) {
371
//						case OK:
372
//							emailUtils.sendRequesterOKEmail(requestInfo);
373
//
374
//							for (Person person : personManager.getModerators())
375
//								emailUtils.sendModeratorOKEmail(requestInfo, person);
376
//							break;
377
//						case IFFY:
378
//							emailUtils.sendRequesterIFFYEmail(requestInfo);
379
//
380
//							for (Person person : personManager.getModerators())
381
//								emailUtils.sendModeratorIFFYEmail(requestInfo, person);
382
//							break;
383
//						case NONO:
384
//							break;
385
//					}
386
//
387
//					if (sendCoordinatorEmails) {
388
//						for (Person coordinator : requestInfo.getProject().getCoordinators())
389
//							emailUtils.sendCoordinatorRequestSubmittedEmail(coordinator, requestInfo);
390
//					}
391
//				} catch (MessagingException e) {
392
//					e.printStackTrace();
393
//				} catch (PersonManagerException e) {
394
//					e.printStackTrace();
395
//				} catch (Exception e) {
396
//					e.printStackTrace();
397
//				}
398
//			}
399
//		});
400

    
401
		return request;
402
	}
403

    
404
	@Override
405
	public void conditionallyApproveRequest(final String requestId, final String email, final String comment, String template) {
406
		User user = null;
407
		try {
408
			user = userManager.getByEmail(email);
409
		} catch (PersonManagerException e) {
410
			e.printStackTrace();
411
		}
412
		requestDAO.conditionallyApproveRequest(requestId, user, comment, template);
413

    
414
		executorService.submit(new Runnable() {
415
			@Override
416
			public void run() {
417
                Request request = getById(requestId);
418
				try {
419
					emailUtils.sendRequesterInitiallyApprovedEmail(request);
420
				} catch (MessagingException e) {
421
					e.printStackTrace();
422
				}
423
			}
424
		});
425
	}
426

    
427
	@Override
428
	public void approveRequest(final String requestId, final String email, final String comment, String template) {
429
		User user = null;
430
		try {
431
			user = userManager.getByEmail(email);
432
		} catch (PersonManagerException e) {
433
			e.printStackTrace();
434
		}
435
		requestDAO.approveRequest(requestId, user, comment, template);
436

    
437
		executorService.submit(new Runnable() {
438
			@Override
439
			public void run() {
440
                Request request = getById(requestId);
441

    
442
				try {
443
					emailUtils.sendRequesterApprovedEmail(request);
444
				} catch (MessagingException e) {
445
					e.printStackTrace();
446
				}
447

    
448
				if (request.getInvoice() == null) {
449
					try {
450
						emailUtils.sendRequesterInvoiceNotification(request);
451
						emailUtils.sendPublisherInvoiceNotification(request);
452
					} catch (MessagingException e) {
453
						e.printStackTrace();
454
					}
455
				} else {
456
					try {
457
						for (User user : userManager.getAccountingOfficers())
458
							emailUtils.sendAccountingRequestApprovedEmail(user, request);
459
					} catch (MessagingException e) {
460
						e.printStackTrace();
461
					}
462
				}
463
			}
464
		});
465
	}
466

    
467
	@Override
468
	public void rejectRequest(final String requestId, String email, String comment, String template) {
469
		User user = null;
470
		try {
471
			user = userManager.getByEmail(email);
472
		} catch (PersonManagerException e) {
473
			e.printStackTrace();
474
		}
475
		requestDAO.rejectRequest(requestId, user, comment, template);
476

    
477
		executorService.submit(new Runnable() {
478
			@Override
479
			public void run() {
480
                Request request = getById(requestId);
481

    
482
				try {
483
					emailUtils.sendRequesterRejectedEmail(request);
484
				} catch (MessagingException e) {
485
					e.printStackTrace();
486
				}
487
			}
488
		});
489
	}
490

    
491
	@Override
492
	public void processingRequest(final String requestId, String email, String comment, String template) {
493
		User user = null;
494
		try {
495
			user = userManager.getByEmail(email);
496
		} catch (PersonManagerException e) {
497
			e.printStackTrace();
498
		}
499
		requestDAO.processingRequest(requestId, user, comment, template);
500

    
501
		executorService.submit(new Runnable() {
502
			@Override
503
			public void run() {
504
                Request request = getById(requestId);
505

    
506
				try {
507
					for (User user : userManager.getModerators())
508
						emailUtils.sendModeratorProcessingEmail(user, request);
509

    
510
				} catch (MessagingException e) {
511
					e.printStackTrace();
512
				}
513
			}
514
		});
515
	}
516

    
517
	@Override
518
	public void paidRequest(final String requestId, String email, String comment, String template, float apc_paid,
519
							float transfer_cost, float other_cost, Date datePaid) {
520
		User user = null;
521
		try {
522
			user = userManager.getByEmail(email);
523
		} catch (PersonManagerException e) {
524
			e.printStackTrace();
525
		}
526

    
527
		requestDAO.paidRequest(requestId, user, comment, template, apc_paid, transfer_cost, other_cost, datePaid);
528

    
529
		executorService.submit(new Runnable() {
530
			@Override
531
			public void run() {
532
                Request request = getById(requestId);
533

    
534
				try {
535
					emailUtils.sendRequesterPaidEmail(request);
536
					emailUtils.sendPublisherPaidEmail(request);
537

    
538
					for (User user : userManager.getModerators())
539
						emailUtils.sendModeratorPaidEmail(user, request);
540

    
541
					if (sendEvaEmail)
542
						emailUtils.sendEvaPaidEmail(evaEmail, request);
543

    
544
				} catch (MessagingException e) {
545
					e.printStackTrace();
546
				}
547
			}
548
		});
549
	}
550

    
551
	@Override
552
	public void paidLibraryRequest(String requestId, String email, String comment, String template, float apc_paid, float transfer_cost, float other_cost, Date datePaid) {
553
		User user = null;
554
		try {
555
			user = userManager.getByEmail(email);
556
		} catch (PersonManagerException e) {
557
			e.printStackTrace();
558
		}
559
		requestDAO.paidLibraryRequest(requestId, user, comment, template, apc_paid, transfer_cost, other_cost, datePaid);
560

    
561
//		executorService.submit(new Runnable() {
562
//			@Override
563
//			public void run() {
564
//				RequestInfo requestInfo = getById(requestId);
565
//
566
//				try {
567
//					emailUtils.sendRequesterPaidEmail(requestInfo);
568
//					emailUtils.sendPublisherPaidEmail(requestInfo);
569
//
570
//					for (Person person : personManager.getModerators())
571
//						emailUtils.sendModeratorPaidEmail(person, requestInfo);
572
//
573
//					if (sendEvaEmail)
574
//						emailUtils.sendEvaPaidEmail(evaEmail, requestInfo);
575
//
576
//				} catch (MessagingException e) {
577
//					e.printStackTrace();
578
//				}
579
//			}
580
//		});
581
	}
582

    
583
	@Override
584
	public void paidPublisherRequest(String requestId, String email, String comment,
585
									 String template, float apc_paid, float transfer_cost, float other_cost, Date datePaid) {
586
		User user = null;
587
		try {
588
			user = userManager.getByEmail(email);
589
		} catch (PersonManagerException e) {
590
			e.printStackTrace();
591
		}
592
		requestDAO.paidPublisherRequest(requestId, user, comment, template, apc_paid, transfer_cost, other_cost, datePaid);
593

    
594
		//		executorService.submit(new Runnable() {
595
//			@Override
596
//			public void run() {
597
//				RequestInfo requestInfo = getById(requestId);
598
//
599
//				try {
600
//					emailUtils.sendRequesterPaidEmail(requestInfo);
601
//					emailUtils.sendPublisherPaidEmail(requestInfo);
602
//
603
//					for (Person person : personManager.getModerators())
604
//						emailUtils.sendModeratorPaidEmail(person, requestInfo);
605
//
606
//					if (sendEvaEmail)
607
//						emailUtils.sendEvaPaidEmail(evaEmail, requestInfo);
608
//
609
//				} catch (MessagingException e) {
610
//					e.printStackTrace();
611
//				}
612
//			}
613
//		});
614
	}
615

    
616
	@Override
617
	public void onHoldRequest(final String requestId, String email, String comment, String template) {
618
		User user = null;
619
		try {
620
			user = userManager.getByEmail(email);
621
		} catch (PersonManagerException e) {
622
			e.printStackTrace();
623
		}
624
		requestDAO.onHoldRequest(requestId, user, comment, template);
625

    
626
		executorService.submit(new Runnable() {
627
			@Override
628
			public void run() {
629
                Request request = getById(requestId);
630

    
631
				try {
632
					emailUtils.sendRequesterOnHoldEmail(request);
633
					emailUtils.sendPublisherOnHoldEmail(request);
634

    
635
					for (User user : userManager.getModerators())
636
						emailUtils.sendModeratorOnHoldEmail(user, request);
637
				} catch (MessagingException e) {
638
					e.printStackTrace();
639
				}
640
			}
641
		});
642
	}
643

    
644
	@Override
645
	public void deniedRequest(final String requestId, String email, String comment, String template) {
646
		User user = null;
647
		try {
648
			user = userManager.getByEmail(email);
649
		} catch (PersonManagerException e) {
650
			e.printStackTrace();
651
		}
652
		requestDAO.deniedRequest(requestId, user, comment, template);
653

    
654
		executorService.submit(new Runnable() {
655
			@Override
656
			public void run() {
657
                Request request = getById(requestId);
658

    
659
				try {
660
					emailUtils.sendRequesterDeniedEmail(request);
661
					emailUtils.sendPublisherDeniedEmail(request);
662

    
663
					for (User user : userManager.getModerators())
664
						emailUtils.sendModeratorDeniedEmail(user, request);
665
				} catch (MessagingException e) {
666
					e.printStackTrace();
667
				}
668
			}
669
		});
670
	}
671

    
672
	@Override
673
	public void invoiceUploaded(final String requestId, String invoiceId) {
674

    
675
		executorService.submit(new Runnable() {
676
			@Override
677
			public void run() {
678
                Request request = getById(requestId);
679

    
680
				if (request.getStatus() == Request.RequestStatus.CONDITIONALLY_APPROVED) {
681
					try {
682
						for (User user : userManager.getModerators())
683
							emailUtils.sendModeratorInvoiceUploaded(user, request);
684
					} catch (MessagingException e) {
685
						e.printStackTrace();
686
					}
687
				}
688
			}
689
		});
690
	}
691

    
692
	@Override
693
	public void uploadTransferReceipt(String requestid, String contentType, InputStream inputStream) {
694
		requestDAO.uploadBankTransferReceipt(requestid, contentType, inputStream);
695
	}
696

    
697

    
698
	public BankTransferReceipt downloadBankTransferReceipt(String requestId) throws RequestManagerException {
699
		try {
700
			return requestDAO.downloadBankTransferReceipt(requestId);
701
		} catch (EmptyResultDataAccessException e) {
702
			throw new RequestManagerException(RequestManagerException.ErrorCause.NOT_EXISTS);
703
		}
704
	}
705

    
706

    
707
	public List<CommentTemplate> getCommentTemplates(Request.RequestStatus requestStatus) {
708
		try {
709
			return requestDAO.getCommentTemplates(requestStatus);
710
		} catch (EmptyResultDataAccessException e) {
711
			return new ArrayList<CommentTemplate>();
712
		}
713
	}
714

    
715
	/*private void loadCommentPersons(RequestInfo requestInfo) throws PersonManagerException {
716
		for (Comment comment : requestInfo.getComments()) {
717
			comment.setPerson(personManager.getById(comment.getPerson().getId()));
718
		}
719
	}*/
720

    
721

    
722
	@Override
723
	public Integer getActiveNumber() {
724
		return requestDAO.getActiveNumber();
725
	}
726

    
727
	@Override
728
	public Integer getPaidNumber() {
729
		return requestDAO.getPaidNumber();
730
	}
731

    
732
	@Override
733
	public Integer getNumberOfProjects() {
734
		return requestDAO.getNumberOfProjects();
735
	}
736

    
737
	@Override
738
	public Double getTotalAmount() {
739
		return requestDAO.getTotalAmount();
740
	}
741

    
742
	@Override
743
	public Double getAverageAmount() {
744
		return requestDAO.getAverageAmount();
745
	}
746

    
747
	@Override
748
	public Integer getAverageAmountPerType(PublicationType type) {
749
		return requestDAO.getAverageAmountPerType(type);
750
	}
751

    
752
	@Override
753
	public Integer getNumberOfPaidRequestsWithDOI() {
754
		return requestDAO.getNumberOfPaidRequestsWithDOI();
755
	}
756

    
757
	@Override
758
	public Integer getNumberOfApprovedRequestsWithDOI() {
759
		return requestDAO.getNumberOfApprovedRequestsWithDOI();
760
	}
761

    
762
	@Override
763
	public Integer getNumnerOfPaidPublicationsPerType(PublicationType type) {
764
		return requestDAO.getNumnerOfPaidPublicationsPerType(type);
765
	}
766

    
767
	public boolean isSendCoordinatorEmails() {
768
		return sendCoordinatorEmails;
769
	}
770

    
771
	public void setSendCoordinatorEmails(boolean sendCoordinatorEmails) {
772
		this.sendCoordinatorEmails = sendCoordinatorEmails;
773
	}
774

    
775
	public boolean isSendEvaEmail() {
776
		return sendEvaEmail;
777
	}
778

    
779
	public void setSendEvaEmail(boolean sendEvaEmail) {
780
		this.sendEvaEmail = sendEvaEmail;
781
	}
782

    
783
	public String getEvaEmail() {
784
		return evaEmail;
785
	}
786

    
787
	public void setEvaEmail(String evaEmail) {
788
		this.evaEmail = evaEmail;
789
	}
790
}
(24-24/29)