Project

General

Profile

1
/*
2
package eu.dnetlib.goldoa.service;
3

    
4
import eu.dnetlib.goldoa.domain.*;
5
import eu.dnetlib.goldoa.service.dao.RequestDAO;
6
import eu.dnetlib.goldoa.service.utils.EmailUtils;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.dao.EmptyResultDataAccessException;
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.text.SimpleDateFormat;
15
import java.util.ArrayList;
16
import java.util.Date;
17
import java.util.List;
18
import java.util.concurrent.ExecutorService;
19

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

    
25
@Transactional
26
public class RequestManagerImpl implements RequestManager {
27

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

    
49
	private boolean sendCoordinatorEmails = false;
50
	private boolean sendEvaEmail = false;
51
	private String evaEmail = null;
52

    
53
	@Override
54
	public Request saveRequest(final Request request) {
55

    
56
		if (request.getId() == null) {
57
			request.setId(new SimpleDateFormat("yyyyMMdd-").format(new Date()) + requestDAO.getRequestId());
58

    
59
			BudgetInfo budget = budgetManager.getForRequest(request.getOrganization(), request.getPublisher());
60

    
61
			if (budget != null) {
62
				request.setBudget(budget.getId());
63

    
64
				// TODO fix amounts
65
//				budget.setRemaining(budget.getRemaining() - request.getFundingRequested());
66
//				budgetManager.saveBudget(budget);
67
			}
68
		}
69

    
70
		System.out.println("saving request " + request.getId() + " with status " + request.getStatus());
71

    
72
		requestDAO.saveRequest(request);
73
		requestDAO.saveCoFunders(request);
74

    
75
		return request;
76
	}
77

    
78
	@Override
79
	public RequestInfo getById(String requestId) {
80
		try {
81
			Request request = requestDAO.getRequest(requestId);
82

    
83
			request.setCoFunders(requestDAO.getCoFunders(request));
84

    
85
			return this.getRequestInfo(request);
86
		} catch (PersonManagerException e) {
87
			e.printStackTrace();
88
		}
89

    
90
		return null;
91
	}
92

    
93
	@Override
94
	public RequestInfoPage getForUser(String personId, Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
95
		RequestPage requests = requestDAO.getForUser(personId, fromDate, toDate, requestSortBy, order, requestFilter, term, statusFilter, from, to);
96
		List<RequestInfo> res = new ArrayList<RequestInfo>();
97

    
98
		for (Request request : requests.getRequests()) {
99
			try {
100
				request.setCoFunders(requestDAO.getCoFunders(request));
101

    
102
				RequestInfo req = getShortRequestInfo(request);
103

    
104
				res.add(req);
105
			} catch (Exception e) {
106
				e.printStackTrace();
107
			}
108
		}
109

    
110
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());
111
	}
112

    
113
	@Override
114
	public RequestInfoPage getForPublisher(String publisherId, Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
115
		RequestPage requests = requestDAO.getForPublisher(publisherId, fromDate, toDate, requestSortBy, order, requestFilter, term, statusFilter, from, to);
116
		List<RequestInfo> res = new ArrayList<RequestInfo>();
117

    
118
		for (Request request : requests.getRequests()) {
119
			try {
120
				request.setCoFunders(requestDAO.getCoFunders(request));
121

    
122
				RequestInfo req = getShortRequestInfo(request);
123

    
124
				res.add(req);
125
			} catch (Exception e) {
126
				e.printStackTrace();
127
			}
128
		}
129

    
130
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());
131
	}
132

    
133
	@Override
134
	public RequestInfoPage getForOrganization(List<String> organizationIds, Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
135
		RequestPage requests = requestDAO.getForOrganization(organizationIds, fromDate, toDate, requestSortBy, order, requestFilter, term, statusFilter, from, to);
136
		List<RequestInfo> res = new ArrayList<RequestInfo>();
137

    
138
		for (Request request : requests.getRequests()) {
139
			try {
140
				request.setCoFunders(requestDAO.getCoFunders(request));
141

    
142
				RequestInfo req = getShortRequestInfo(request);
143

    
144
				res.add(req);
145
			} catch (Exception e) {
146
				e.printStackTrace();
147
			}
148
		}
149

    
150
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());
151
	}
152

    
153
	@Override
154
	public List<Request> getForProject(String projectId) {
155
		return requestDAO.getForProject(projectId);
156
	}
157

    
158
	@Override
159
	public String getCSV(String mode, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter) {
160
		Integer[] statuses = null;
161

    
162
		if ("moderator".equals(mode)) {
163
			if (statusFilter == null || statusFilter.length == 0) {
164

    
165
			} else {
166
				statuses = new Integer[statusFilter.length];
167

    
168
				for (int i = 0; i < statusFilter.length; i++) {
169
					statuses[i] = statusFilter[i].getCode();
170
				}
171
			}
172
		} else if ("accounting".equals(mode)) {
173
			if (statusFilter == null || statusFilter.length == 0)
174
				statuses = new Integer[] {
175
						Request.RequestStatus.APPROVED.getCode(),
176
						Request.RequestStatus.ACCOUNTING_PROCESSING.getCode(),
177
						Request.RequestStatus.ACCOUNTING_ON_HOLD.getCode(),
178
						Request.RequestStatus.ACCOUNTING_DENIED.getCode(),
179
						Request.RequestStatus.ACCOUNTING_PAID.getCode()};
180

    
181
			else {
182
				statuses = new Integer[statusFilter.length];
183

    
184
				for (int i = 0; i < statusFilter.length; i++) {
185
					Request.RequestStatus s = statusFilter[i];
186

    
187
					statuses[i] = s.getCode();
188
				}
189
			}
190
		}
191

    
192
		try {
193
			return requestDAO.getCSV(requestSortBy, order, requestFilter, term, statuses);
194
		} catch (IOException e) {
195
			e.printStackTrace();
196

    
197
			return e.getMessage();
198
		}
199
	}
200

    
201
	@Override
202
	public RequestInfoPage getRequests(Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
203
		RequestPage requests = requestDAO.getRequests(fromDate, toDate, requestSortBy, order, requestFilter, term, statusFilter, from, to);
204
		List<RequestInfo> res = new ArrayList<RequestInfo>();
205

    
206
		for (Request request : requests.getRequests()) {
207
			try {
208
				request.setCoFunders(requestDAO.getCoFunders(request));
209

    
210
				RequestInfo req = getShortRequestInfo(request);
211

    
212
				res.add(req);
213
			} catch (Exception e) {
214
				e.printStackTrace();
215
			}
216
		}
217

    
218
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());
219
	}
220

    
221
	@Override
222
	public RequestInfoPage getForAccounting(Date fromDate, Date toDate, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term, Request.RequestStatus[] statusFilter, int from, int to) {
223
		Integer[] statuses;
224

    
225
		if (statusFilter == null || statusFilter.length == 0)
226
			statuses = new Integer[] {Request.RequestStatus.APPROVED.getCode(), Request.RequestStatus.ACCOUNTING_PROCESSING.getCode(), Request.RequestStatus.ACCOUNTING_ON_HOLD.getCode()
227
			, Request.RequestStatus.ACCOUNTING_DENIED.getCode(), Request.RequestStatus.ACCOUNTING_PAID.getCode()};
228

    
229
		else {
230
			statuses = new Integer[statusFilter.length];
231

    
232
			for (int i = 0; i < statusFilter.length; i++) {
233
				Request.RequestStatus s = statusFilter[i];
234

    
235
				statuses[i] = s.getCode();
236
			}
237
		}
238

    
239
		RequestPage requests = requestDAO.getRequests(fromDate, toDate, requestSortBy, order, requestFilter, term, statuses, from, to);
240
		List<RequestInfo> res = new ArrayList<RequestInfo>();
241

    
242
		for (Request request : requests.getRequests()) {
243
			try {
244
				request.setCoFunders(requestDAO.getCoFunders(request));
245

    
246
				RequestInfo req = getShortRequestInfo(request);
247

    
248
				res.add(req);
249
			} catch (Exception e) {
250
				e.printStackTrace();
251
			}
252
		}
253

    
254
		return new RequestInfoPage(res, requests.getTotal(), requests.getFrom(), requests.getTo());
255
	}
256

    
257
	@Override
258
	public Request submitRequest(final Request request) {
259

    
260
		if (request.getBudget() != null) {
261
			BudgetInfo budget = budgetManager.getBudget(request.getBudget());
262

    
263
			if (budget.getOrganisation() != null)
264
				request.addStatus(Request.RequestStatus.LIBRARY_FUND_SUBMITTED);
265
			else if (budget.getPublisher() != null)
266
				request.addStatus(Request.RequestStatus.PUBLISHER_FUND_SUBMITTED);
267
		} else {
268
			request.addStatus(Request.RequestStatus.SUBMITTED);
269
		}
270
		request.setSubmissionDate(new Date());
271

    
272
		requestDAO.submitRequest(request.getId());
273

    
274
		saveRequest(request);
275

    
276
		executorService.submit(new Runnable() {
277
			@Override
278
			public void run() {
279
				RequestInfo requestInfo = null;
280
				try {
281
					requestInfo = getRequestInfo(request);
282

    
283
					switch (requestInfo.getEligibility().getStatus()) {
284
						case OK:
285
							emailUtils.sendRequesterOKEmail(requestInfo);
286

    
287
							for (Person person : personManager.getModerators())
288
								emailUtils.sendModeratorOKEmail(requestInfo, person);
289
							break;
290
						case IFFY:
291
							emailUtils.sendRequesterIFFYEmail(requestInfo);
292

    
293
							for (Person person : personManager.getModerators())
294
								emailUtils.sendModeratorIFFYEmail(requestInfo, person);
295
							break;
296
						case NONO:
297
							break;
298
					}
299

    
300
					if (sendCoordinatorEmails) {
301
						for (Person coordinator : requestInfo.getProject().getCoordinators())
302
							emailUtils.sendCoordinatorRequestSubmittedEmail(coordinator, requestInfo);
303
					}
304
				} catch (MessagingException e) {
305
					e.printStackTrace();
306
				} catch (PersonManagerException e) {
307
					e.printStackTrace();
308
				} catch (Exception e) {
309
					e.printStackTrace();
310
				}
311
			}
312
		});
313

    
314
		return request;
315
	}
316

    
317
	@Override
318
	public Request submitLibraryRequest(final Request request) throws PersonManagerException {
319
		request.addStatus(Request.RequestStatus.LIBRARY_FUND_SUBMITTED);
320
		request.setSubmissionDate(new Date());
321

    
322
//		requestDAO.submitRequest(request.getId());
323

    
324
		saveRequest(request);
325

    
326
//		executorService.submit(new Runnable() {
327
//			@Override
328
//			public void run() {
329
//				RequestInfo requestInfo = null;
330
//				try {
331
//					requestInfo = getRequestInfo(request);
332
//
333
//					switch (requestInfo.getEligibility().getStatus()) {
334
//						case OK:
335
//							emailUtils.sendRequesterOKEmail(requestInfo);
336
//
337
//							for (Person person : personManager.getModerators())
338
//								emailUtils.sendModeratorOKEmail(requestInfo, person);
339
//							break;
340
//						case IFFY:
341
//							emailUtils.sendRequesterIFFYEmail(requestInfo);
342
//
343
//							for (Person person : personManager.getModerators())
344
//								emailUtils.sendModeratorIFFYEmail(requestInfo, person);
345
//							break;
346
//						case NONO:
347
//							break;
348
//					}
349
//
350
//					if (sendCoordinatorEmails) {
351
//						for (Person coordinator : requestInfo.getProject().getCoordinators())
352
//							emailUtils.sendCoordinatorRequestSubmittedEmail(coordinator, requestInfo);
353
//					}
354
//				} catch (MessagingException e) {
355
//					e.printStackTrace();
356
//				} catch (PersonManagerException e) {
357
//					e.printStackTrace();
358
//				} catch (Exception e) {
359
//					e.printStackTrace();
360
//				}
361
//			}
362
//		});
363

    
364
		return request;
365
	}
366

    
367
	@Override
368
	public Request submitPublisherRequest(Request request) throws PersonManagerException {
369
		request.addStatus(Request.RequestStatus.PUBLISHER_FUND_SUBMITTED);
370
		request.setSubmissionDate(new Date());
371

    
372
//		requestDAO.submitRequest(request.getId());
373

    
374
		saveRequest(request);
375

    
376
//		executorService.submit(new Runnable() {
377
//			@Override
378
//			public void run() {
379
//				RequestInfo requestInfo = null;
380
//				try {
381
//					requestInfo = getRequestInfo(request);
382
//
383
//					switch (requestInfo.getEligibility().getStatus()) {
384
//						case OK:
385
//							emailUtils.sendRequesterOKEmail(requestInfo);
386
//
387
//							for (Person person : personManager.getModerators())
388
//								emailUtils.sendModeratorOKEmail(requestInfo, person);
389
//							break;
390
//						case IFFY:
391
//							emailUtils.sendRequesterIFFYEmail(requestInfo);
392
//
393
//							for (Person person : personManager.getModerators())
394
//								emailUtils.sendModeratorIFFYEmail(requestInfo, person);
395
//							break;
396
//						case NONO:
397
//							break;
398
//					}
399
//
400
//					if (sendCoordinatorEmails) {
401
//						for (Person coordinator : requestInfo.getProject().getCoordinators())
402
//							emailUtils.sendCoordinatorRequestSubmittedEmail(coordinator, requestInfo);
403
//					}
404
//				} catch (MessagingException e) {
405
//					e.printStackTrace();
406
//				} catch (PersonManagerException e) {
407
//					e.printStackTrace();
408
//				} catch (Exception e) {
409
//					e.printStackTrace();
410
//				}
411
//			}
412
//		});
413

    
414
		return request;
415
	}
416

    
417
	@Override
418
	public void conditionallyApproveRequest(final String requestId, final String personId, final String comment, String template) {
419
		requestDAO.conditionallyApproveRequest(requestId, personId, comment, template);
420

    
421
		executorService.submit(new Runnable() {
422
			@Override
423
			public void run() {
424
				RequestInfo requestInfo = getById(requestId);
425

    
426
				try {
427
					emailUtils.sendRequesterInitiallyApprovedEmail(requestInfo);
428
				} catch (MessagingException e) {
429
					e.printStackTrace();
430
				}
431
			}
432
		});
433
	}
434

    
435
	@Override
436
	public void approveRequest(final String requestId, final String personId, final String comment, String template) {
437
		requestDAO.approveRequest(requestId, personId, comment, template);
438

    
439
		executorService.submit(new Runnable() {
440
			@Override
441
			public void run() {
442
				RequestInfo requestInfo = getById(requestId);
443

    
444
				try {
445
					emailUtils.sendRequesterApprovedEmail(requestInfo);
446
				} catch (MessagingException e) {
447
					e.printStackTrace();
448
				}
449

    
450
				if (requestInfo.getInvoice() == null) {
451
					try {
452
						emailUtils.sendRequesterInvoiceNotification(requestInfo);
453
						emailUtils.sendPublisherInvoiceNotification(requestInfo);
454
					} catch (MessagingException e) {
455
						e.printStackTrace();
456
					}
457
				} else {
458
					try {
459
						for (Person person : personManager.getAccountingOfficers())
460
							emailUtils.sendAccountingRequestApprovedEmail(person, requestInfo);
461
					} catch (MessagingException e) {
462
						e.printStackTrace();
463
					}
464
				}
465
			}
466
		});
467
	}
468

    
469
	@Override
470
	public void rejectRequest(final String requestId, String personId, String comment, String template) {
471
		requestDAO.rejectRequest(requestId, personId, comment, template);
472

    
473
		executorService.submit(new Runnable() {
474
			@Override
475
			public void run() {
476
				RequestInfo requestInfo = getById(requestId);
477

    
478
				try {
479
					emailUtils.sendRequesterRejectedEmail(requestInfo);
480
				} catch (MessagingException e) {
481
					e.printStackTrace();
482
				}
483
			}
484
		});
485
	}
486

    
487
	@Override
488
	public void processingRequest(final String requestId, String personId, String comment, String template) {
489
		requestDAO.processingRequest(requestId, personId, comment, template);
490

    
491
		executorService.submit(new Runnable() {
492
			@Override
493
			public void run() {
494
				RequestInfo requestInfo = getById(requestId);
495

    
496
				try {
497
					for (Person person : personManager.getModerators())
498
						emailUtils.sendModeratorProcessingEmail(person, requestInfo);
499

    
500
				} catch (MessagingException e) {
501
					e.printStackTrace();
502
				}
503
			}
504
		});
505
	}
506

    
507
	@Override
508
	public void paidRequest(final String requestId, String personId, String comment, String template, float apc_paid, float transfer_cost, float other_cost, Date datePaid) {
509
		requestDAO.paidRequest(requestId, personId, comment, template, apc_paid, transfer_cost, other_cost, datePaid);
510

    
511
		executorService.submit(new Runnable() {
512
			@Override
513
			public void run() {
514
				RequestInfo requestInfo = getById(requestId);
515

    
516
				try {
517
					emailUtils.sendRequesterPaidEmail(requestInfo);
518
					emailUtils.sendPublisherPaidEmail(requestInfo);
519

    
520
					for (Person person : personManager.getModerators())
521
						emailUtils.sendModeratorPaidEmail(person, requestInfo);
522

    
523
					if (sendEvaEmail)
524
						emailUtils.sendEvaPaidEmail(evaEmail, requestInfo);
525

    
526
				} catch (MessagingException e) {
527
					e.printStackTrace();
528
				}
529
			}
530
		});
531
	}
532

    
533
	@Override
534
	public void paidLibraryRequest(String requestId, String personId, String comment, String template, float apc_paid, float transfer_cost, float other_cost, Date datePaid) {
535
		requestDAO.paidLibraryRequest(requestId, personId, comment, template, apc_paid, transfer_cost, other_cost, datePaid);
536

    
537
//		executorService.submit(new Runnable() {
538
//			@Override
539
//			public void run() {
540
//				RequestInfo requestInfo = getById(requestId);
541
//
542
//				try {
543
//					emailUtils.sendRequesterPaidEmail(requestInfo);
544
//					emailUtils.sendPublisherPaidEmail(requestInfo);
545
//
546
//					for (Person person : personManager.getModerators())
547
//						emailUtils.sendModeratorPaidEmail(person, requestInfo);
548
//
549
//					if (sendEvaEmail)
550
//						emailUtils.sendEvaPaidEmail(evaEmail, requestInfo);
551
//
552
//				} catch (MessagingException e) {
553
//					e.printStackTrace();
554
//				}
555
//			}
556
//		});
557
	}
558

    
559
	@Override
560
	public void paidPublisherRequest(String requestId, String personId, String comment, String template, float apc_paid, float transfer_cost, float other_cost, Date datePaid) {
561
		requestDAO.paidPublisherRequest(requestId, personId, comment, template, apc_paid, transfer_cost, other_cost, datePaid);
562

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

    
585
	@Override
586
	public void onHoldRequest(final String requestId, String personId, String comment, String template) {
587
		requestDAO.onHoldRequest(requestId, personId, comment, template);
588

    
589
		executorService.submit(new Runnable() {
590
			@Override
591
			public void run() {
592
				RequestInfo requestInfo = getById(requestId);
593

    
594
				try {
595
					emailUtils.sendRequesterOnHoldEmail(requestInfo);
596
					emailUtils.sendPublisherOnHoldEmail(requestInfo);
597

    
598
					for (Person person : personManager.getModerators())
599
						emailUtils.sendModeratorOnHoldEmail(person, requestInfo);
600
				} catch (MessagingException e) {
601
					e.printStackTrace();
602
				}
603
			}
604
		});
605
	}
606

    
607
	@Override
608
	public void deniedRequest(final String requestId, String personId, String comment, String template) {
609
		requestDAO.deniedRequest(requestId, personId, comment, template);
610

    
611
		executorService.submit(new Runnable() {
612
			@Override
613
			public void run() {
614
				RequestInfo requestInfo = getById(requestId);
615

    
616
				try {
617
					emailUtils.sendRequesterDeniedEmail(requestInfo);
618
					emailUtils.sendPublisherDeniedEmail(requestInfo);
619

    
620
					for (Person person : personManager.getModerators())
621
						emailUtils.sendModeratorDeniedEmail(person, requestInfo);
622
				} catch (MessagingException e) {
623
					e.printStackTrace();
624
				}
625
			}
626
		});
627
	}
628

    
629
	@Override
630
	public void invoiceUploaded(final String requestId, String invoiceId) {
631

    
632
		executorService.submit(new Runnable() {
633
			@Override
634
			public void run() {
635
				RequestInfo requestInfo = getById(requestId);
636

    
637
				if (requestInfo.getRequest().getStatus(Request.RequestStatus.CONDITIONALLY_APPROVED)) {
638
					try {
639
						for (Person person : personManager.getModerators())
640
							emailUtils.sendModeratorInvoiceUploaded(person, requestInfo);
641
					} catch (MessagingException e) {
642
						e.printStackTrace();
643
					}
644
				}
645
			}
646
		});
647
	}
648

    
649
	@Override
650
	public void uploadTransferReceipt(String requestid, String contentType, InputStream inputStream) {
651
		requestDAO.uploadBankTransferReceipt(requestid, contentType, inputStream);
652
	}
653

    
654
	@Override
655
	public BankTransferReceipt downloadBankTransferReceipt(String requestId) throws RequestManagerException {
656
		try {
657
			return requestDAO.downloadBankTransferReceipt(requestId);
658
		} catch (EmptyResultDataAccessException e) {
659
			throw new RequestManagerException(RequestManagerException.ErrorCause.NOT_EXISTS);
660
		}
661
	}
662

    
663
	@Override
664
	public List<CommentTemplate> getCommentTemplates(Request.RequestStatus requestStatus) {
665
		try {
666
			return requestDAO.getCommentTemplates(requestStatus);
667
		} catch (EmptyResultDataAccessException e) {
668
			return new ArrayList<CommentTemplate>();
669
		}
670
	}
671

    
672
	private RequestInfo getRequestInfo(Request request) throws PersonManagerException {
673
		RequestInfo req = new RequestInfo();
674

    
675
		try {
676
			// TODO add missing fields
677
			req.setId(request.getId());
678
			req.setUser(personManager.getById(request.getUser()));
679
			req.setDate(request.getDate());
680
			req.setResearcher(personManager.getById(request.getResearcher()));
681
			req.setOrganization(organizationManager.getById(request.getOrganization()));
682
			req.setProject(projectManager.getById(request.getProject()).getProject());
683
			req.setPublication(publicationManager.getPublication(request.getPublication()));
684
			req.setPublisherEmail(request.getPublisherEmail());
685
			req.setApc(request.getApc());
686
			req.setDiscount(request.getDiscount());
687
			req.setProjectParticipation(request.getProjectParticipation());
688
			req.setFundingRequested(request.getFundingRequested());
689
			req.setCurrency(request.getCurrency());
690
			req.setBankAccount(request.getBankAccount());
691
			if (request.getInvoice() != null)
692
				req.setInvoice(invoiceManager.getInvoice(request.getInvoice()));
693
			req.setEligibility(eligibilityManager.validate(request));
694
			req.setStatus(Request.RequestStatus.forStatus(request.getStatus()));
695
			req.setComments(requestDAO.getComments(request.getId()));
696
			req.setCoFunders(request.getCoFunders());
697
			req.setRequest(request);
698

    
699
			req.setApc_paid(request.getApc_paid());
700
			req.setTransfer_cost(request.getTransfer_cost());
701
			req.setOther_cost(request.getOther_cost());
702
			req.setDate_paid(request.getDate_paid());
703
			req.setSubmissionDate(request.getSubmissionDate());
704
			req.setApprovalDate(request.getApprovalDate());
705

    
706
			if (request.getBudget() != null) {
707
				req.setBudgetInfo(budgetManager.getBudget(request.getBudget()));
708
			}
709

    
710
			loadCommentPersons(req);
711
		} catch (ManagerException me) {
712
			me.printStackTrace();
713
		} catch (OrganizationManagerException e) {
714
			e.printStackTrace();
715
		}
716

    
717
		return req;
718
	}
719

    
720
	private RequestInfo getShortRequestInfo(Request request) throws PersonManagerException {
721
		RequestInfo req = new RequestInfo();
722

    
723
		try {
724
			// TODO add missing fields
725
			req.setId(request.getId());
726
			req.setDate(request.getDate());
727
			req.setProject(projectManager.getById(request.getProject()).getProject());
728
			req.setPublication(publicationManager.getPublication(request.getPublication()));
729
			req.setPublisherEmail(request.getPublisherEmail());
730
			req.setApc(request.getApc());
731
			req.setDiscount(request.getDiscount());
732
			req.setProjectParticipation(request.getProjectParticipation());
733
			req.setFundingRequested(request.getFundingRequested());
734
			req.setCurrency(request.getCurrency());
735
			req.setBankAccount(request.getBankAccount());
736
			if (request.getInvoice() != null)
737
				req.setInvoice(invoiceManager.getInvoice(request.getInvoice()));
738
			req.setCoFunders(request.getCoFunders());
739
			req.setStatus(Request.RequestStatus.forStatus(request.getStatus()));
740
			req.setComments(requestDAO.getComments(request.getId()));
741
			req.setRequest(request);
742

    
743
			req.setApc_paid(request.getApc_paid());
744
			req.setTransfer_cost(request.getTransfer_cost());
745
			req.setOther_cost(request.getOther_cost());
746
			req.setDate_paid(request.getDate_paid());
747
			req.setSubmissionDate(request.getSubmissionDate());
748
			req.setApprovalDate(request.getApprovalDate());
749

    
750
			loadCommentPersons(req);
751
		} catch (ManagerException me) {
752
			me.printStackTrace();
753
		}
754

    
755
		return req;
756
	}
757

    
758
	private void loadCommentPersons(RequestInfo requestInfo) throws PersonManagerException {
759
		for (Comment comment : requestInfo.getComments()) {
760
			comment.setPerson(personManager.getById(comment.getPerson().getId()));
761
		}
762
	}
763

    
764
	public boolean isSendCoordinatorEmails() {
765
		return sendCoordinatorEmails;
766
	}
767

    
768
	public void setSendCoordinatorEmails(boolean sendCoordinatorEmails) {
769
		this.sendCoordinatorEmails = sendCoordinatorEmails;
770
	}
771

    
772
	public boolean isSendEvaEmail() {
773
		return sendEvaEmail;
774
	}
775

    
776
	public void setSendEvaEmail(boolean sendEvaEmail) {
777
		this.sendEvaEmail = sendEvaEmail;
778
	}
779

    
780
	public String getEvaEmail() {
781
		return evaEmail;
782
	}
783

    
784
	public void setEvaEmail(String evaEmail) {
785
		this.evaEmail = evaEmail;
786
	}
787
}
788
*/
(24-24/29)