1 package org.kuali.ole.deliver.controller;
2
3 import java.awt.Graphics2D;
4 import java.awt.image.BufferedImage;
5 import java.io.ByteArrayInputStream;
6 import java.io.ByteArrayOutputStream;
7 import java.sql.Timestamp;
8 import java.text.DateFormat;
9 import java.text.ParseException;
10 import java.text.SimpleDateFormat;
11 import java.util.*;
12
13 import javax.imageio.ImageIO;
14 import javax.servlet.http.HttpServletRequest;
15 import javax.servlet.http.HttpServletResponse;
16
17 import org.apache.commons.collections.CollectionUtils;
18 import org.apache.commons.lang.StringUtils;
19 import org.apache.log4j.Logger;
20 import org.kuali.ole.DocumentUniqueIDPrefix;
21 import org.kuali.ole.OLEConstants;
22 import org.kuali.ole.deliver.OleLoanDocumentsFromSolrBuilder;
23 import org.kuali.ole.deliver.bo.*;
24 import org.kuali.ole.deliver.form.OlePatronMaintenanceDocumentForm;
25 import org.kuali.ole.deliver.processor.LoanProcessor;
26 import org.kuali.ole.deliver.service.OLEDeliverService;
27 import org.kuali.ole.deliver.service.OleDeliverRequestDocumentHelperServiceImpl;
28 import org.kuali.ole.docstore.common.client.DocstoreClientLocator;
29 import org.kuali.ole.docstore.common.document.ItemOleml;
30 import org.kuali.ole.docstore.common.document.content.enums.DocType;
31 import org.kuali.ole.docstore.common.document.content.instance.Item;
32 import org.kuali.ole.docstore.common.document.content.instance.xstream.ItemOlemlRecordProcessor;
33 import org.kuali.ole.docstore.common.document.content.instance.MissingPieceItemRecord;
34 import org.kuali.ole.service.OlePatronHelperService;
35 import org.kuali.ole.service.OlePatronHelperServiceImpl;
36 import org.kuali.ole.service.OlePatronMaintenanceDocumentServiceImpl;
37 import org.kuali.ole.service.OlePatronService;
38 import org.kuali.ole.sys.context.SpringContext;
39 import org.kuali.rice.core.api.datetime.DateTimeService;
40 import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
41 import org.kuali.rice.kim.impl.identity.address.EntityAddressBo;
42 import org.kuali.rice.kim.impl.identity.affiliation.EntityAffiliationBo;
43 import org.kuali.rice.kim.impl.identity.email.EntityEmailBo;
44 import org.kuali.rice.kim.impl.identity.employment.EntityEmploymentBo;
45 import org.kuali.rice.kim.impl.identity.name.EntityNameBo;
46 import org.kuali.rice.kim.impl.identity.phone.EntityPhoneBo;
47 import org.kuali.rice.kim.impl.identity.type.EntityTypeContactInfoBo;
48 import org.kuali.rice.krad.maintenance.MaintenanceDocument;
49 import org.kuali.rice.krad.maintenance.MaintenanceUtils;
50 import org.kuali.rice.krad.service.KRADServiceLocator;
51 import org.kuali.rice.krad.service.MaintenanceDocumentService;
52 import org.kuali.rice.krad.uif.UifParameters;
53 import org.kuali.rice.krad.uif.container.CollectionGroup;
54 import org.kuali.rice.krad.uif.util.ObjectPropertyUtils;
55 import org.kuali.rice.krad.uif.util.ProcessLogger;
56 import org.kuali.rice.krad.util.GlobalVariables;
57 import org.kuali.rice.krad.util.KRADConstants;
58 import org.kuali.rice.krad.util.ObjectUtils;
59 import org.kuali.rice.krad.web.controller.MaintenanceDocumentController;
60 import org.kuali.rice.krad.web.form.DocumentFormBase;
61 import org.kuali.rice.krad.web.form.MaintenanceDocumentForm;
62 import org.kuali.rice.krad.web.form.UifFormBase;
63 import org.springframework.stereotype.Controller;
64 import org.springframework.validation.BindingResult;
65 import org.springframework.web.bind.annotation.ModelAttribute;
66 import org.springframework.web.bind.annotation.RequestMapping;
67 import org.springframework.web.bind.annotation.RequestMethod;
68 import org.springframework.web.multipart.MultipartFile;
69 import org.springframework.web.servlet.ModelAndView;
70
71
72
73
74 @Controller
75 @RequestMapping(value = "/patronMaintenance")
76 public class OlePatronMaintenanceDocumentController extends MaintenanceDocumentController {
77
78 private static final Logger LOG = Logger.getLogger(OlePatronMaintenanceDocumentController.class);
79 private OlePatronService olePatronService;
80 private OlePatronHelperService olePatronHelperService = new OlePatronHelperServiceImpl();
81 private byte[] imageInByte;
82 private OleDeliverRequestDocumentHelperServiceImpl oleDeliverRequestDocumentHelperService;
83 private DateTimeService dateTimeService;
84 private OleLoanDocumentsFromSolrBuilder oleLoanDocumentsFromSolrBuilder;
85
86 @Override
87 protected MaintenanceDocumentForm createInitialForm(
88 HttpServletRequest request) {
89 return new OlePatronMaintenanceDocumentForm();
90 }
91
92 public DateTimeService getDateTimeService() {
93 return (DateTimeService)SpringContext.getService("dateTimeService");
94 }
95
96 public void setDateTimeService(DateTimeService dateTimeService) {
97 this.dateTimeService = dateTimeService;
98 }
99
100 public OlePatronService getOlePatronService() {
101 if (olePatronService != null) {
102 olePatronService = GlobalResourceLoader.getService(OLEConstants.OlePatron.OLE_PATRON_SERVICE);
103 }
104 return olePatronService;
105 }
106
107 private LoanProcessor loanProcessor;
108
109 private OleDeliverRequestDocumentHelperServiceImpl getOleDeliverRequestDocumentHelperService() {
110 if (oleDeliverRequestDocumentHelperService == null) {
111 oleDeliverRequestDocumentHelperService = new OleDeliverRequestDocumentHelperServiceImpl();
112 }
113 return oleDeliverRequestDocumentHelperService;
114 }
115
116 private DocstoreClientLocator docstoreClientLocator;
117
118 public DocstoreClientLocator getDocstoreClientLocator() {
119
120 if (docstoreClientLocator == null) {
121 docstoreClientLocator = SpringContext.getBean(DocstoreClientLocator.class);
122
123 }
124 return docstoreClientLocator;
125 }
126
127
128
129
130
131
132 @Override
133 protected MaintenanceDocumentService getMaintenanceDocumentService() {
134 return GlobalResourceLoader.getService(OLEConstants.OlePatron.OLE_PATRON_MAINTENANCE_DOC_SERVICE);
135 }
136
137
138 @Override
139 @RequestMapping(params = "methodToCall=maintenanceEdit")
140 public ModelAndView maintenanceEdit(@ModelAttribute("KualiForm") MaintenanceDocumentForm form, BindingResult result,
141 HttpServletRequest request, HttpServletResponse response) throws Exception {
142
143 MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
144 setupMaintenance(form, request, KRADConstants.MAINTENANCE_EDIT_ACTION);
145 MaintenanceDocument document = (MaintenanceDocument) maintenanceForm.getDocument();
146 super.maintenanceEdit(form, result, request, response);
147 OlePatronDocument olePatronDocument = (OlePatronDocument) document.getOldMaintainableObject().getDataObject();
148 olePatronDocument.getAddresses().clear();
149 SimpleDateFormat fmt = new SimpleDateFormat(OLEConstants.OlePatron.PATRON_MAINTENANCE_DATE_FORMAT);
150 if (olePatronDocument.getActivationDate() == null)
151 olePatronDocument.setActivationDate(getDateTimeService().getCurrentDate());
152 OlePatronDocument patronDocument = (OlePatronDocument)document.getNewMaintainableObject().getDataObject();
153 patronDocument.setBarcodeEditable(false);
154 if((patronDocument.getExpirationDate() != null && patronDocument.getActivationDate() != null && fmt.format(patronDocument.getActivationDate()).compareTo(fmt.format(patronDocument.getExpirationDate())) >= 0) || (patronDocument.getExpirationDate() != null && fmt.format(new Date(System.currentTimeMillis())).compareTo(fmt.format(patronDocument.getExpirationDate())) > 0)){
155
156 patronDocument.setExpirationFlag(false);
157 }
158 olePatronDocument.setShowLoanedRecords(false);
159 olePatronDocument.setShowRequestedItems(false);
160 olePatronDocument.setShowTemporaryCirculationHistoryRecords(false);
161 return getUIFModelAndView(form);
162 }
163
164 @Override
165 @RequestMapping(params = "methodToCall=maintenanceCopy")
166 public ModelAndView maintenanceCopy(@ModelAttribute("KualiForm") MaintenanceDocumentForm form, BindingResult result, HttpServletRequest request, HttpServletResponse response) throws Exception {
167 MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
168 setupMaintenance(form, request, KRADConstants.MAINTENANCE_COPY_ACTION);
169 super.maintenanceCopy(form, result, request, response);
170 MaintenanceDocument document = (MaintenanceDocument) maintenanceForm.getDocument();
171 OlePatronDocument patronDocument=(OlePatronDocument)document.getNewMaintainableObject().getDataObject();
172 if(patronDocument.getOlePatronLocalIds()!=null && patronDocument.getOlePatronLocalIds().size()>0){
173 for(OlePatronLocalIdentificationBo olePatronLocalIdentificationBo:patronDocument.getOlePatronLocalIds()){
174 olePatronLocalIdentificationBo.setPatronLocalSeqId(null);
175 olePatronLocalIdentificationBo.setOlePatronId(null);
176 olePatronLocalIdentificationBo.setOlePatronDocument(null);
177 }
178 }
179 patronDocument.setShowLoanedRecords(false);
180 patronDocument.setShowRequestedItems(false);
181 patronDocument.setShowTemporaryCirculationHistoryRecords(false);
182 return getUIFModelAndView(form);
183 }
184
185
186
187
188
189
190
191
192
193
194
195 @RequestMapping(params = "methodToCall=" + "maintenanceDelete")
196 public ModelAndView maintenanceDelete(@ModelAttribute("KualiForm") MaintenanceDocumentForm form, BindingResult result,
197 HttpServletRequest request, HttpServletResponse response) throws Exception {
198 LOG.debug(" Inside maintenanceDelete ");
199 setupMaintenanceForDelete(form, request, OLEConstants.OlePatron.OLE_PATRON_DELETE);
200 MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
201 MaintenanceDocument document = (MaintenanceDocument) maintenanceForm.getDocument();
202 OlePatronDocument olePatronDocument = (OlePatronDocument) document.getOldMaintainableObject().getDataObject();
203 OlePatronDocument patronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
204 olePatronDocument.setBarcodeEditable(false);
205 patronDocument.setBarcodeEditable(false);
206 olePatronDocument.setShowLoanedRecords(false);
207 olePatronDocument.setShowRequestedItems(false);
208 olePatronDocument.setShowTemporaryCirculationHistoryRecords(false);
209 return getUIFModelAndView(form);
210 }
211
212
213
214
215
216
217
218
219
220
221
222 @RequestMapping(params = "methodToCall=" + "deleteDocument")
223 public ModelAndView deleteDocument(@ModelAttribute("KualiForm") MaintenanceDocumentForm form, BindingResult result,
224 HttpServletRequest request, HttpServletResponse response) throws Exception {
225
226 LOG.debug(" Inside deleteDocument ");
227 MaintenanceDocument document = form.getDocument();
228 OlePatronDocument olePatronDocument = new OlePatronDocument();
229 try {
230 if (document.getDocumentDataObject() != null) {
231 olePatronDocument = (OlePatronDocument) document.getDocumentDataObject();
232 if (olePatronDocument != null && olePatronDocument.getOlePatronId() != null) {
233 boolean deletePatronDetail = olePatronHelperService.deletePatron(olePatronDocument);
234 if (deletePatronDetail) {
235 return back(form, result, request, response);
236 } else {
237 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_MESSAGES, OLEConstants.OlePatron.ERROR_PATRON_HAS_LOAN);
238 return getUIFModelAndView(form);
239 }
240 } else {
241 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_MESSAGES, OLEConstants.OlePatron.ERROR_PATRON_NOT_FOUND);
242 return getUIFModelAndView(form);
243 }
244 }
245 } catch (Exception ex) {
246 LOG.error("Exception while delete document", ex);
247 }
248 return back(form, result, request, response);
249 }
250
251
252
253
254
255
256
257
258
259 protected void setupMaintenanceForDelete(MaintenanceDocumentForm form, HttpServletRequest request, String maintenanceAction) {
260 LOG.debug(" Inside setupMaintenanceForDelete ");
261 MaintenanceDocument document = form.getDocument();
262 if (document == null) {
263 document = getMaintenanceDocumentService()
264 .setupNewMaintenanceDocument(form.getDataObjectClassName(), form.getDocTypeName(),
265 maintenanceAction);
266
267 form.setDocument(document);
268 form.setDocTypeName(document.getDocumentHeader().getWorkflowDocument().getDocumentTypeName());
269 }
270
271 form.setMaintenanceAction(maintenanceAction);
272 OlePatronMaintenanceDocumentServiceImpl olePatronMaintenanceDocumentServicec = (OlePatronMaintenanceDocumentServiceImpl) getMaintenanceDocumentService();
273 olePatronMaintenanceDocumentServicec.setupMaintenanceObjectForDelete(document, maintenanceAction, request.getParameterMap());
274 MaintenanceUtils.checkForLockingDocument(document, false);
275 }
276
277
278 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=searchAddLine")
279 public ModelAndView searchAddLine(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
280 HttpServletRequest request, HttpServletResponse response) {
281 MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
282 MaintenanceDocument maintenanceDocument = (MaintenanceDocument) maintenanceForm.getDocument();
283 OlePatronDocument olePatronDocument = (OlePatronDocument) maintenanceDocument.getNewMaintainableObject().getDataObject();
284 String selectedCollectionPath = maintenanceForm.getActionParamaterValue(UifParameters.SELLECTED_COLLECTION_PATH);
285 CollectionGroup collectionGroup = maintenanceForm.getPostedView().getViewIndex().getCollectionGroupByPath(
286 selectedCollectionPath);
287 String addLinePath = collectionGroup.getAddLineBindingInfo().getBindingPath();
288 Object eventObject = ObjectPropertyUtils.getPropertyValue(maintenanceForm, addLinePath);
289 OleProxyPatronDocument oleProxyPatronDocument = (OleProxyPatronDocument) eventObject;
290 Map<String, String> proxyMap = new HashMap<String, String>();
291 proxyMap.put(OLEConstants.OlePatron.BARCODE, oleProxyPatronDocument.getProxyPatronBarcode());
292 OlePatronDocument tempDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, proxyMap);
293 if (tempDocument != null) {
294 oleProxyPatronDocument.setProxyPatronId(tempDocument.getOlePatronId());
295 oleProxyPatronDocument.setProxyPatronBarcode(tempDocument.getBarcode());
296 oleProxyPatronDocument.setProxyPatronFirstName(tempDocument.getEntity().getNames().get(0).getFirstName());
297 oleProxyPatronDocument.setProxyPatronLastName(tempDocument.getEntity().getNames().get(0).getLastName());
298 } else {
299 GlobalVariables.getMessageMap().putError(OLEConstants.OleDeliverRequest.BORROWER_ID, OLEConstants.OleDeliverRequest.INVALID_PATRON);
300 }
301 ModelAndView modelAndView = super.addLine(form, result, request, response);
302 return modelAndView;
303 }
304
305
306
307
308 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addPhoneNumber")
309 public ModelAndView addPhoneNumber(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
310 HttpServletRequest request, HttpServletResponse response) {
311 MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
312 MaintenanceDocument maintenanceDocument = (MaintenanceDocument) maintenanceForm.getDocument();
313 OlePatronDocument olePatronDocument = (OlePatronDocument) maintenanceDocument.getNewMaintainableObject().getDataObject();
314 String selectedCollectionPath = maintenanceForm.getActionParamaterValue(UifParameters.SELLECTED_COLLECTION_PATH);
315 CollectionGroup collectionGroup = maintenanceForm.getPostedView().getViewIndex().getCollectionGroupByPath(
316 selectedCollectionPath);
317 String addLinePath = collectionGroup.getAddLineBindingInfo().getBindingPath();
318 Object eventObject = ObjectPropertyUtils.getPropertyValue(maintenanceForm, addLinePath);
319 EntityPhoneBo entityPhoneBo = (EntityPhoneBo) eventObject;
320 boolean isValidPhoneNumber=false;
321 if (LOG.isDebugEnabled()) {
322 LOG.debug("Validating the Phone Number Format - ##########, (###)###-#### , ###-###-#### , ### ###-#### , ### ### ####");
323 }
324 if (entityPhoneBo.getPhoneNumber().matches("\\d{10}")) isValidPhoneNumber=true;
325 else if (entityPhoneBo.getPhoneNumber().matches("\\d{3}[-]\\d{3}[-]\\d{4}")) isValidPhoneNumber=true;
326 else if (entityPhoneBo.getPhoneNumber().matches("\\d{3}[\\s]\\d{3}[-]\\d{4}")) isValidPhoneNumber=true;
327 else if (entityPhoneBo.getPhoneNumber().matches("\\d{3}[\\s]\\d{3}[\\s]\\d{4}")) isValidPhoneNumber=true;
328 else if (entityPhoneBo.getPhoneNumber().matches("\\(\\d{3}\\)[\\s]\\d{3}[-]\\d{4}")) isValidPhoneNumber=true;
329 else if (entityPhoneBo.getPhoneNumber().matches("^\\+(?:[0-9].?){6,14}[0-9]$")) isValidPhoneNumber=true;
330 else isValidPhoneNumber=false;
331 if(!isValidPhoneNumber){
332 GlobalVariables.getMessageMap().putErrorForSectionId("OlePatronDocument-Phone", OLEConstants.INVALID_PHONE_NUMBER_FORMAT);
333 }
334 if (isValidPhoneNumber) {
335 ModelAndView modelAndView = super.addLine(form, result, request, response);
336 return modelAndView;
337 } else {
338 return getUIFModelAndView(form);
339 }
340 }
341
342 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addEmailAddress")
343 public ModelAndView addEmailAddress(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
344 HttpServletRequest request, HttpServletResponse response) {
345 MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
346 MaintenanceDocument maintenanceDocument = (MaintenanceDocument) maintenanceForm.getDocument();
347 OlePatronDocument olePatronDocument = (OlePatronDocument) maintenanceDocument.getNewMaintainableObject().getDataObject();
348 String selectedCollectionPath = maintenanceForm.getActionParamaterValue(UifParameters.SELLECTED_COLLECTION_PATH);
349 CollectionGroup collectionGroup = maintenanceForm.getPostedView().getViewIndex().getCollectionGroupByPath(
350 selectedCollectionPath);
351 String addLinePath = collectionGroup.getAddLineBindingInfo().getBindingPath();
352 Object eventObject = ObjectPropertyUtils.getPropertyValue(maintenanceForm, addLinePath);
353 EntityEmailBo emailBo = (EntityEmailBo) eventObject;
354 return super.addLine(form, result, request, response);
355 }
356
357 @Override
358 public ModelAndView save(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result, HttpServletRequest request, HttpServletResponse response) throws Exception {
359 DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
360 LOG.debug(" Inside route method of patron maintenance controller ");
361 ModelAndView modelAndView;
362 MaintenanceDocumentForm mainForm = (MaintenanceDocumentForm) form;
363 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
364 String action = mainForm.getMaintenanceAction();
365 SimpleDateFormat fmt = new SimpleDateFormat(OLEConstants.OlePatron.PATRON_MAINTENANCE_DATE_FORMAT);
366 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
367 List<OleLoanDocument> oleLoanDocumentList = newOlePatronDocument.getOleLoanDocuments();
368 for (OleLoanDocument oleLoanDocument : oleLoanDocumentList) {
369 if (oleLoanDocument.isMissingPieceFlag()) {
370 if (oleLoanDocument.getMissingPiecesCount() == null || oleLoanDocument.getMissingPiecesCount() != null && oleLoanDocument.getMissingPiecesCount().equalsIgnoreCase("")) {
371 oleLoanDocument.setNoOfMissingPiecesEditable(true);
372 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_MISSING_PIECE_ITEM_INFO);
373 return getUIFModelAndView(form);
374 }
375 if (oleLoanDocument.getMissingPiecesCount() != null && !oleLoanDocument.getMissingPiecesCount().equalsIgnoreCase("")) {
376 int count = Integer.parseInt(oleLoanDocument.getMissingPiecesCount());
377 if (count < 1) {
378 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_MISSING_PIECE_ITEM_COUNT_GREATER, new String[]{"Missing Piece Count", "1"});
379 return getUIFModelAndView(form);
380 }
381 }
382 if (oleLoanDocument.getItemNumberOfPieces() == null || oleLoanDocument.getItemNumberOfPieces() != null && oleLoanDocument.getItemNumberOfPieces().toString().equalsIgnoreCase("")) {
383 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_ITEM_INFO);
384 oleLoanDocument.setNoOfPiecesEditable(true);
385 return getUIFModelAndView(form);
386 }
387 if(oleLoanDocument.getItemNumberOfPieces().intValue()<1){
388 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_MISSING_PIECE_ITEM_COUNT_GREATER, new String[]{"no of piece", "1"});
389 return getUIFModelAndView(form);
390 }
391 int missingPieceCount=Integer.parseInt(oleLoanDocument.getMissingPiecesCount());
392 int numberOfPieces=oleLoanDocument.getItemNumberOfPieces();
393 if(missingPieceCount>numberOfPieces){
394 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_MISSING_PIECE_ITEM_COUNT_LESSER, new String[]{"Missing Piece Count", "no of pieces"});
395 return getUIFModelAndView(form);
396 }
397 }
398
399 }
400 for (OleLoanDocument oleLoanDocument : oleLoanDocumentList) {
401 try {
402 String itemXmlContent = getLoanProcessor().getItemXML(oleLoanDocument.getItemUuid());
403 Item oleItem = getLoanProcessor().getItemPojo(itemXmlContent);
404 boolean isMissingPieceFlagEnabled=(oleItem != null && oleItem.isMissingPieceFlag())?true:false;
405 SimpleDateFormat simpleDateFormat = new SimpleDateFormat(OLEConstants.DAT_FORMAT_EFFECTIVE);
406 if(oleLoanDocument.isMissingPieceFlag() && !isMissingPieceFlagEnabled){
407 MissingPieceItemRecord missingPieceItemRecord = new MissingPieceItemRecord();
408 missingPieceItemRecord.setMissingPieceFlagNote(oleLoanDocument.getMissingPieceNote());
409 missingPieceItemRecord.setMissingPieceCount(oleLoanDocument.getMissingPiecesCount());
410 missingPieceItemRecord.setMissingPieceDate(simpleDateFormat.format(getDateTimeService().getCurrentDate()));
411 missingPieceItemRecord.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
412 missingPieceItemRecord.setPatronBarcode(newOlePatronDocument.getBarcode());
413 missingPieceItemRecord.setPatronId(newOlePatronDocument.getOlePatronId());
414 missingPieceItemRecord.setItemId(oleLoanDocument.getItemUuid());
415 if (CollectionUtils.isNotEmpty(oleItem.getMissingPieceItemRecordList())) {
416
417 oleItem.getMissingPieceItemRecordList().add(missingPieceItemRecord);
418 } else {
419 List<MissingPieceItemRecord> missingPieceItemRecords = new ArrayList<MissingPieceItemRecord>();
420 missingPieceItemRecords.add(missingPieceItemRecord);
421 oleItem.setMissingPieceItemRecordList(missingPieceItemRecords);
422
423 }
424 }else{
425 Map<String, String> map = new HashMap<>();
426 map.put("itemId", DocumentUniqueIDPrefix.getDocumentId(oleLoanDocument.getItemUuid()));
427 List<org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.MissingPieceItemRecord> missingPieceItemRecordList1 = (List<org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.MissingPieceItemRecord>) KRADServiceLocator.getBusinessObjectService()
428 .findMatchingOrderBy(org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.MissingPieceItemRecord.class, map, "missingPieceItemId", true);
429 List<MissingPieceItemRecord> missingPieceItemRecords = new ArrayList<>();
430 for (int index = 0; index < missingPieceItemRecordList1.size(); index++) {
431 MissingPieceItemRecord missingPieceItemRecord1 = new MissingPieceItemRecord();
432 if (index == missingPieceItemRecordList1.size() - 1) {
433
434
435
436
437
438
439
440 if(!oleLoanDocument.isMissingPieceFlag()){
441 oleLoanDocument.setMissingPieceNote(null);
442 }
443 DateFormat dateFormat = new SimpleDateFormat(OLEConstants.DAT_FORMAT_EFFECTIVE);
444 String missingPieceItemDate = dateFormat.format(getDateTimeService().getCurrentDate());
445 missingPieceItemRecord1.setMissingPieceDate(missingPieceItemDate);
446 missingPieceItemRecord1.setPatronBarcode(newOlePatronDocument.getBarcode());
447 missingPieceItemRecord1.setMissingPieceCount(oleLoanDocument.getMissingPiecesCount());
448 missingPieceItemRecord1.setPatronId(newOlePatronDocument.getOlePatronId());
449 missingPieceItemRecord1.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
450 missingPieceItemRecord1.setItemId(DocumentUniqueIDPrefix.getDocumentId(oleLoanDocument.getItemUuid()));
451 missingPieceItemRecord1.setMissingPieceFlagNote(oleLoanDocument.getMissingPieceNote());
452 missingPieceItemRecords.add(missingPieceItemRecord1);
453
454 } else {
455 if (missingPieceItemRecordList1.get(index).getMissingPieceDate() != null && !missingPieceItemRecordList1.get(index).getMissingPieceDate().toString().isEmpty()) {
456 SimpleDateFormat dateToSimpleDateFormat = new SimpleDateFormat(OLEConstants.DAT_FORMAT_EFFECTIVE);
457 Date missingPieceItemDate = null;
458 if(null != (missingPieceItemRecordList1.get(index).getMissingPieceDate())){
459 try {
460 missingPieceItemDate = new Date(missingPieceItemRecordList1.get(index).getMissingPieceDate().getTime());
461 } catch (org.kuali.ole.sys.exception.ParseException e) {
462 LOG.error("format string to Date " + e);
463 }
464 }
465 missingPieceItemRecord1.setMissingPieceDate(dateToSimpleDateFormat.format(missingPieceItemDate).toString());
466 }
467 missingPieceItemRecord1.setMissingPieceFlagNote(missingPieceItemRecordList1.get(index).getMissingPieceFlagNote());
468 missingPieceItemRecord1.setMissingPieceCount(missingPieceItemRecordList1.get(index).getMissingPieceCount());
469 missingPieceItemRecord1.setOperatorId(missingPieceItemRecordList1.get(index).getOperatorId());
470 missingPieceItemRecord1.setPatronId(missingPieceItemRecordList1.get(index).getPatronId());
471 missingPieceItemRecord1.setItemId(missingPieceItemRecordList1.get(index).getItemId());
472 missingPieceItemRecord1.setPatronBarcode(newOlePatronDocument.getBarcode());
473 missingPieceItemRecords.add(missingPieceItemRecord1);
474 }
475 }
476 oleItem.setMissingPieceItemRecordList(missingPieceItemRecords);
477
478 }
479
480 if (oleLoanDocument.isClaimsReturnedIndicator()) {
481 getLoanProcessor().updateClaimsReturnedHistory(oleItem,oleLoanDocument,newOlePatronDocument.getOlePatronId());
482 oleItem.setClaimsReturnedFlag(oleLoanDocument.isClaimsReturnedIndicator());
483 getOleDeliverRequestDocumentHelperService().cancelPendingRequestForClaimsReturnedItem(oleItem.getItemIdentifier());
484 oleItem.setClaimsReturnedNote(oleLoanDocument.getClaimsReturnNote());
485 oleItem.setClaimsReturnedFlagCreateDate(df.format(getDateTimeService().getCurrentDate()));
486 } else {
487 oleItem.setClaimsReturnedFlag(oleLoanDocument.isClaimsReturnedIndicator());
488 oleItem.setClaimsReturnedNote(null);
489 oleItem.setClaimsReturnedFlagCreateDate(null);
490 }
491 oleItem.setMissingPieceFlag(oleLoanDocument.isMissingPieceFlag());
492 oleItem.setMissingPieceFlagNote(oleLoanDocument.getMissingPieceNote());
493 if(oleLoanDocument.isItemDamagedStatus()){
494 getLoanProcessor().updateItemDamagedHistory(oleItem,oleLoanDocument,newOlePatronDocument.getOlePatronId());
495 oleItem.setItemDamagedStatus(oleLoanDocument.isItemDamagedStatus());
496 oleItem.setDamagedItemNote(oleLoanDocument.getItemDamagedNote());
497 } else {
498 oleItem.setItemDamagedStatus(oleLoanDocument.isItemDamagedStatus());
499 oleItem.setDamagedItemNote(null);
500 }
501 oleItem.setMissingPiecesCount(oleLoanDocument.getMissingPiecesCount());
502 if(oleLoanDocument.getItemNumberOfPieces()!=null&& !oleLoanDocument.getItemNumberOfPieces().toString().equalsIgnoreCase("")){
503 oleItem.setNumberOfPieces(oleLoanDocument.getItemNumberOfPieces().toString());
504 }
505 org.kuali.ole.docstore.common.document.Item itemXML = new ItemOleml();
506 ItemOlemlRecordProcessor itemOlemlRecordProcessor = new ItemOlemlRecordProcessor();
507 itemXML.setContent(itemOlemlRecordProcessor.toXML(oleItem));
508 itemXML.setCategory(OLEConstants.WORK_CATEGORY);
509 itemXML.setType(DocType.ITEM.getCode());
510 itemXML.setFormat(OLEConstants.OLEML_FORMAT);
511 itemXML.setId(oleLoanDocument.getItemUuid());
512 getDocstoreClientLocator().getDocstoreClient().updateItem(itemXML);
513 } catch (Exception e) {
514 throw new RuntimeException(e);
515 }
516 }
517 if(!olePatronHelperService.validatePatron(newOlePatronDocument)) {
518 return getUIFModelAndView(form);
519 }
520 if (!KRADConstants.MAINTENANCE_EDIT_ACTION.equals(action)) {
521 if (newOlePatronDocument.getOlePatronId() == null || newOlePatronDocument.getOlePatronId().isEmpty()) {
522 if (newOlePatronDocument.getActivationDate() != null && fmt.format(new Date(System.currentTimeMillis())).compareTo(fmt.format(newOlePatronDocument.getActivationDate())) > 0) {
523 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_ACTIVATION_DATE);
524
525 return getUIFModelAndView(mainForm);
526 }
527 }
528 } else {
529 Map<String, String> patronMap = new HashMap<String, String>();
530 patronMap.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId());
531 OlePatronDocument patronDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
532 SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
533 Date todayDate=getDateTimeService().getCurrentDate();
534 String format=simpleDateFormat.format(getDateTimeService().getCurrentDate());
535 try {
536 todayDate=simpleDateFormat.parse(format);
537 } catch (ParseException e) {
538 e.printStackTrace();
539 }
540 if(newOlePatronDocument.getActivationDate()!=null && newOlePatronDocument.getActivationDate().compareTo(todayDate)<0 && patronDocument!=null && patronDocument.getActivationDate()!=null && patronDocument.getActivationDate().compareTo(newOlePatronDocument.getActivationDate())>0){
541 if (!newOlePatronDocument.isPopupDialog()) {
542 newOlePatronDocument.setPopupDialog(true);
543 newOlePatronDocument.setUiMessageType("patron-message-info");
544 newOlePatronDocument.setPatronMessage(OLEConstants.OlePatron.ERROR_PATRON_NEW_PAST_DATE+"<br/>"+OLEConstants.PROCEED_MESSAGE);
545 return getUIFModelAndView(mainForm);
546 }
547 }
548 }
549
550 newOlePatronDocument.setPopupDialog(false);
551 newOlePatronDocument.setOleLoanDocuments(oleLoanDocumentList);
552 List<OleProxyPatronDocument> oleProxyPatronDocumentList = newOlePatronDocument.getOleProxyPatronDocuments();
553 List<OleProxyPatronDocument> proxyPatronDocumentList = new ArrayList<OleProxyPatronDocument>();
554 if (oleProxyPatronDocumentList.size() > 0) {
555 for (OleProxyPatronDocument oleProxyPatronDocument : oleProxyPatronDocumentList) {
556 Map<String, String> proxyMap = new HashMap<String, String>();
557 proxyMap.put(OLEConstants.OlePatron.PATRON_ID, oleProxyPatronDocument.getProxyPatronId());
558 OlePatronDocument tempDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, proxyMap);
559 if (tempDocument != null) {
560 oleProxyPatronDocument.setProxyPatronBarcode(tempDocument.getBarcode());
561 oleProxyPatronDocument.setProxyPatronFirstName(tempDocument.getEntity().getNames().get(0).getFirstName());
562 oleProxyPatronDocument.setProxyPatronLastName(tempDocument.getEntity().getNames().get(0).getLastName());
563 proxyPatronDocumentList.add(oleProxyPatronDocument);
564 }
565 }
566 newOlePatronDocument.setOleProxyPatronDocuments(proxyPatronDocumentList);
567 }
568
569 if (newOlePatronDocument.getOlePatronId() != null && !newOlePatronDocument.getOlePatronId().equalsIgnoreCase("")) {
570 Map<String, String> map = new HashMap<String, String>();
571 map.put(OLEConstants.OlePatron.PATRON_LOST_BARCODE_FLD, newOlePatronDocument.getBarcode());
572 map.put("active", "N");
573 List<OlePatronLostBarcode> olePatronLostBarcodes = (List<OlePatronLostBarcode>) KRADServiceLocator.getBusinessObjectService().findMatching(OlePatronLostBarcode.class, map);
574 if (olePatronLostBarcodes.size() > 0 && (!newOlePatronDocument.isSkipBarcodeValidation())) {
575 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.PATRON_DUPLICATE_BARCODE);
576 return getUIFModelAndView(mainForm);
577 }
578
579 boolean isBarcodeContainsInLostSection = false;
580 if(newOlePatronDocument.getLostBarcodes()!=null&& newOlePatronDocument.getBarcode()!=null){
581
582 for(OlePatronLostBarcode olePatronLostBarcode:olePatronLostBarcodes){
583 if(olePatronLostBarcode.getInvalidOrLostBarcodeNumber()!=null && olePatronLostBarcode.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(newOlePatronDocument.getBarcode())){
584 isBarcodeContainsInLostSection=true;
585 }
586 }
587 }
588
589 if (newOlePatronDocument.isBarcodeEditable()&& !newOlePatronDocument.isReinstated()) {
590 for (OlePatronLostBarcode olePatronLostBarcode : newOlePatronDocument.getLostBarcodes()) {
591 if (olePatronLostBarcode.getInvalidOrLostBarcodeNumber() != null && olePatronLostBarcode.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(newOlePatronDocument.getBarcode())) {
592 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.PATRON_BARCODE_BLOCK_MANUALLY,new String[]{newOlePatronDocument.getBarcode()});
593 newOlePatronDocument.setBarcode(null);
594 newOlePatronDocument.setBarcodeEditable(true);
595 newOlePatronDocument.setReinstated(false);
596 return getUIFModelAndView(mainForm);
597 }
598 }
599 }
600 if (!isBarcodeContainsInLostSection) {
601
602 Map<String, String> patronMap = new HashMap<String, String>();
603 patronMap.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId());
604 OlePatronDocument patronDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
605 if (patronDocument != null && patronDocument.getBarcode() != null && !(patronDocument.getBarcode().equalsIgnoreCase(""))) {
606 if (newOlePatronDocument.getLostBarcodes() == null) {
607 newOlePatronDocument.setLostBarcodes(new ArrayList<OlePatronLostBarcode>());
608 }
609 if (!patronDocument.getBarcode().equalsIgnoreCase(newOlePatronDocument.getBarcode()) && (!newOlePatronDocument.isBarcodeChanged())) {
610 if (patronDocument != null && patronDocument.getBarcode() != null) {
611 boolean isNeedToUpdateBarcode=false;
612 String originalBarcode=patronDocument.getBarcode();
613 for(OlePatronLostBarcode olePatronLostBarcode:newOlePatronDocument.getLostBarcodes()){
614 if(olePatronLostBarcode.getInvalidOrLostBarcodeNumber()!=null && olePatronLostBarcode.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(originalBarcode)){
615 isNeedToUpdateBarcode=true;
616 }
617 }
618 if (!isNeedToUpdateBarcode) {
619 OlePatronLostBarcode olePatronLostBarcode = new OlePatronLostBarcode();
620 olePatronLostBarcode.setInvalidOrLostBarcodeNumber(patronDocument.getBarcode());
621 olePatronLostBarcode.setInvalidOrLostBarcodeEffDate(new java.sql.Timestamp(getDateTimeService().getCurrentDate().getTime()));
622 olePatronLostBarcode.setRevertBarcode(true);
623 olePatronLostBarcode.setDescription("");
624 olePatronLostBarcode.setStatus("Lost");
625 newOlePatronDocument.getLostBarcodes().add(olePatronLostBarcode);
626 }
627 }
628
629 }
630 }
631 }
632 }
633
634 List<OleProxyPatronDocument> proxyPatron = newOlePatronDocument.getOleProxyPatronDocuments();
635 String patronId = "";
636 Date proxyActDate = null;
637 Date proxyExpDate = null;
638 if (proxyPatron.size() > 0) {
639 for (OleProxyPatronDocument proxy : proxyPatron) {
640 patronId = proxy.getProxyPatronId();
641 proxyActDate = proxy.getProxyPatronActivationDate();
642 proxyExpDate = proxy.getProxyPatronExpirationDate();
643 Map<String, String> patronMap = new HashMap<String, String>();
644 patronMap.put(OLEConstants.OlePatron.PATRON_ID, patronId);
645 OlePatronDocument patronDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
646 if (patronDocument != null) {
647 Date patronExpDate = patronDocument.getExpirationDate();
648 Date patronActDate = patronDocument.getActivationDate();
649 if (proxyActDate != null) {
650 if (patronActDate != null && fmt.format(patronActDate).compareTo(fmt.format(proxyActDate)) > 0) {
651 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REAL_PATRON_ACTIVATION_DATE);
652 return getUIFModelAndView(mainForm);
653 }
654 }
655 if (proxyExpDate != null) {
656 if (patronExpDate != null) {
657 if (fmt.format(proxyExpDate).compareTo(fmt.format(patronExpDate)) > 0) {
658 if(newOlePatronDocument.isExpirationFlag()){
659 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REAL_PATRON_EXPIRATION_DATE);
660 return getUIFModelAndView(mainForm);
661 }
662 }
663 }
664 }
665 }
666 boolean isBorrowerTypeActive = olePatronHelperService.isBorrowerTypeActive(newOlePatronDocument);
667 if (!isBorrowerTypeActive) {
668 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_BORROWER_TYPE_INACTIVE);
669 return getUIFModelAndView(mainForm);
670 }
671 if (patronId != null && newOlePatronDocument.getOlePatronId() != null && newOlePatronDocument.getOlePatronId().equals(patronId)) {
672 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PROXY_PATRON_ID);
673 return getUIFModelAndView(mainForm);
674 } else {
675 if (proxyExpDate != null) {
676 if (proxyActDate != null) {
677 if ((fmt.format(proxyActDate).compareTo(fmt.format(proxyExpDate)) >= 0)) {
678 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PROXY_PATRON_EXPIRATION_DATE);
679 return getUIFModelAndView(mainForm);
680 }
681 }
682 }
683 }
684 }
685 }
686 return super.save(form, result, request, response);
687 }
688
689
690
691
692
693
694
695 @Override
696 @RequestMapping(params = "methodToCall=route")
697 public ModelAndView route(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result,
698 HttpServletRequest request, HttpServletResponse response) {
699 DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
700 LOG.debug(" Inside route method of patron maintenance controller ");
701 ModelAndView modelAndView;
702 MaintenanceDocumentForm mainForm = (MaintenanceDocumentForm) form;
703 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
704 String action = mainForm.getMaintenanceAction();
705 SimpleDateFormat fmt = new SimpleDateFormat(OLEConstants.OlePatron.PATRON_MAINTENANCE_DATE_FORMAT);
706 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
707 List<OleLoanDocument> oleLoanDocumentList = newOlePatronDocument.getOleLoanDocuments();
708 for (OleLoanDocument oleLoanDocument : oleLoanDocumentList) {
709 if (oleLoanDocument.isLoanModified()) {
710 if (oleLoanDocument.isMissingPieceFlag()) {
711 if (oleLoanDocument.getMissingPiecesCount() == null || oleLoanDocument.getMissingPiecesCount() != null && oleLoanDocument.getMissingPiecesCount().equalsIgnoreCase("")) {
712 oleLoanDocument.setNoOfMissingPiecesEditable(true);
713 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_MISSING_PIECE_ITEM_INFO);
714 return getUIFModelAndView(form);
715 }
716 if (oleLoanDocument.getMissingPiecesCount() != null && !oleLoanDocument.getMissingPiecesCount().equalsIgnoreCase("")) {
717 int count = Integer.parseInt(oleLoanDocument.getMissingPiecesCount());
718 if (count < 1) {
719 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_MISSING_PIECE_ITEM_COUNT_GREATER, new String[]{"Missing Piece Count", "1"});
720 return getUIFModelAndView(form);
721 }
722 }
723 if (oleLoanDocument.getItemNumberOfPieces() == null || oleLoanDocument.getItemNumberOfPieces() != null && oleLoanDocument.getItemNumberOfPieces().toString().equalsIgnoreCase("")) {
724 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_ITEM_INFO);
725 oleLoanDocument.setNoOfPiecesEditable(true);
726 return getUIFModelAndView(form);
727 }
728 if (oleLoanDocument.getItemNumberOfPieces().intValue() < 1) {
729 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_MISSING_PIECE_ITEM_COUNT_GREATER, new String[]{"no of piece", "1"});
730 oleLoanDocument.setNoOfPiecesEditable(true);
731 oleLoanDocument.setNoOfMissingPiecesEditable(true);
732 return getUIFModelAndView(form);
733 }
734 int missingPieceCount = Integer.parseInt(oleLoanDocument.getMissingPiecesCount());
735 int numberOfPieces = oleLoanDocument.getItemNumberOfPieces();
736 if (missingPieceCount > numberOfPieces) {
737 GlobalVariables.getMessageMap().putErrorForSectionId(OLEConstants.OlePatron.PATRON_LOANED_ITEM_SECTION, OLEConstants.OlePatron.ERROR_PATRON_MISSING_PIECE_ITEM_COUNT_LESSER, new String[]{"Missing Piece Count", "no of pieces"});
738 oleLoanDocument.setNoOfPiecesEditable(true);
739 oleLoanDocument.setNoOfMissingPiecesEditable(true);
740 return getUIFModelAndView(form);
741 }
742 }
743 try {
744 String itemXmlContent = getLoanProcessor().getItemXML(oleLoanDocument.getItemUuid());
745 Item oleItem = getLoanProcessor().getItemPojo(itemXmlContent);
746 boolean isMissingPieceFlagEnabled=(oleItem != null && oleItem.isMissingPieceFlag())?true:false;
747 if (oleLoanDocument.isClaimsReturnedIndicator()) {
748 getLoanProcessor().updateClaimsReturnedHistory(oleItem,oleLoanDocument,newOlePatronDocument.getOlePatronId());
749 oleItem.setClaimsReturnedFlag(oleLoanDocument.isClaimsReturnedIndicator());
750 getOleDeliverRequestDocumentHelperService().cancelPendingRequestForClaimsReturnedItem(oleItem.getItemIdentifier());
751 oleItem.setClaimsReturnedNote(oleLoanDocument.getClaimsReturnNote());
752 oleItem.setClaimsReturnedFlagCreateDate(df.format(getDateTimeService().getCurrentDate()));
753 } else {
754 oleItem.setClaimsReturnedFlag(oleLoanDocument.isClaimsReturnedIndicator());
755 oleItem.setClaimsReturnedNote(null);
756 oleItem.setClaimsReturnedFlagCreateDate(null);
757 }
758 SimpleDateFormat simpleDateFormat = new SimpleDateFormat(OLEConstants.DAT_FORMAT_EFFECTIVE);
759 String parsedDate = simpleDateFormat.format((new Date()));
760 if(oleLoanDocument.isMissingPieceFlag() && !isMissingPieceFlagEnabled){
761 MissingPieceItemRecord missingPieceItemRecord = new MissingPieceItemRecord();
762 missingPieceItemRecord.setMissingPieceFlagNote(oleLoanDocument.getMissingPieceNote());
763 missingPieceItemRecord.setMissingPieceCount(oleLoanDocument.getMissingPiecesCount());
764 missingPieceItemRecord.setMissingPieceDate(parsedDate);
765 missingPieceItemRecord.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
766 missingPieceItemRecord.setPatronBarcode(newOlePatronDocument.getBarcode());
767 missingPieceItemRecord.setPatronId(newOlePatronDocument.getOlePatronId());
768 missingPieceItemRecord.setItemId(oleLoanDocument.getItemUuid());
769 if (CollectionUtils.isNotEmpty(oleItem.getMissingPieceItemRecordList())) {
770
771 oleItem.getMissingPieceItemRecordList().add(missingPieceItemRecord);
772 } else {
773 List<MissingPieceItemRecord> missingPieceItemRecords = new ArrayList<MissingPieceItemRecord>();
774 missingPieceItemRecords.add(missingPieceItemRecord);
775 oleItem.setMissingPieceItemRecordList(missingPieceItemRecords);
776 }
777 }else{
778 Map<String, String> map = new HashMap<>();
779 map.put("itemId", DocumentUniqueIDPrefix.getDocumentId(oleLoanDocument.getItemUuid()));
780 List<org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.MissingPieceItemRecord> missingPieceItemRecordList1 = (List<org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.MissingPieceItemRecord>) KRADServiceLocator.getBusinessObjectService()
781 .findMatchingOrderBy(org.kuali.ole.docstore.engine.service.storage.rdbms.pojo.MissingPieceItemRecord.class, map, "missingPieceItemId", true);
782 List<MissingPieceItemRecord> missingPieceItemRecords = new ArrayList<>();
783 for (int index = 0; index < missingPieceItemRecordList1.size(); index++) {
784 MissingPieceItemRecord missingPieceItemRecord1 = new MissingPieceItemRecord();
785 if (index == missingPieceItemRecordList1.size() - 1) {
786
787
788
789
790
791
792
793 if(!oleLoanDocument.isMissingPieceFlag()){
794 oleLoanDocument.setMissingPieceNote(null);
795 }
796 DateFormat dateFormat = new SimpleDateFormat(OLEConstants.DAT_FORMAT_EFFECTIVE);
797 String missingPieceItemDate = dateFormat.format((new Date()));
798 missingPieceItemRecord1.setMissingPieceDate(missingPieceItemDate);
799 missingPieceItemRecord1.setMissingPieceCount(oleLoanDocument.getMissingPiecesCount());
800 missingPieceItemRecord1.setPatronBarcode(newOlePatronDocument.getBarcode());
801 missingPieceItemRecord1.setPatronId(newOlePatronDocument.getOlePatronId());
802 missingPieceItemRecord1.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
803 missingPieceItemRecord1.setItemId(DocumentUniqueIDPrefix.getDocumentId(oleLoanDocument.getItemUuid()));
804 missingPieceItemRecord1.setMissingPieceFlagNote(oleLoanDocument.getMissingPieceNote());
805 missingPieceItemRecords.add(missingPieceItemRecord1);
806
807 } else {
808 if (missingPieceItemRecordList1.get(index).getMissingPieceDate() != null && !missingPieceItemRecordList1.get(index).getMissingPieceDate().toString().isEmpty()) {
809 SimpleDateFormat dateToSimpleDateFormat = new SimpleDateFormat(OLEConstants.DAT_FORMAT_EFFECTIVE);
810 Date missingPieceItemDate = null;
811 if(null != (missingPieceItemRecordList1.get(index).getMissingPieceDate())){
812 try {
813 missingPieceItemDate = new Date(missingPieceItemRecordList1.get(index).getMissingPieceDate().getTime());
814 } catch (org.kuali.ole.sys.exception.ParseException e) {
815 LOG.error("format string to Date " + e);
816 }
817 }
818 missingPieceItemRecord1.setMissingPieceDate(dateToSimpleDateFormat.format(missingPieceItemDate).toString());
819 }
820 missingPieceItemRecord1.setMissingPieceFlagNote(missingPieceItemRecordList1.get(index).getMissingPieceFlagNote());
821 missingPieceItemRecord1.setMissingPieceCount(missingPieceItemRecordList1.get(index).getMissingPieceCount());
822 missingPieceItemRecord1.setOperatorId(missingPieceItemRecordList1.get(index).getOperatorId());
823 missingPieceItemRecord1.setPatronBarcode(newOlePatronDocument.getBarcode());
824 missingPieceItemRecord1.setPatronId(missingPieceItemRecordList1.get(index).getPatronId());
825 missingPieceItemRecord1.setItemId(missingPieceItemRecordList1.get(index).getItemId());
826 missingPieceItemRecords.add(missingPieceItemRecord1);
827 }
828 }
829 oleItem.setMissingPieceItemRecordList(missingPieceItemRecords);
830
831 }
832 oleItem.setMissingPieceFlag(oleLoanDocument.isMissingPieceFlag());
833 oleItem.setMissingPieceFlagNote(oleLoanDocument.getMissingPieceNote());
834 if(oleLoanDocument.isItemDamagedStatus()){
835 getLoanProcessor().updateItemDamagedHistory(oleItem,oleLoanDocument,newOlePatronDocument.getOlePatronId());
836 oleItem.setItemDamagedStatus(oleLoanDocument.isItemDamagedStatus());
837 oleItem.setDamagedItemNote(oleLoanDocument.getItemDamagedNote());
838 } else {
839 oleItem.setItemDamagedStatus(oleLoanDocument.isItemDamagedStatus());
840 oleItem.setDamagedItemNote(null);
841 }
842 oleItem.setMissingPiecesCount(oleLoanDocument.getMissingPiecesCount());
843 if (oleLoanDocument.getItemNumberOfPieces() != null && !oleLoanDocument.getItemNumberOfPieces().toString().equalsIgnoreCase("")) {
844 oleItem.setNumberOfPieces(oleLoanDocument.getItemNumberOfPieces().toString());
845 }
846 org.kuali.ole.docstore.common.document.Item itemXML = new ItemOleml();
847 ItemOlemlRecordProcessor itemOlemlRecordProcessor = new ItemOlemlRecordProcessor();
848 itemXML.setContent(itemOlemlRecordProcessor.toXML(oleItem));
849 itemXML.setCategory(OLEConstants.WORK_CATEGORY);
850 itemXML.setType(DocType.ITEM.getCode());
851 itemXML.setFormat(OLEConstants.OLEML_FORMAT);
852 itemXML.setId(oleLoanDocument.getItemUuid());
853 getDocstoreClientLocator().getDocstoreClient().updateItem(itemXML);
854 } catch (Exception e) {
855 throw new RuntimeException(e);
856 }
857 }
858
859 }
860 if(!olePatronHelperService.validatePatron(newOlePatronDocument)) {
861 return getUIFModelAndView(form);
862 }
863 if (!KRADConstants.MAINTENANCE_EDIT_ACTION.equals(action)) {
864 if (newOlePatronDocument.getOlePatronId() == null || newOlePatronDocument.getOlePatronId().isEmpty()) {
865 if (newOlePatronDocument.getActivationDate() != null && fmt.format(new Date(System.currentTimeMillis())).compareTo(fmt.format(newOlePatronDocument.getActivationDate())) > 0) {
866 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_ACTIVATION_DATE);
867
868 return getUIFModelAndView(mainForm);
869 }
870 }
871 } else {
872 Map<String, String> patronMap = new HashMap<String, String>();
873 patronMap.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId());
874 OlePatronDocument patronDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
875 SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
876 Date todayDate=getDateTimeService().getCurrentDate();
877 String format=simpleDateFormat.format(getDateTimeService().getCurrentDate());
878 try {
879 todayDate=simpleDateFormat.parse(format);
880 } catch (ParseException e) {
881 e.printStackTrace();
882 }
883 if(newOlePatronDocument.getActivationDate()!=null && newOlePatronDocument.getActivationDate().compareTo(todayDate)<0 && patronDocument!=null && patronDocument.getActivationDate()!=null && patronDocument.getActivationDate().compareTo(newOlePatronDocument.getActivationDate())>0){
884 if (!newOlePatronDocument.isPopupDialog()) {
885 newOlePatronDocument.setPopupDialog(true);
886 newOlePatronDocument.setUiMessageType("patron-message-info");
887 newOlePatronDocument.setPatronMessage(OLEConstants.OlePatron.ERROR_PATRON_NEW_PAST_DATE+"<br/>"+OLEConstants.PROCEED_MESSAGE);
888 return getUIFModelAndView(mainForm);
889 }
890 }
891 }
892
893 newOlePatronDocument.setPopupDialog(false);
894 newOlePatronDocument.setOleLoanDocuments(oleLoanDocumentList);
895 List<OleProxyPatronDocument> oleProxyPatronDocumentList = newOlePatronDocument.getOleProxyPatronDocuments();
896 List<OleProxyPatronDocument> proxyPatronDocumentList = new ArrayList<OleProxyPatronDocument>();
897 if (oleProxyPatronDocumentList.size() > 0) {
898 for (OleProxyPatronDocument oleProxyPatronDocument : oleProxyPatronDocumentList) {
899 Map<String, String> proxyMap = new HashMap<String, String>();
900 proxyMap.put(OLEConstants.OlePatron.PATRON_ID, oleProxyPatronDocument.getProxyPatronId());
901 OlePatronDocument tempDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, proxyMap);
902 if (tempDocument != null) {
903 oleProxyPatronDocument.setProxyPatronBarcode(tempDocument.getBarcode());
904 oleProxyPatronDocument.setProxyPatronFirstName(tempDocument.getEntity().getNames().get(0).getFirstName());
905 oleProxyPatronDocument.setProxyPatronLastName(tempDocument.getEntity().getNames().get(0).getLastName());
906 proxyPatronDocumentList.add(oleProxyPatronDocument);
907 }
908 }
909 newOlePatronDocument.setOleProxyPatronDocuments(proxyPatronDocumentList);
910 }
911
912 if (newOlePatronDocument.getOlePatronId() != null && !newOlePatronDocument.getOlePatronId().equalsIgnoreCase("")) {
913
914 if (newOlePatronDocument.isBarcodeEditable()&& !newOlePatronDocument.isReinstated()) {
915 for (OlePatronLostBarcode olePatronLostBarcode : newOlePatronDocument.getLostBarcodes()) {
916 if (olePatronLostBarcode.getInvalidOrLostBarcodeNumber() != null && olePatronLostBarcode.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(newOlePatronDocument.getBarcode())) {
917 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.PATRON_BARCODE_BLOCK_MANUALLY,new String[]{newOlePatronDocument.getBarcode()});
918 newOlePatronDocument.setBarcode(null);
919 newOlePatronDocument.setBarcodeEditable(true);
920 newOlePatronDocument.setReinstated(false);
921 olePatronLostBarcode.setStatus(OLEConstants.OlePatron.NEWBARCODE_STATUS);
922 olePatronLostBarcode.setDescription(OLEConstants.OlePatron.NEWBARCODE_DESCRIPTION);
923 return getUIFModelAndView(mainForm);
924 }
925 }
926 }
927 Map<String, String> map = new HashMap<String, String>();
928 map.put(OLEConstants.OlePatron.PATRON_LOST_BARCODE_FLD, newOlePatronDocument.getBarcode());
929 map.put("active", "N");
930 List<OlePatronLostBarcode> olePatronLostBarcodes = (List<OlePatronLostBarcode>) KRADServiceLocator.getBusinessObjectService().findMatching(OlePatronLostBarcode.class, map);
931 if (olePatronLostBarcodes.size() > 0 && (!newOlePatronDocument.isSkipBarcodeValidation())) {
932 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.PATRON_DUPLICATE_BARCODE);
933 return getUIFModelAndView(mainForm);
934 }
935
936 boolean isBarcodeContainsInLostSection = false;
937 if(newOlePatronDocument.getLostBarcodes()!=null&& newOlePatronDocument.getBarcode()!=null){
938
939 for(OlePatronLostBarcode olePatronLostBarcode:olePatronLostBarcodes){
940 if(olePatronLostBarcode.getInvalidOrLostBarcodeNumber()!=null && olePatronLostBarcode.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(newOlePatronDocument.getBarcode())){
941 isBarcodeContainsInLostSection=true;
942 }
943 }
944 }
945 if (!isBarcodeContainsInLostSection) {
946
947 Map<String, String> patronMap = new HashMap<String, String>();
948 patronMap.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId());
949 OlePatronDocument patronDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
950 if (patronDocument != null && patronDocument.getBarcode() != null && !(patronDocument.getBarcode().equalsIgnoreCase(""))) {
951 if (newOlePatronDocument.getLostBarcodes() == null) {
952 newOlePatronDocument.setLostBarcodes(new ArrayList<OlePatronLostBarcode>());
953 }
954 if (!patronDocument.getBarcode().equalsIgnoreCase(newOlePatronDocument.getBarcode()) && (!newOlePatronDocument.isBarcodeChanged())) {
955 if (patronDocument != null && patronDocument.getBarcode() != null) {
956 boolean isNeedToUpdateBarcode=false;
957 String originalBarcode=patronDocument.getBarcode();
958 for(OlePatronLostBarcode olePatronLostBarcode:newOlePatronDocument.getLostBarcodes()){
959 if(olePatronLostBarcode.getInvalidOrLostBarcodeNumber()!=null && olePatronLostBarcode.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(originalBarcode)){
960 isNeedToUpdateBarcode=true;
961 }
962 }
963 if (!isNeedToUpdateBarcode) {
964 OlePatronLostBarcode olePatronLostBarcode = new OlePatronLostBarcode();
965 olePatronLostBarcode.setInvalidOrLostBarcodeNumber(patronDocument.getBarcode());
966 olePatronLostBarcode.setInvalidOrLostBarcodeEffDate(new java.sql.Timestamp(getDateTimeService().getCurrentDate().getTime()));
967 olePatronLostBarcode.setRevertBarcode(true);
968 olePatronLostBarcode.setDescription("");
969 olePatronLostBarcode.setStatus("Lost");
970 newOlePatronDocument.getLostBarcodes().add(olePatronLostBarcode);
971 }
972 }
973
974 }
975 }
976 }
977 }
978
979 List<OleProxyPatronDocument> proxyPatron = newOlePatronDocument.getOleProxyPatronDocuments();
980 String patronId = "";
981 Date proxyActDate = null;
982 Date proxyExpDate = null;
983 if (proxyPatron.size() > 0) {
984 for (OleProxyPatronDocument proxy : proxyPatron) {
985 patronId = proxy.getProxyPatronId();
986 proxyActDate = proxy.getProxyPatronActivationDate();
987 proxyExpDate = proxy.getProxyPatronExpirationDate();
988 Map<String, String> patronMap = new HashMap<String, String>();
989 patronMap.put(OLEConstants.OlePatron.PATRON_ID, patronId);
990 OlePatronDocument patronDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
991 if (patronDocument != null) {
992 Date patronExpDate = patronDocument.getExpirationDate();
993 Date patronActDate = patronDocument.getActivationDate();
994 if (proxyActDate != null) {
995 if (patronActDate != null && fmt.format(patronActDate).compareTo(fmt.format(proxyActDate)) > 0) {
996 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REAL_PATRON_ACTIVATION_DATE);
997 return getUIFModelAndView(mainForm);
998 }
999 }
1000 if (proxyExpDate != null) {
1001 if (patronExpDate != null) {
1002 if (fmt.format(proxyExpDate).compareTo(fmt.format(patronExpDate)) > 0) {
1003 if(newOlePatronDocument.isExpirationFlag()){
1004 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REAL_PATRON_EXPIRATION_DATE);
1005 return getUIFModelAndView(mainForm);
1006 }
1007 }
1008 }
1009 }
1010 }
1011
1012
1013
1014
1015
1016 boolean isBorrowerTypeActive = olePatronHelperService.isBorrowerTypeActive(newOlePatronDocument);
1017 if (!isBorrowerTypeActive) {
1018 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_BORROWER_TYPE_INACTIVE);
1019 return getUIFModelAndView(mainForm);
1020 }
1021 if (patronId != null && newOlePatronDocument.getOlePatronId() != null && newOlePatronDocument.getOlePatronId().equals(patronId)) {
1022 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PROXY_PATRON_ID);
1023 return getUIFModelAndView(mainForm);
1024 }
1025
1026
1027 else {
1028 if (proxyExpDate != null) {
1029 if (proxyActDate != null) {
1030 if ((fmt.format(proxyActDate).compareTo(fmt.format(proxyExpDate)) >= 0)) {
1031 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PROXY_PATRON_EXPIRATION_DATE);
1032 return getUIFModelAndView(mainForm);
1033 }
1034 }
1035
1036
1037
1038 }
1039 }
1040 }
1041 }
1042 if (newOlePatronDocument.isGeneralBlock() && (newOlePatronDocument.getGeneralBlockNotes() == null || newOlePatronDocument.getGeneralBlockNotes().equals(""))) {
1043 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_GENERAL_BLOCK_NOTES, OLEConstants.OlePatron.PATRON_GENERAL_BLOCK_NOTES);
1044 return getUIFModelAndView(mainForm);
1045 }
1046
1047
1048 else if ((newOlePatronDocument.getExpirationDate() != null && newOlePatronDocument.getActivationDate() != null && fmt.format(newOlePatronDocument.getActivationDate()).compareTo(fmt.format(newOlePatronDocument.getExpirationDate())) >= 0) || (newOlePatronDocument.getExpirationDate() != null && fmt.format(new Date(System.currentTimeMillis())).compareTo(fmt.format(newOlePatronDocument.getExpirationDate())) > 0)) {
1049 if(newOlePatronDocument.isExpirationFlag()){
1050 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_EXPIRATION_DATE);
1051 return getUIFModelAndView(mainForm);
1052 }
1053 } else if (newOlePatronDocument.getOlePatronId() != null) {
1054 Map<String, String> tempId = new HashMap<String, String>();
1055 tempId.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId());
1056 OlePatronDocument tempDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, tempId);
1057 if (tempDocument != null) {
1058 if (tempDocument.getEntity() != null) {
1059 if (newOlePatronDocument.getDeletedOleEntityAddressBo().size() > 0) {
1060 for(OleEntityAddressBo oleEntityAddressBo:newOlePatronDocument.getDeletedOleEntityAddressBo()){
1061 KRADServiceLocator.getBusinessObjectService().delete(oleEntityAddressBo.getOleAddressBo());
1062 KRADServiceLocator.getBusinessObjectService().delete(oleEntityAddressBo.getEntityAddressBo());
1063 }
1064 }
1065 Map<String, String> mapEntityId = new HashMap<String, String>();
1066 mapEntityId.put("entityId", newOlePatronDocument.getOlePatronId());
1067 List<EntityEmailBo> emailBoList = tempDocument.getEntity().getEntityTypeContactInfos().get(0).getEmailAddresses();
1068 if(newOlePatronDocument.getDeletedEmails().size()>0){
1069 KRADServiceLocator.getBusinessObjectService().delete(newOlePatronDocument.getDeletedEmails());
1070 }
1071 List<EntityNameBo> entityNameBos = tempDocument.getEntity().getNames();
1072 if (entityNameBos.size() > 0) {
1073 KRADServiceLocator.getBusinessObjectService().deleteMatching(EntityNameBo.class,mapEntityId);
1074 }
1075 if(newOlePatronDocument.getDeletedPhones().size()>0){
1076 KRADServiceLocator.getBusinessObjectService().delete(newOlePatronDocument.getDeletedPhones());
1077 }
1078 if(newOlePatronDocument.getDeletedNotes().size()>0){
1079 KRADServiceLocator.getBusinessObjectService().delete(newOlePatronDocument.getDeletedNotes());
1080 }
1081
1082 List<OlePatronLostBarcode> lostBarcodeList = tempDocument.getLostBarcodes();
1083 if (lostBarcodeList.size() > 0) {
1084 KRADServiceLocator.getBusinessObjectService().delete(lostBarcodeList);
1085 }
1086 if(newOlePatronDocument.getDeletedEmployments().size()>0){
1087 KRADServiceLocator.getBusinessObjectService().delete(newOlePatronDocument.getDeletedEmployments());
1088 }
1089 if(newOlePatronDocument.getDeletedPatronAffiliations().size()>0){
1090 for(OlePatronAffiliation olePatronAffiliation:newOlePatronDocument.getDeletedPatronAffiliations()){
1091 if(olePatronAffiliation.getEmployments()!=null && olePatronAffiliation.getEmployments().size()>0){
1092 KRADServiceLocator.getBusinessObjectService().delete(newOlePatronDocument.getDeletedOleProxyPatronDocuments());
1093 }
1094 Map<String,String> affiliationsMap=new HashMap<String,String>();
1095 affiliationsMap.put("id",olePatronAffiliation.getEntityAffiliationId());
1096 KRADServiceLocator.getBusinessObjectService().deleteMatching(EntityAffiliationBo.class,affiliationsMap);
1097
1098 }
1099 }
1100 if(newOlePatronDocument.getDeletedOleProxyPatronDocuments().size()>0){
1101 KRADServiceLocator.getBusinessObjectService().delete(newOlePatronDocument.getDeletedOleProxyPatronDocuments());
1102 }
1103 if(newOlePatronDocument.getDeletedOlePatronLocalIds().size()>0){
1104 KRADServiceLocator.getBusinessObjectService().delete(newOlePatronDocument.getDeletedOlePatronLocalIds());
1105 }
1106 }
1107 }
1108 }
1109 if (newOlePatronDocument.getLostBarcodes() != null) {
1110 for (OlePatronLostBarcode lostBarcodes : newOlePatronDocument.getLostBarcodes()) {
1111 if (lostBarcodes.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(newOlePatronDocument.getBarcode())) {
1112 lostBarcodes.setActive(true);
1113 }
1114 }
1115 }
1116 if (KRADConstants.MAINTENANCE_EDIT_ACTION.equals(action)) {
1117 newOlePatronDocument.setEntity(olePatronHelperService.editAndSaveEntityBo(newOlePatronDocument));
1118 Map<String, Object> criteria = new HashMap<String, Object>();
1119 criteria.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId());
1120 KRADServiceLocator.getBusinessObjectService().deleteMatching(OleAddressBo.class, criteria);
1121 prepareOleAddressForSave(newOlePatronDocument);
1122 }
1123 if (KRADConstants.MAINTENANCE_COPY_ACTION.equals(action) || KRADConstants.MAINTENANCE_NEW_ACTION.equals(action)) {
1124 newOlePatronDocument.setEntity(olePatronHelperService.copyAndSaveEntityBo(newOlePatronDocument));
1125 newOlePatronDocument.setOlePatronId(newOlePatronDocument.getEntity().getId());
1126 for (OleEntityAddressBo oleEntityAddressBo : newOlePatronDocument.getOleEntityAddressBo()) {
1127 if(oleEntityAddressBo.getOleAddressBo()!=null){
1128 oleEntityAddressBo.getOleAddressBo().setOleAddressId(null);
1129 }
1130 }
1131 prepareOleAddressForSave(newOlePatronDocument);
1132 }
1133
1134 if(StringUtils.isNotBlank(newOlePatronDocument.getOlePatronId())){
1135 Map<String,String> notesMap=new HashMap<String,String>();
1136 notesMap.put("olePatronId", newOlePatronDocument.getOlePatronId());
1137 List<OlePatronNotes> olePatronNotesList = (List<OlePatronNotes>) KRADServiceLocator.getBusinessObjectService().findMatching(OlePatronNotes.class,notesMap);
1138 if(CollectionUtils.isNotEmpty(olePatronNotesList)){
1139 Map<String,OlePatronNotes> patronNotesMap = new HashMap<>();
1140 for(OlePatronNotes olePatronNotes : olePatronNotesList){
1141 patronNotesMap.put(olePatronNotes.getPatronNoteId(),olePatronNotes);
1142 }
1143 if(CollectionUtils.isNotEmpty(newOlePatronDocument.getNotes())){
1144 for(OlePatronNotes olePatronNotes : newOlePatronDocument.getNotes()){
1145 if(patronNotesMap.containsKey(olePatronNotes.getPatronNoteId())){
1146 OlePatronNotes patronDbNote = patronNotesMap.get(olePatronNotes.getPatronNoteId());
1147 if(!patronDbNote.getPatronNoteTypeId().equals(olePatronNotes.getPatronNoteTypeId()) ||
1148 !patronDbNote.getPatronNoteText().equals(olePatronNotes.getPatronNoteText())){
1149 olePatronNotes.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
1150 olePatronNotes.setNoteCreatedOrUpdatedDate(new Timestamp(System.currentTimeMillis()));
1151 }
1152 }
1153 }
1154 }
1155 }
1156 }
1157
1158 ModelAndView model = null;
1159 try {
1160 model = super.route(mainForm, result, request, response);
1161 } catch (Exception e) {
1162 return model;
1163 }
1164 return model;
1165 }
1166
1167
1168 @RequestMapping(params = "methodToCall=lostBarcode")
1169 public ModelAndView lostBarcode(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result,
1170 HttpServletRequest request, HttpServletResponse response) {
1171
1172 LOG.debug(" Inside route method of patron maintenance controller ");
1173 ModelAndView modelAndView;
1174 MaintenanceDocumentForm mainForm = (MaintenanceDocumentForm) form;
1175 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1176 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1177 if (StringUtils.isBlank(newOlePatronDocument.getBarcode()) || StringUtils.isEmpty(newOlePatronDocument.getBarcode())) {
1178 newOlePatronDocument.setBarcodeEditable(true);
1179 GlobalVariables.getMessageMap().putError(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REQUIRED, new String[]{"Barcode"});
1180 return getUIFModelAndView(mainForm);
1181 }
1182 newOlePatronDocument.setReinstated(false);
1183 boolean isBarcodeExistInOLE = false;
1184 Map<String, String> patronMap = new HashMap<String, String>();
1185 patronMap.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId());
1186 OlePatronDocument patronDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
1187 if (newOlePatronDocument.getBarcode() != null && (!newOlePatronDocument.getBarcode().equalsIgnoreCase(""))) {
1188 Map<String, String> map = new HashMap<String, String>();
1189 map.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId());
1190 map.put("active", "N");
1191 List<OlePatronLostBarcode> olePatronLostBarcodes = (List<OlePatronLostBarcode>) KRADServiceLocator.getBusinessObjectService().findMatching(OlePatronLostBarcode.class, map);
1192 if (olePatronLostBarcodes.size() > 0 && (!newOlePatronDocument.isSkipBarcodeValidation())) {
1193 isBarcodeExistInOLE = true;
1194 }
1195 if (patronDocument != null && patronDocument.getBarcode() != null && patronDocument.getBarcode().equalsIgnoreCase(newOlePatronDocument.getBarcode())) {
1196 isBarcodeExistInOLE = true;
1197 }
1198 }
1199 if (LOG.isDebugEnabled()){
1200 LOG.debug("Allow the patron to add barcode "+isBarcodeExistInOLE);
1201 }
1202 if (!isBarcodeExistInOLE) {
1203
1204 newOlePatronDocument.setBarcodeEditable(true);
1205 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_BARCODE_EXIST_LOST_SECTION);
1206 return getUIFModelAndView(mainForm);
1207 }
1208 for(OlePatronLostBarcode olePatronLostBarcode:newOlePatronDocument.getLostBarcodes()){
1209
1210 if(olePatronLostBarcode.getInvalidOrLostBarcodeNumber()!=null && olePatronLostBarcode.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(newOlePatronDocument.getBarcode())){
1211 if (!(patronDocument != null && patronDocument.getBarcode().equalsIgnoreCase(newOlePatronDocument.getBarcode()))) {
1212 GlobalVariables.getMessageMap().putError(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REQUIRED, new String[]{"Barcode"});
1213 return getUIFModelAndView(mainForm);
1214 }
1215 }
1216 }
1217 if (isBarcodeExistInOLE) {
1218 if (!newOlePatronDocument.isInvalidateBarcode()) {
1219 if (StringUtils.isBlank(newOlePatronDocument.getBarcode()) || StringUtils.isEmpty(newOlePatronDocument.getBarcode())) {
1220 GlobalVariables.getMessageMap().putError(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REQUIRED, new String[]{"Barcode"});
1221 return getUIFModelAndView(mainForm);
1222 }
1223 newOlePatronDocument.setBarcodeEditable(true);
1224 newOlePatronDocument.setLostDescription("");
1225 newOlePatronDocument.setInvalidateBarcode(true);
1226 return getUIFModelAndView(mainForm);
1227 }
1228 boolean isBarcodeExist = false;
1229 newOlePatronDocument.setBarcodeChanged(true);
1230 newOlePatronDocument.setInvalidateBarcode(false);
1231 String lostBarcode = newOlePatronDocument.getBarcode();
1232 OlePatronLostBarcode olePatronLostBarcode = new OlePatronLostBarcode();
1233 olePatronLostBarcode.setInvalidOrLostBarcodeNumber(lostBarcode);
1234 olePatronLostBarcode.setInvalidOrLostBarcodeEffDate(new java.sql.Timestamp(getDateTimeService().getCurrentDate().getTime()));
1235 olePatronLostBarcode.setRevertBarcode(true);
1236 if(StringUtils.isBlank(newOlePatronDocument.getLostOperatorId())) {
1237 olePatronLostBarcode.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
1238 }else {
1239 olePatronLostBarcode.setOperatorId(newOlePatronDocument.getLostOperatorId());
1240 }
1241 olePatronLostBarcode.setDescription(newOlePatronDocument.getLostDescription());
1242 olePatronLostBarcode.setStatus(newOlePatronDocument.getLostStatus());
1243
1244
1245
1246
1247
1248
1249
1250 List<OlePatronLostBarcode> lostBarcodes = newOlePatronDocument.getLostBarcodes();
1251 List<OlePatronLostBarcode> lostBarcodeList = new ArrayList<OlePatronLostBarcode>();
1252 if (!isBarcodeExist) {
1253 lostBarcodeList.add(olePatronLostBarcode);
1254 if (lostBarcodes.size() > 0) {
1255 for (OlePatronLostBarcode lostPatronBarcode : lostBarcodes) {
1256 lostPatronBarcode.setRevertBarcode(false);
1257 lostBarcodeList.add(lostPatronBarcode);
1258 }
1259 }
1260 newOlePatronDocument.setLostBarcodes(lostBarcodeList);
1261 }
1262 newOlePatronDocument.setReinstated(false);
1263 newOlePatronDocument.setBarcode(null);
1264 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ENTER_PATRON_BARCODE);
1265 }
1266 return getUIFModelAndView(mainForm);
1267 }
1268
1269 @RequestMapping(params = "methodToCall=reinstateBarcode")
1270 public ModelAndView reinstateBarcode(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result,
1271 HttpServletRequest request, HttpServletResponse response) {
1272
1273 LOG.debug(" Inside route method of patron maintenance controller ");
1274 ModelAndView modelAndView;
1275 MaintenanceDocumentForm mainForm = (MaintenanceDocumentForm) form;
1276 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1277 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1278 String oldBarcode=newOlePatronDocument.getBarcode();
1279 if (!newOlePatronDocument.isReinstateBarcode()) {
1280 newOlePatronDocument.setReinstateBarcode(true);
1281 if (oldBarcode != null && !oldBarcode.equalsIgnoreCase("")) {
1282 newOlePatronDocument.setBarcodeEditable(false);
1283 } else {
1284 newOlePatronDocument.setBarcodeEditable(true);
1285 }
1286 return getUIFModelAndView(mainForm);
1287 }
1288
1289
1290 boolean isBarcodeExistInOLE=false;
1291
1292 if (oldBarcode != null && !oldBarcode.equalsIgnoreCase("")) {
1293 Map<String, String> map = new HashMap<String, String>();
1294 map.put(OLEConstants.OlePatron.PATRON_LOST_BARCODE_FLD, newOlePatronDocument.getBarcode());
1295 List<OlePatronLostBarcode> olePatronLostBarcodes = (List<OlePatronLostBarcode>) KRADServiceLocator.getBusinessObjectService().findMatching(OlePatronLostBarcode.class, map);
1296 map.clear();
1297 map.put("barcode",oldBarcode);
1298 List<OlePatronDocument> patronDocuments = (List<OlePatronDocument>) KRADServiceLocator.getBusinessObjectService().findMatching(OlePatronDocument.class, map);
1299 if (olePatronLostBarcodes.size() > 0 || patronDocuments.size()>0) {
1300 isBarcodeExistInOLE=true;
1301 }
1302 if(!isBarcodeExistInOLE){
1303 GlobalVariables.getMessageMap().putError(KRADConstants.GLOBAL_ERRORS,OLEConstants.OlePatron.PATRON_BARCODE_DOES_NOT_EXIST_REINSTATE,new String[]{oldBarcode});
1304 }
1305 }
1306 OlePatronLostBarcode olePatronLostBarcodeHistory = new OlePatronLostBarcode();
1307 for (OlePatronLostBarcode olePatronLostBarcode : newOlePatronDocument.getLostBarcodes()) {
1308 if (olePatronLostBarcode.isActive()) {
1309 newOlePatronDocument.setBarcode(olePatronLostBarcode.getInvalidOrLostBarcodeNumber());
1310 olePatronLostBarcodeHistory.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
1311 olePatronLostBarcodeHistory.setInvalidOrLostBarcodeNumber(newOlePatronDocument.getBarcode());
1312 olePatronLostBarcodeHistory.setInvalidOrLostBarcodeEffDate(new java.sql.Timestamp(getDateTimeService().getCurrentDate().getTime()));
1313 olePatronLostBarcodeHistory.setRevertBarcode(true);
1314 olePatronLostBarcodeHistory.setDescription(newOlePatronDocument.getLostDescription());
1315 olePatronLostBarcodeHistory.setStatus(newOlePatronDocument.getLostStatus());
1316 }
1317
1318 }
1319 newOlePatronDocument.getLostBarcodes().add(olePatronLostBarcodeHistory);
1320
1321 OlePatronLostBarcode invalidBarcode = new OlePatronLostBarcode();
1322 invalidBarcode.setInvalidOrLostBarcodeNumber(oldBarcode);
1323 invalidBarcode.setInvalidOrLostBarcodeEffDate(new java.sql.Timestamp(getDateTimeService().getCurrentDate().getTime()));
1324 invalidBarcode.setDescription(OLEConstants.OlePatron.NEWBARCODE_DESCRIPTION);
1325 invalidBarcode.setStatus(OLEConstants.OlePatron.NEWBARCODE_STATUS);
1326 invalidBarcode.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
1327 newOlePatronDocument.getLostBarcodes().add(invalidBarcode);
1328
1329
1330
1331
1332
1333
1334 boolean isOldBarcodeExist=false;
1335 for (OlePatronLostBarcode olePatronLostBarcode : newOlePatronDocument.getLostBarcodes()) {
1336 if (olePatronLostBarcode.getInvalidOrLostBarcodeNumber().equalsIgnoreCase(oldBarcode)) {
1337 isOldBarcodeExist=true;
1338 }
1339 }
1340 if (oldBarcode != null && !oldBarcode.equalsIgnoreCase("")) {
1341 if (!isOldBarcodeExist && isBarcodeExistInOLE) {
1342 OlePatronLostBarcode olePatronLostBarcode = new OlePatronLostBarcode();
1343 olePatronLostBarcode.setInvalidOrLostBarcodeNumber(oldBarcode);
1344 olePatronLostBarcode.setInvalidOrLostBarcodeEffDate(new java.sql.Timestamp(getDateTimeService().getCurrentDate().getTime()));
1345 olePatronLostBarcode.setRevertBarcode(true);
1346 olePatronLostBarcode.setDescription(OLEConstants.OlePatron.NEWBARCODE_DESCRIPTION);
1347 olePatronLostBarcode.setStatus(OLEConstants.OlePatron.NEWBARCODE_STATUS);
1348
1349 olePatronLostBarcode.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
1350 newOlePatronDocument.getLostBarcodes().add(olePatronLostBarcode);
1351 }
1352 }
1353 newOlePatronDocument.setBarcodeEditable(false);
1354 newOlePatronDocument.setBarcodeChanged(true);
1355 newOlePatronDocument.setReinstated(true);
1356 newOlePatronDocument.setSkipBarcodeValidation(true);
1357 newOlePatronDocument.setReinstateBarcode(false);
1358 return getUIFModelAndView(mainForm);
1359 }
1360
1361 @RequestMapping(params = "methodToCall=refreshInvalidOrLostBarcodeSection")
1362 public ModelAndView refreshInvalidOrLostBarcodeSection(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result,
1363 HttpServletRequest request, HttpServletResponse response) {
1364
1365 LOG.debug(" Inside route method of patron maintenance controller ");
1366 ModelAndView modelAndView;
1367 MaintenanceDocumentForm mainForm = (MaintenanceDocumentForm) form;
1368 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1369 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1370 for (OlePatronLostBarcode lostBarcode : newOlePatronDocument.getLostBarcodes()) {
1371 if (lostBarcode.getId() != null) {
1372 Map<String, String> map = new HashMap<String, String>();
1373 map.put(OLEConstants.OlePatron.PATRON_ID, lostBarcode.getId());
1374 OlePatronLostBarcode olePatronLostBarcode = (OlePatronLostBarcode) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronLostBarcode.class, map);
1375 if (olePatronLostBarcode != null) {
1376 lostBarcode.setActive(olePatronLostBarcode.isActive());
1377 } else {
1378 lostBarcode.setActive(false);
1379 }
1380 }
1381 if(lostBarcode.getId() == null) {
1382 lostBarcode.setActive(false);
1383 }
1384 }
1385 return navigate(form, result, request, response);
1386 }
1387
1388 @RequestMapping(params = "methodToCall=uploadImage")
1389 public ModelAndView uploadImage(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result,
1390 HttpServletRequest request, HttpServletResponse response) {
1391 ModelAndView modelAndView;
1392 MaintenanceDocumentForm mainForm = (MaintenanceDocumentForm) form;
1393 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1394 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1395 MultipartFile multipartFile = mainForm.getAttachmentFile();
1396 if (multipartFile == null) {
1397 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_PHOTOGRAPH_WITHOUT_FILE);
1398 return getUIFModelAndView(mainForm);
1399 }
1400 String fileName = multipartFile.getOriginalFilename();
1401 if (validateFile(multipartFile.getOriginalFilename())) {
1402 try {
1403 byte[] fileContent = multipartFile.getBytes();
1404 BufferedImage patronImage = ImageIO.read(new ByteArrayInputStream(fileContent));
1405 if (patronImage.getWidth() >= 100 || patronImage.getHeight() >= 100) {
1406 BufferedImage resizedImage = new BufferedImage(100, 100, 1);
1407 Graphics2D g = resizedImage.createGraphics();
1408 g.drawImage(patronImage, 0, 0, 100, 100, null);
1409 g.dispose();
1410 ByteArrayOutputStream baos = new ByteArrayOutputStream();
1411 ImageIO.write(resizedImage, "jpg", baos);
1412 byte[] res = baos.toByteArray();
1413 imageInByte = baos.toByteArray();
1414 newOlePatronDocument.setPatronPhotograph(res);
1415 } else {
1416 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_PHOTOGRAPH_SIZE);
1417 return getUIFModelAndView(mainForm);
1418 }
1419 } catch (Exception ex) {
1420 LOG.error("Exception while uploading image", ex);
1421 }
1422 } else if (fileName != null && fileName.isEmpty()) {
1423 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_PHOTOGRAPH_WITHOUT_FILE);
1424 return getUIFModelAndView(mainForm);
1425 } else {
1426 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_PHOTOGRAPH_FORMAT);
1427 return getUIFModelAndView(mainForm);
1428 }
1429
1430 return getUIFModelAndView(mainForm);
1431 }
1432
1433 @RequestMapping(params = "methodToCall=deleteImage")
1434 public ModelAndView deleteImage(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result,
1435 HttpServletRequest request, HttpServletResponse response) {
1436 MaintenanceDocumentForm mainForm = (MaintenanceDocumentForm) form;
1437 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1438 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1439 newOlePatronDocument.setPatronPhotograph(null);
1440 newOlePatronDocument.setDeleteImageFlag(true);
1441 return getUIFModelAndView(mainForm);
1442 }
1443
1444
1445
1446
1447
1448
1449
1450 public boolean validateFile(String inputFile) {
1451 return (inputFile.contains(".jpg") || inputFile.contains(".png") || inputFile.contains(".jpeg") || inputFile.contains(".gif") ? true : false);
1452 }
1453
1454 @RequestMapping(params = "methodToCall=getImage")
1455 public ModelAndView getImage(@ModelAttribute("KualiForm") MaintenanceDocumentForm form, BindingResult result,
1456 HttpServletRequest request, HttpServletResponse response) {
1457 try {
1458 String inquiry = "false";
1459 if (request.getParameter("patronInquiryFlag") != null) {
1460 inquiry = (String) request.getParameter("patronInquiryFlag");
1461 }
1462 String deleteImageFlag = (String)request.getParameter("deleteImageFlag");
1463 if (inquiry.equalsIgnoreCase("false")) {
1464 String patronId = request.getParameter(OLEConstants.OlePatron.PATRON_ID);
1465 if (patronId != null && !patronId.equals("")) {
1466 Map patronMap = new HashMap();
1467 patronMap.put(OLEConstants.OlePatron.PATRON_ID, patronId);
1468 OlePatronDocument olePatronDocument = KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
1469 byte[] patronPhoto = olePatronDocument.getPatronPhotograph();
1470 if (patronPhoto != null && deleteImageFlag.equals("false")) {
1471 if (imageInByte == null || !patronPhoto.equals(imageInByte)) {
1472 response.setContentType("image/jpg");
1473 response.getOutputStream().write(patronPhoto);
1474 } else {
1475 response.setContentType("image/jpg");
1476 response.getOutputStream().write(imageInByte);
1477 }
1478 } else {
1479 response.setContentType("image/jpg");
1480 response.getOutputStream().write(imageInByte);
1481 }
1482 } else {
1483 if (imageInByte != null) {
1484 response.setContentType("image/jpg");
1485 response.getOutputStream().write(imageInByte);
1486 }
1487 }
1488 } else {
1489
1490 Map patronMap = new HashMap();
1491 String patronId = request.getParameter(OLEConstants.OlePatron.PATRON_ID);
1492 if (patronId != null && !patronId.equals("")) {
1493 patronMap.put(OLEConstants.OlePatron.PATRON_ID, patronId);
1494 OlePatronDocument olePatronDocument = KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
1495 olePatronDocument.setDeleteImageFlag(false);
1496 byte[] patronPhoto = olePatronDocument.getPatronPhotograph();
1497 if (patronPhoto != null) {
1498 response.setContentType("image/jpg");
1499 response.getOutputStream().write(patronPhoto);
1500 }
1501 }
1502 }
1503
1504 } catch (Exception ex) {
1505 LOG.error("Exception while getting image", ex);
1506 }
1507 return null;
1508 }
1509
1510 @RequestMapping(params = "methodToCall=getImageForLoan")
1511 public ModelAndView getImageForLoan(@ModelAttribute("KualiForm") MaintenanceDocumentForm form, BindingResult result,
1512 HttpServletRequest request, HttpServletResponse response) {
1513 try {
1514 String patronId = request.getParameter(OLEConstants.OlePatron.PATRON_ID);
1515 if (patronId != null && !patronId.equals("")) {
1516 Map patronMap = new HashMap();
1517 patronMap.put(OLEConstants.OlePatron.PATRON_ID, patronId);
1518 OlePatronDocument olePatronDocument = KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
1519 byte[] patronPhoto = olePatronDocument.getPatronPhotograph();
1520 if (patronPhoto != null) {
1521 response.setContentType("image/jpg");
1522 response.getOutputStream().write(patronPhoto);
1523 }
1524 }
1525 } catch (Exception ex) {
1526 LOG.error("Exception while getting image for loan", ex);
1527 }
1528 return null;
1529 }
1530
1531 @RequestMapping(params = "methodToCall=refreshProgGroup")
1532 public ModelAndView refreshProgGroup(@ModelAttribute("KualiForm") MaintenanceDocumentForm form, BindingResult result,
1533 HttpServletRequest request, HttpServletResponse response) throws Exception {
1534 ModelAndView modelAndView;
1535 MaintenanceDocumentForm mainForm = (MaintenanceDocumentForm) form;
1536 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1537 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1538 if (newOlePatronDocument.getOleLoanDocuments() != null) {
1539 for (OleLoanDocument loanDocument : newOlePatronDocument.getOleLoanDocuments()) {
1540 if(loanDocument.isMissingPieceFlag() && loanDocument.getMissingPiecesCount()==null || (loanDocument.getMissingPiecesCount()!=null && loanDocument.getMissingPiecesCount().equalsIgnoreCase(""))){
1541 loanDocument.setNoOfMissingPiecesEditable(true);
1542 } else {
1543 loanDocument.setNoOfMissingPiecesEditable(false);
1544 }
1545
1546 if(loanDocument.isMissingPieceFlag() && loanDocument.getItemNumberOfPieces()==null || (loanDocument.getItemNumberOfPieces()!=null && loanDocument.getItemNumberOfPieces().toString().equalsIgnoreCase(""))){
1547 loanDocument.setNoOfPiecesEditable(true);
1548 } else {
1549 loanDocument.setNoOfPiecesEditable(false);
1550 }
1551 }
1552 }
1553
1554 return getUIFModelAndView(form);
1555 }
1556
1557
1558
1559
1560
1561
1562 private LoanProcessor getLoanProcessor() {
1563 if (loanProcessor == null) {
1564 loanProcessor = new LoanProcessor();
1565 }
1566 return loanProcessor;
1567 }
1568
1569 private void prepareOleAddressForSave(OlePatronDocument newOlePatronDocument) {
1570 if (newOlePatronDocument.getOleEntityAddressBo() != null) {
1571 newOlePatronDocument.getOleAddresses().clear();
1572 int i=0;
1573 for (OleEntityAddressBo oleEntityAddressBo : newOlePatronDocument.getOleEntityAddressBo()) {
1574 if (oleEntityAddressBo.getEntityAddressBo().getId() == null) {
1575 if (newOlePatronDocument.getEntity() != null && newOlePatronDocument.getEntity().getEntityTypeContactInfos() != null && newOlePatronDocument.getEntity().getEntityTypeContactInfos().size() > 0) {
1576 EntityTypeContactInfoBo entityTypeContactInfo = (EntityTypeContactInfoBo) newOlePatronDocument.getEntity().getEntityTypeContactInfos().get(0);
1577 if (entityTypeContactInfo.getAddresses() != null && entityTypeContactInfo.getAddresses().size() > 0 && entityTypeContactInfo.getAddresses().size()>i) {
1578 if(oleEntityAddressBo.getEntityAddressBo()!=null){
1579 entityTypeContactInfo.getAddresses().get(i).setDefaultValue(oleEntityAddressBo.getEntityAddressBo().isDefaultValue());
1580 entityTypeContactInfo.getAddresses().get(i).setActive(oleEntityAddressBo.getEntityAddressBo().isActive());
1581 }
1582 oleEntityAddressBo.setEntityAddressBo(entityTypeContactInfo.getAddresses().get(i));
1583 }
1584 }
1585 }
1586 i++;
1587 }
1588 for (OleEntityAddressBo oleEntityAddressBo : newOlePatronDocument.getOleEntityAddressBo()) {
1589 if (oleEntityAddressBo.getEntityAddressBo() != null && oleEntityAddressBo.getEntityAddressBo().getId() != null) {
1590
1591 oleEntityAddressBo.getOleAddressBo().setOleAddressId(KRADServiceLocator.getSequenceAccessorService().getNextAvailableSequenceNumber("OLE_DLVR_ADD_S").toString());
1592
1593 oleEntityAddressBo.getOleAddressBo().setId(oleEntityAddressBo.getEntityAddressBo().getId());
1594 oleEntityAddressBo.getOleAddressBo().setOlePatronId(newOlePatronDocument.getOlePatronId());
1595 oleEntityAddressBo.getOleAddressBo().setVersionNumber(null);
1596 oleEntityAddressBo.getOleAddressBo().setObjectId(null);
1597 oleEntityAddressBo.getOleAddressBo().setAddressSource(oleEntityAddressBo.getOleAddressBo().getAddressSource());
1598 oleEntityAddressBo.getOleAddressBo().setAddressValidFrom(oleEntityAddressBo.getOleAddressBo().getAddressValidFrom());
1599 oleEntityAddressBo.getOleAddressBo().setAddressValidTo(oleEntityAddressBo.getOleAddressBo().getAddressValidTo());
1600 oleEntityAddressBo.getOleAddressBo().setAddressVerified(oleEntityAddressBo.getOleAddressBo().isAddressVerified());
1601 }
1602 OleAddressBo oleAddressBo = (OleAddressBo) ObjectUtils.deepCopy(oleEntityAddressBo.getOleAddressBo());
1603 EntityAddressBo entityAddressBo = (EntityAddressBo) ObjectUtils.deepCopy(oleEntityAddressBo.getEntityAddressBo());
1604 oleEntityAddressBo.getOleAddressBo().setEntityAddress(entityAddressBo);
1605 newOlePatronDocument.getOleAddresses().add(oleAddressBo);
1606 }
1607 }
1608 }
1609
1610 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deleteAddress")
1611 public ModelAndView deleteAddress(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1612 HttpServletRequest request, HttpServletResponse response) {
1613 LOG.debug("Initialized addLine method");
1614 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1615 String selectedLineIndex = form.getActionParamaterValue(UifParameters.SELECTED_LINE_INDEX);
1616 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1617 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1618 newOlePatronDocument.getDeletedOleEntityAddressBo().add(newOlePatronDocument.getOleEntityAddressBo().get(Integer.parseInt(selectedLineIndex)));
1619 return deleteLine(uifForm, result, request, response);
1620 }
1621
1622 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deletePhoneNumber")
1623 public ModelAndView deletePhoneNumber(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1624 HttpServletRequest request, HttpServletResponse response) {
1625 LOG.debug("Initialized addLine method");
1626 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1627 String selectedLineIndex = form.getActionParamaterValue(UifParameters.SELECTED_LINE_INDEX);
1628 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1629 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1630 newOlePatronDocument.getDeletedPhones().add(newOlePatronDocument.getPhones().get(Integer.parseInt(selectedLineIndex)));
1631 return deleteLine(uifForm, result, request, response);
1632
1633 }
1634
1635 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deleteEmailAddress")
1636 public ModelAndView deleteEmailAddress(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1637 HttpServletRequest request, HttpServletResponse response) {
1638 LOG.debug("Initialized addLine method");
1639 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1640 String selectedLineIndex = form.getActionParamaterValue(UifParameters.SELECTED_LINE_INDEX);
1641 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1642 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1643 newOlePatronDocument.getDeletedEmails().add(newOlePatronDocument.getEmails().get(Integer.parseInt(selectedLineIndex)));
1644 return deleteLine(uifForm, result, request, response);
1645
1646 }
1647
1648 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deleteProxyPatron")
1649 public ModelAndView deleteProxyPatron(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1650 HttpServletRequest request, HttpServletResponse response) {
1651 LOG.debug("Initialized addLine method");
1652 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1653 String selectedLineIndex = form.getActionParamaterValue(UifParameters.SELECTED_LINE_INDEX);
1654 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1655 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1656 newOlePatronDocument.getDeletedOleProxyPatronDocuments().add(newOlePatronDocument.getOleProxyPatronDocuments().get(Integer.parseInt(selectedLineIndex)));
1657 return deleteLine(uifForm, result, request, response);
1658
1659 }
1660
1661 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deleteNotes")
1662 public ModelAndView deleteNotes(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1663 HttpServletRequest request, HttpServletResponse response) {
1664 LOG.debug("Initialized addLine method");
1665 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1666 String selectedLineIndex = form.getActionParamaterValue(UifParameters.SELECTED_LINE_INDEX);
1667 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1668 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1669 newOlePatronDocument.getDeletedNotes().add(newOlePatronDocument.getNotes().get(Integer.parseInt(selectedLineIndex)));
1670 return deleteLine(uifForm, result, request, response);
1671
1672 }
1673
1674 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deleteOlePatronLocalIds")
1675 public ModelAndView deleteOlePatronLocalIds(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1676 HttpServletRequest request, HttpServletResponse response) {
1677 LOG.debug("Initialized addLine method");
1678 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1679 String selectedLineIndex = form.getActionParamaterValue(UifParameters.SELECTED_LINE_INDEX);
1680 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1681 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1682 newOlePatronDocument.getDeletedOlePatronLocalIds().add(newOlePatronDocument.getOlePatronLocalIds().get(Integer.parseInt(selectedLineIndex)));
1683 return deleteLine(uifForm, result, request, response);
1684
1685 }
1686
1687
1688
1689 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deletePatronAffiliations")
1690 public ModelAndView deletePatronAffiliations(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1691 HttpServletRequest request, HttpServletResponse response) {
1692 LOG.debug("Initialized addLine method");
1693 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1694 String selectedLineIndex = form.getActionParamaterValue(UifParameters.SELECTED_LINE_INDEX);
1695 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1696 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1697 newOlePatronDocument.getDeletedPatronAffiliations().add(newOlePatronDocument.getPatronAffiliations().get(Integer.parseInt(selectedLineIndex)));
1698 newOlePatronDocument.getDeletedEmployments().addAll(newOlePatronDocument.getPatronAffiliations().get(Integer.parseInt(selectedLineIndex)).getEmployments());
1699
1700 return deleteLine(uifForm, result, request, response);
1701 }
1702
1703 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deleteEmploymentBo")
1704 public ModelAndView deleteEmploymentBo(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1705 HttpServletRequest request, HttpServletResponse response) {
1706 LOG.debug("Initialized addLine method");
1707 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1708 Map<String,String> actionParameters = form.getActionParameters();
1709 String subCollectionIndex = actionParameters.get(UifParameters.SELECTED_LINE_INDEX);
1710 String mainCollectionIndex= StringUtils.substringBefore(StringUtils.substringAfter(actionParameters.get(UifParameters.SELLECTED_COLLECTION_PATH),"["),"]");
1711 MaintenanceDocument document = (MaintenanceDocument) form.getDocument();
1712 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject();
1713 EntityEmploymentBo entityEmploymentBo=newOlePatronDocument.getPatronAffiliations().get(Integer.parseInt(mainCollectionIndex)).getEmployments().get(Integer.parseInt(subCollectionIndex));
1714 if(entityEmploymentBo!=null){
1715 newOlePatronDocument.getDeletedEmployments().add(entityEmploymentBo);
1716 newOlePatronDocument.getPatronAffiliations().get(Integer.parseInt(mainCollectionIndex)).getEmployments().remove(Integer.parseInt(subCollectionIndex));
1717 return getUIFModelAndView(uifForm);
1718 }else{
1719 newOlePatronDocument.getDeletedEmployments().add(entityEmploymentBo);
1720 return deleteLine(uifForm, result, request, response);
1721 }
1722 }
1723
1724 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showPatronLoanedItem")
1725 public ModelAndView showPatronLoanedItem(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1726 HttpServletRequest request, HttpServletResponse response) {
1727 LOG.debug("Patron View : showing Patron Loaned Records");
1728 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1729 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDocument().getNewMaintainableObject().getDataObject();
1730 try {
1731 olePatronDocument.setOleLoanDocuments(getOleLoanDocumentsFromSolrBuilder().getPatronLoanedItemBySolr
1732 (olePatronDocument.getOlePatronId(), null));
1733 if(CollectionUtils.isNotEmpty(olePatronDocument.getOleLoanDocuments())) {
1734 for(OleLoanDocument oleLoanDocument : olePatronDocument.getOleLoanDocuments()) {
1735 if(StringUtils.isNotEmpty(oleLoanDocument.getRealPatronName())) {
1736 Map patronMap = new HashMap();
1737 patronMap.put(OLEConstants.OlePatron.PATRON_ID, oleLoanDocument.getRealPatronName());
1738 OlePatronDocument patronDocument = KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap);
1739 if(patronDocument != null){
1740 patronDocument = OLEDeliverService.populatePatronName(patronDocument);
1741 oleLoanDocument.setRealPatronName(patronDocument.getPatronName());
1742 oleLoanDocument.setProxyPatronBarcode(patronDocument.getBarcode());
1743 oleLoanDocument.setProxyPatronBarcodeUrl(OLEConstants.ASSIGN_INQUIRY_PATRON_ID + patronDocument.getOlePatronId() + OLEConstants.ASSIGN_PATRON_INQUIRY);
1744 }
1745 }
1746 }
1747 }
1748 } catch (Exception e) {
1749 LOG.error("While fetching loan records error occured" + e);
1750 }
1751 olePatronDocument.setShowLoanedRecords(true);
1752 return getUIFModelAndView(form);
1753 }
1754
1755 private OleLoanDocumentsFromSolrBuilder getOleLoanDocumentsFromSolrBuilder() {
1756 if (null == oleLoanDocumentsFromSolrBuilder) {
1757 oleLoanDocumentsFromSolrBuilder = new OleLoanDocumentsFromSolrBuilder();
1758 }
1759 return oleLoanDocumentsFromSolrBuilder;
1760 }
1761
1762 public void setOleLoanDocumentsFromSolrBuilder(OleLoanDocumentsFromSolrBuilder oleLoanDocumentsFromSolrBuilder) {
1763 this.oleLoanDocumentsFromSolrBuilder = oleLoanDocumentsFromSolrBuilder;
1764 }
1765
1766 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hidePatronLoanedItem")
1767 public ModelAndView hidePatronLoanedItem(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1768 HttpServletRequest request, HttpServletResponse response) {
1769 LOG.debug("Patron View : Hiding Patron Loaned Records");
1770 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1771 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDocument().getNewMaintainableObject().getDataObject();
1772
1773 olePatronDocument.setShowLoanedRecords(false);
1774 return getUIFModelAndView(form);
1775 }
1776
1777 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showPatronRequestedRecords")
1778 public ModelAndView showPatronRequestedRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1779 HttpServletRequest request, HttpServletResponse response) {
1780 LOG.debug("Patron View : showing Patron Requested Records");
1781 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1782 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDocument().getNewMaintainableObject().getDataObject();
1783 try {
1784 OleDeliverRequestDocumentHelperServiceImpl requestService = new OleDeliverRequestDocumentHelperServiceImpl();
1785 List<OleDeliverRequestBo> oleDeliverRequestBoList = olePatronDocument.getOleDeliverRequestBos();
1786 if (oleDeliverRequestBoList.size() > 0) {
1787 for (int i = 0; i < oleDeliverRequestBoList.size(); i++) {
1788 OleItemSearch oleItemSearch = requestService.getItemDetailsForPatron(oleDeliverRequestBoList.get(i).getItemUuid());
1789 if (oleItemSearch != null && oleItemSearch.getItemBarCode() != null) {
1790 oleDeliverRequestBoList.get(i).setTitle(oleItemSearch.getTitle());
1791 oleDeliverRequestBoList.get(i).setCallNumber(oleItemSearch.getCallNumber());
1792 }
1793 }
1794 }
1795 olePatronDocument.setOleDeliverRequestBos(loanProcessor.getPatronRequestRecords(olePatronDocument.getOlePatronId()));
1796 } catch (Exception e) {
1797 LOG.error("While fetching Patron Requested Records error occured" + e);
1798 }
1799 olePatronDocument.setShowRequestedItems(true);
1800 return getUIFModelAndView(form);
1801 }
1802
1803 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hidePatronRequestedRecords")
1804 public ModelAndView hidePatronRequestedRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1805 HttpServletRequest request, HttpServletResponse response) {
1806 LOG.debug("Patron View : Hiding Patron Loaned Records");
1807 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1808 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDocument().getNewMaintainableObject().getDataObject();
1809 olePatronDocument.setOleDeliverRequestBos(new ArrayList<OleDeliverRequestBo>());
1810 olePatronDocument.setShowRequestedItems(false);
1811 return getUIFModelAndView(form);
1812 }
1813
1814 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=showTemporaryCirculationHistoryRecords")
1815 public ModelAndView showTemporaryCirculationHistoryRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1816 HttpServletRequest request, HttpServletResponse response) {
1817 LOG.debug("Patron View : showing Patron TemporaryCirculationHistory Records");
1818 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1819 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDocument().getNewMaintainableObject().getDataObject();
1820 try {
1821 olePatronDocument.setOleTemporaryCirculationHistoryRecords(getOleLoanDocumentsFromSolrBuilder().getPatronTemporaryCirculationHistoryRecords(olePatronDocument.getOlePatronId()));
1822 } catch (Exception e) {
1823 LOG.error("While fetching Patron TemporaryCirculationHistory Records error occured" + e);
1824 }
1825
1826 olePatronDocument.setShowTemporaryCirculationHistoryRecords(true);
1827 return getUIFModelAndView(form);
1828 }
1829 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=hideTemporaryCirculationHistoryRecords")
1830 public ModelAndView hideTemporaryCirculationHistoryRecords(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1831 HttpServletRequest request, HttpServletResponse response) {
1832 LOG.debug("Patron View : Hiding Patron Loaned Records");
1833 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1834 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDocument().getNewMaintainableObject().getDataObject();
1835 olePatronDocument.setOleTemporaryCirculationHistoryRecords(new ArrayList<OleTemporaryCirculationHistory>());
1836 olePatronDocument.setShowTemporaryCirculationHistoryRecords(false);
1837 return getUIFModelAndView(form);
1838 }
1839
1840 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshLoanedItemSection")
1841 public ModelAndView refreshLoanedItemSection(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1842 HttpServletRequest request, HttpServletResponse response) {
1843 LOG.debug("Patron View : Hiding Patron Loaned Records");
1844 MaintenanceDocumentForm form = (MaintenanceDocumentForm) uifForm;
1845 OlePatronDocument olePatronDocument=(OlePatronDocument)form.getDocument().getNewMaintainableObject().getDataObject();
1846 return getUIFModelAndView(form);
1847 }
1848
1849 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshProxyPatron")
1850 public ModelAndView refreshProxyPatron(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
1851 HttpServletRequest request, HttpServletResponse response) throws Exception {
1852
1853 if ((uifForm instanceof OlePatronMaintenanceDocumentForm)
1854 && !((OlePatronMaintenanceDocumentForm) uifForm).isFilterProxySection()) {
1855
1856 OlePatronMaintenanceDocumentForm form = (OlePatronMaintenanceDocumentForm) uifForm;
1857 OlePatronDocument olePatron =
1858 (OlePatronDocument)form.getDocument().getNewMaintainableObject().getDataObject();
1859
1860 List<OleProxyPatronDocument> oleProxyPatronDocuments = olePatron.getOleProxyPatronDocuments();
1861 List<OleProxyPatronDocument> proxyPatronDocumentList = new ArrayList<OleProxyPatronDocument>();
1862 List<OlePatronDocument> olePatronDocuments = new ArrayList<OlePatronDocument>();
1863 ProcessLogger.trace("patron:proxy:begin:"
1864 + oleProxyPatronDocuments.size());
1865 if (oleProxyPatronDocuments.size() > 0) {
1866 for (Iterator<OleProxyPatronDocument> proxyPatronIterator = oleProxyPatronDocuments.iterator(); proxyPatronIterator.hasNext(); ) {
1867 OleProxyPatronDocument oleProxyPatronDocument = (OleProxyPatronDocument) proxyPatronIterator.next();
1868 Map map = new HashMap();
1869 map.put(OLEConstants.OlePatron.PATRON_ID, oleProxyPatronDocument.getProxyPatronId());
1870 ProcessLogger.trace("patron:proxy:"
1871 + oleProxyPatronDocument.getProxyPatronId());
1872 OlePatronDocument olePatronDocument = (OlePatronDocument) getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, map);
1873
1874 oleProxyPatronDocument.setProxyPatronBarcode(olePatronDocument.getBarcode());
1875 oleProxyPatronDocument.setProxyPatronFirstName(olePatronDocument.getEntity().getNames().get(0).getFirstName());
1876 oleProxyPatronDocument.setProxyPatronLastName(olePatronDocument.getEntity().getNames().get(0).getLastName());
1877 proxyPatronDocumentList.add(oleProxyPatronDocument);
1878
1879 }
1880 olePatron.setOleProxyPatronDocuments(proxyPatronDocumentList);
1881 ProcessLogger.trace("patron:proxy:end");
1882 }
1883 }
1884
1885 return super.refresh(uifForm, result, request, response);
1886 }
1887
1888 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addNotes")
1889 public ModelAndView addNotes(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
1890 HttpServletRequest request, HttpServletResponse response) {
1891 MaintenanceDocumentForm maintenanceForm = (MaintenanceDocumentForm) form;
1892 MaintenanceDocument maintenanceDocument = (MaintenanceDocument) maintenanceForm.getDocument();
1893 OlePatronDocument olePatronDocument = (OlePatronDocument) maintenanceDocument.getNewMaintainableObject().getDataObject();
1894 String selectedCollectionPath = maintenanceForm.getActionParamaterValue(UifParameters.SELLECTED_COLLECTION_PATH);
1895 CollectionGroup collectionGroup = maintenanceForm.getPostedView().getViewIndex().getCollectionGroupByPath(
1896 selectedCollectionPath);
1897 String addLinePath = collectionGroup.getAddLineBindingInfo().getBindingPath();
1898 Object eventObject = ObjectPropertyUtils.getPropertyValue(maintenanceForm, addLinePath);
1899 OlePatronNotes olePatronNotes = (OlePatronNotes) eventObject;
1900 olePatronNotes.setOperatorId(GlobalVariables.getUserSession().getPrincipalId());
1901 olePatronNotes.setNoteCreatedOrUpdatedDate(new Timestamp(System.currentTimeMillis()));
1902 return super.addLine(form, result, request, response);
1903 }
1904
1905
1906 }