001package org.kuali.ole.krad; 002 003import java.util.ArrayList; 004import java.util.HashMap; 005import java.util.List; 006import java.util.Map; 007 008import javax.servlet.http.HttpServletRequest; 009import javax.servlet.http.HttpServletResponse; 010 011import org.apache.log4j.Logger; 012import org.kuali.ole.OLEConstants; 013import org.kuali.ole.deliver.bo.OleDeliverRequestBo; 014import org.kuali.ole.deliver.bo.OlePatronDocument; 015import org.kuali.ole.deliver.bo.OleProxyPatronDocument; 016import org.kuali.ole.deliver.form.OlePatronDocumentInquiryForm; 017import org.kuali.ole.deliver.processor.LoanProcessor; 018import org.kuali.ole.deliver.service.OleDeliverRequestDocumentHelperServiceImpl; 019import org.kuali.rice.krad.service.KRADServiceLocator; 020import org.kuali.rice.krad.web.controller.InquiryController; 021import org.kuali.rice.krad.web.form.InquiryForm; 022import org.kuali.rice.krad.web.form.UifFormBase; 023import org.springframework.stereotype.Controller; 024import org.springframework.validation.BindingResult; 025import org.springframework.web.bind.annotation.ModelAttribute; 026import org.springframework.web.bind.annotation.RequestMapping; 027import org.springframework.web.bind.annotation.RequestMethod; 028import org.springframework.web.servlet.ModelAndView; 029 030@Controller 031@RequestMapping(value = "/inquiry") 032public class OleInquiryController extends InquiryController { 033 034 private static final Logger LOG = Logger 035 .getLogger(OleInquiryController.class); 036 037 private static String DATA_OBJECT_CN_PARAM = "dataObjectClassName"; 038 private static String DATA_OBJECT_CN_ATTRIBUTE = OleInquiryController.class 039 .getName() + '.' + DATA_OBJECT_CN_PARAM; 040 041 private String getDataObjectClassName(HttpServletRequest request) { 042 String rv = request.getParameter(DATA_OBJECT_CN_PARAM); 043 if (rv == null) 044 045 rv = (String) request.getSession().getAttribute( 046 DATA_OBJECT_CN_ATTRIBUTE); 047 048 else 049 request.getSession().setAttribute(DATA_OBJECT_CN_ATTRIBUTE, rv); 050 051 return rv; 052 } 053 054 @Override 055 protected InquiryForm createInitialForm(HttpServletRequest request) { 056 String dataObjectClassName = getDataObjectClassName(request); 057 058 if (OlePatronDocument.class.getName().equals(dataObjectClassName)) 059 return new OlePatronDocumentInquiryForm(); 060 061 return super.createInitialForm(request); 062 } 063 064 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshLoanSection") 065 public ModelAndView refreshLoanSection( 066 @ModelAttribute("KualiForm") UifFormBase uifForm, 067 BindingResult result, HttpServletRequest request, 068 HttpServletResponse response) throws Exception { 069 if ((uifForm instanceof OlePatronDocumentInquiryForm) 070 && !((OlePatronDocumentInquiryForm) uifForm) 071 .isFilterProxySection()) { 072 073 OlePatronDocumentInquiryForm form = (OlePatronDocumentInquiryForm) uifForm; 074 OlePatronDocument patronDocument = (OlePatronDocument) form 075 .getDataObject(); 076 077 LoanProcessor loanProcessor = new LoanProcessor(); 078 OleDeliverRequestDocumentHelperServiceImpl requestService = new OleDeliverRequestDocumentHelperServiceImpl(); 079 List<OleDeliverRequestBo> oleDeliverRequestBoList = patronDocument 080 .getOleDeliverRequestBos(); 081 if (oleDeliverRequestBoList.size() > 0) { 082 for (int i = 0; i < oleDeliverRequestBoList.size(); i++) { 083 084 // OleItemSearch oleItemSearch = requestService 085 // .getItemDetailsForPatron(oleDeliverRequestBoList 086 // .get(i).getItemUuid()); 087 // if (oleItemSearch != null 088 // && oleItemSearch.getItemBarCode() != null) { 089 // oleDeliverRequestBoList.get(i).setTitle( 090 // oleItemSearch.getTitle()); 091 // oleDeliverRequestBoList.get(i).setCallNumber( 092 // oleItemSearch.getCallNumber()); 093 // } 094 095 requestService.processItem(oleDeliverRequestBoList.get(i)); 096 } 097 } 098 099 try { 100 patronDocument.setOleLoanDocuments(loanProcessor 101 .getPatronLoanedItemBySolr(patronDocument 102 .getOlePatronId())); 103 patronDocument 104 .setOleTemporaryCirculationHistoryRecords(loanProcessor 105 .getPatronTemporaryCirculationHistoryRecords(patronDocument 106 .getOlePatronId())); 107 patronDocument.setOleDeliverRequestBos(loanProcessor 108 .getPatronRequestRecords(patronDocument 109 .getOlePatronId())); 110 } catch (Exception e) { 111 LOG.error("Cannot fetch the patron loaned items.", e); 112 113 } 114 115 } 116 117 return super.refresh(uifForm, result, request, response); 118 } 119 120 @SuppressWarnings("unchecked") 121 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshProxyPatron") 122 public ModelAndView refreshProxyPatron( 123 @ModelAttribute("KualiForm") UifFormBase uifForm, 124 BindingResult result, HttpServletRequest request, 125 HttpServletResponse response) throws Exception { 126 127 if ((uifForm instanceof OlePatronDocumentInquiryForm) 128 && !((OlePatronDocumentInquiryForm) uifForm) 129 .isFilterProxySection()) { 130 131 OlePatronDocumentInquiryForm form = (OlePatronDocumentInquiryForm) uifForm; 132 OlePatronDocument patronDocument = (OlePatronDocument) form 133 .getDataObject(); 134 135 List<OleProxyPatronDocument> oleProxyPatronDocuments = patronDocument 136 .getOleProxyPatronDocuments(); 137 List<OleProxyPatronDocument> proxyPatronDocumentList = new ArrayList<OleProxyPatronDocument>(); 138 if (oleProxyPatronDocuments.size() > 0) { 139 for (OleProxyPatronDocument oleProxyPatronDocument : oleProxyPatronDocuments) { 140 Map<String, String> proxyMap = new HashMap<String, String>(); 141 proxyMap.put(OLEConstants.OlePatron.PATRON_ID, 142 oleProxyPatronDocument.getProxyPatronId()); 143 OlePatronDocument tempDocument = (OlePatronDocument) KRADServiceLocator 144 .getBusinessObjectService().findByPrimaryKey( 145 OlePatronDocument.class, proxyMap); 146 if (tempDocument != null 147 && tempDocument.isActiveIndicator()) { 148 oleProxyPatronDocument 149 .setProxyPatronBarcode(tempDocument 150 .getBarcode()); 151 oleProxyPatronDocument 152 .setProxyPatronFirstName(tempDocument 153 .getEntity().getNames().get(0) 154 .getFirstName()); 155 oleProxyPatronDocument 156 .setProxyPatronLastName(tempDocument 157 .getEntity().getNames().get(0) 158 .getLastName()); 159 proxyPatronDocumentList.add(oleProxyPatronDocument); 160 } 161 } 162 patronDocument 163 .setOleProxyPatronDocuments(proxyPatronDocumentList); 164 } 165 OlePatronDocument olePatronDocument; 166 OleProxyPatronDocument proxyPatronDocument = null; 167 List<OleProxyPatronDocument> proxyPatronDocuments = new ArrayList<OleProxyPatronDocument>(); 168 Map proxyMap = new HashMap(); 169 proxyMap.put(OLEConstants.OlePatron.PROXY_PATRON_ID, 170 patronDocument.getOlePatronId()); 171 List<OleProxyPatronDocument> oleProxyPatronDocumentList = (List<OleProxyPatronDocument>) KRADServiceLocator 172 .getBusinessObjectService().findMatching( 173 OleProxyPatronDocument.class, proxyMap); 174 if (oleProxyPatronDocumentList.size() > 0) { 175 proxyMap.remove(OLEConstants.OlePatron.PROXY_PATRON_ID); 176 for (OleProxyPatronDocument oleProxyPatronDocument : oleProxyPatronDocumentList) { 177 proxyMap.put(OLEConstants.OlePatron.PATRON_ID, 178 oleProxyPatronDocument.getOlePatronId()); 179 List<OlePatronDocument> olePatronDocumentList = (List<OlePatronDocument>) KRADServiceLocator 180 .getBusinessObjectService().findMatching( 181 OlePatronDocument.class, proxyMap); 182 if (olePatronDocumentList.size() > 0) { 183 olePatronDocument = olePatronDocumentList.get(0); 184 proxyPatronDocument = new OleProxyPatronDocument(); 185 if (olePatronDocument.isActiveIndicator()) { 186 proxyPatronDocument 187 .setOlePatronId(olePatronDocument 188 .getOlePatronId()); 189 proxyPatronDocument 190 .setProxyForPatronFirstName(olePatronDocument 191 .getEntity().getNames().get(0) 192 .getFirstName()); 193 proxyPatronDocument 194 .setProxyForPatronLastName(olePatronDocument 195 .getEntity().getNames().get(0) 196 .getLastName()); 197 proxyPatronDocument 198 .setProxyPatronActivationDate(oleProxyPatronDocument 199 .getProxyPatronActivationDate()); 200 proxyPatronDocument 201 .setProxyPatronExpirationDate(oleProxyPatronDocument 202 .getProxyPatronExpirationDate()); 203 /* 204 * List<OleProxyPatronDocument> proxyPatronList = 205 * (List<OleProxyPatronDocument>) 206 * getBusinessObjectService 207 * ().findMatching(OleProxyPatronDocument.class, 208 * proxyMap); if (proxyPatronList.size() > 0) { for 209 * (OleProxyPatronDocument proxyPatron : 210 * proxyPatronList) { if 211 * (proxyPatron.getOlePatronId( 212 * ).equals(olePatronDocument.getOlePatronId())) { 213 * proxyPatronDocument 214 * .setProxyPatronActivationDate(proxyPatron 215 * .getProxyPatronActivationDate()); 216 * proxyPatronDocument 217 * .setProxyPatronExpirationDate(proxyPatron 218 * .getProxyPatronExpirationDate()); } } } 219 */ 220 } 221 proxyPatronDocuments.add(proxyPatronDocument); 222 } 223 } 224 patronDocument 225 .setOleProxyPatronDocumentList(proxyPatronDocuments); 226 } 227 } 228 229 return super.refresh(uifForm, result, request, response); 230 } 231 232} 233