1 package org.kuali.ole.deliver.controller;
2
3 import org.apache.commons.collections.CollectionUtils;
4 import org.apache.commons.lang.StringUtils;
5 import org.apache.log4j.Logger;
6 import org.kuali.ole.OLEConstants;
7 import org.kuali.ole.deliver.OleLoanDocumentsFromSolrBuilder;
8 import org.kuali.ole.deliver.bo.*;
9 import org.kuali.ole.deliver.processor.LoanProcessor;
10 import org.kuali.ole.deliver.service.OLEDeliverService;
11 import org.kuali.ole.deliver.service.OleDeliverRequestDocumentHelperServiceImpl;
12 import org.kuali.ole.krad.OleInquiryController;
13 import org.kuali.rice.krad.service.KRADServiceLocator;
14 import org.kuali.rice.krad.web.controller.InquiryController;
15 import org.kuali.rice.krad.web.form.InquiryForm;
16 import org.kuali.rice.krad.web.form.MaintenanceDocumentForm;
17 import org.kuali.rice.krad.web.form.UifFormBase;
18 import org.springframework.stereotype.Controller;
19 import org.springframework.validation.BindingResult;
20 import org.springframework.web.bind.annotation.ModelAttribute;
21 import org.springframework.web.bind.annotation.RequestMapping;
22 import org.springframework.web.bind.annotation.RequestMethod;
23 import org.springframework.web.servlet.ModelAndView;
24
25 import javax.servlet.http.HttpServletRequest;
26 import javax.servlet.http.HttpServletResponse;
27 import java.util.ArrayList;
28 import java.util.HashMap;
29 import java.util.List;
30 import java.util.Map;
31
32
33
34
35
36
37
38
39 @Controller
40 @RequestMapping(value = "/olePatronInquiry")
41 public class OlePatronDocumentInquiryController extends OleInquiryController {
42 private static final Logger LOG = Logger.getLogger(OlePatronDocumentInquiryController.class);
43
44 private LoanProcessor loanProcessor;
45 private OleLoanDocumentsFromSolrBuilder oleLoanDocumentsFromSolrBuilder;
46
47 private LoanProcessor getLoanProcessor() {
48 if (loanProcessor == null) {
49 loanProcessor = new LoanProcessor();
50 }
51 return loanProcessor;
52 }
53
54 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hidePatronLoanedItem")
55 public ModelAndView hidePatronLoanedItem(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
56 HttpServletRequest request, HttpServletResponse response) {
57
58 InquiryForm form = (InquiryForm) uifForm;
59 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
60
61 olePatronDocument.setShowLoanedRecords(false);
62 return getUIFModelAndView(form);
63 }
64
65 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showPatronLoanedItem")
66 public ModelAndView showPatronLoanedItem(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
67 HttpServletRequest request, HttpServletResponse response) {
68 InquiryForm form = (InquiryForm) uifForm;
69 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
70 try {
71 olePatronDocument.setOleLoanDocuments(getOleLoanDocumentsFromSolrBuilder().getPatronLoanedItemBySolr
72 (olePatronDocument.getOlePatronId(), null));
73 if(CollectionUtils.isNotEmpty(olePatronDocument.getOleLoanDocuments())) {
74 for(OleLoanDocument oleLoanDocument : olePatronDocument.getOleLoanDocuments()) {
75 if(StringUtils.isNotEmpty(oleLoanDocument.getRealPatronName())) {
76 Map patronMap = new HashMap();
77 patronMap.put(OLEConstants.OlePatron.PATRON_ID, oleLoanDocument.getRealPatronName());
78 OlePatronDocument patronDocument = KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
79 if(patronDocument != null){
80 patronDocument = OLEDeliverService.populatePatronName(patronDocument);
81 oleLoanDocument.setRealPatronName(patronDocument.getPatronName());
82 oleLoanDocument.setProxyPatronBarcode(patronDocument.getBarcode());
83 oleLoanDocument.setProxyPatronBarcodeUrl(OLEConstants.ASSIGN_INQUIRY_PATRON_ID + patronDocument.getOlePatronId() + OLEConstants.ASSIGN_PATRON_INQUIRY);
84 }
85 }
86 }
87 }
88 } catch (Exception e) {
89 LOG.error("While fetching loan records error occured" + e);
90 }
91 olePatronDocument.setShowLoanedRecords(true);
92 return getUIFModelAndView(form);
93 }
94
95 private OleLoanDocumentsFromSolrBuilder getOleLoanDocumentsFromSolrBuilder() {
96 if (null == oleLoanDocumentsFromSolrBuilder) {
97 oleLoanDocumentsFromSolrBuilder = new OleLoanDocumentsFromSolrBuilder();
98 }
99 return oleLoanDocumentsFromSolrBuilder;
100 }
101
102 public void setOleLoanDocumentsFromSolrBuilder(OleLoanDocumentsFromSolrBuilder oleLoanDocumentsFromSolrBuilder) {
103 this.oleLoanDocumentsFromSolrBuilder = oleLoanDocumentsFromSolrBuilder;
104 }
105
106 @Override
107 public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, HttpServletRequest request, HttpServletResponse response) {
108 return super.start(form, result, request, response);
109 }
110
111 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showPatronRequestedRecords")
112 public ModelAndView showPatronRequestedRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
113 HttpServletRequest request, HttpServletResponse response) {
114 LOG.debug("Patron View : showing Patron Requested Records");
115 InquiryForm form = (InquiryForm) uifForm;
116 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
117 try {
118 OleDeliverRequestDocumentHelperServiceImpl requestService = new OleDeliverRequestDocumentHelperServiceImpl();
119 List<OleDeliverRequestBo> oleDeliverRequestBoList = olePatronDocument.getOleDeliverRequestBos();
120 if (oleDeliverRequestBoList.size() > 0) {
121 for (int i = 0; i < oleDeliverRequestBoList.size(); i++) {
122 OleItemSearch oleItemSearch = requestService.getItemDetailsForPatron(oleDeliverRequestBoList.get(i).getItemUuid());
123 if (oleItemSearch != null && oleItemSearch.getItemBarCode() != null) {
124 oleDeliverRequestBoList.get(i).setTitle(oleItemSearch.getTitle());
125 oleDeliverRequestBoList.get(i).setCallNumber(oleItemSearch.getCallNumber());
126 oleDeliverRequestBoList.get(i).setAuthor(oleItemSearch.getAuthor());
127 oleDeliverRequestBoList.get(i).setItemType(oleItemSearch.getItemType());
128 oleDeliverRequestBoList.get(i).setItemStatus(oleItemSearch.getItemStatus());
129 oleDeliverRequestBoList.get(i).setShelvingLocation(oleItemSearch.getShelvingLocation());
130 oleDeliverRequestBoList.get(i).setCopyNumber(oleItemSearch.getCopyNumber());
131 }
132 }
133 }
134 olePatronDocument.setOleDeliverRequestBos(oleDeliverRequestBoList);
135 } catch (Exception e) {
136 LOG.error("While fetching Patron Requested Records error occured" + e);
137 }
138 olePatronDocument.setShowRequestedItems(true);
139 return getUIFModelAndView(form);
140 }
141
142 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hidePatronRequestedRecords")
143 public ModelAndView hidePatronRequestedRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
144 HttpServletRequest request, HttpServletResponse response) {
145 LOG.debug("Patron View : Hiding Patron Loaned Records");
146 InquiryForm form = (InquiryForm) uifForm;
147 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
148
149 olePatronDocument.setShowRequestedItems(false);
150 return getUIFModelAndView(form);
151 }
152
153 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showTemporaryCirculationHistoryRecords")
154 public ModelAndView showTemporaryCirculationHistoryRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
155 HttpServletRequest request, HttpServletResponse response) {
156 LOG.debug("Patron View : showing Patron TemporaryCirculationHistory Records");
157 InquiryForm form = (InquiryForm) uifForm;
158 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
159 try {
160 olePatronDocument.setOleTemporaryCirculationHistoryRecords(getOleLoanDocumentsFromSolrBuilder().getPatronTemporaryCirculationHistoryRecords(olePatronDocument.getOlePatronId()));
161 } catch (Exception e) {
162 LOG.error("While fetching Patron TemporaryCirculationHistory Records error occured" + e);
163 }
164
165 olePatronDocument.setShowTemporaryCirculationHistoryRecords(true);
166 return getUIFModelAndView(form);
167 }
168 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hideTemporaryCirculationHistoryRecords")
169 public ModelAndView hideTemporaryCirculationHistoryRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
170 HttpServletRequest request, HttpServletResponse response) {
171 LOG.debug("Patron View : Hiding Patron Loaned Records");
172 InquiryForm form = (InquiryForm) uifForm;
173 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDataObject();
174
175 olePatronDocument.setShowTemporaryCirculationHistoryRecords(false);
176 return getUIFModelAndView(form);
177 }
178 }