001    package org.kuali.ole.patron.bill.controller;
002    
003    import org.apache.log4j.Logger;
004    import org.kuali.incubator.SolrRequestReponseHandler;
005    import org.kuali.ole.OLEConstants;
006    import org.kuali.ole.patron.bill.*;
007    import org.kuali.ole.patron.bill.form.ItemBillForm;
008    import org.kuali.rice.krad.maintenance.MaintenanceDocument;
009    import org.kuali.rice.krad.service.BusinessObjectService;
010    import org.kuali.rice.krad.service.KRADServiceLocator;
011    import org.kuali.rice.krad.util.GlobalVariables;
012    import org.kuali.rice.krad.util.KRADConstants;
013    import org.kuali.rice.krad.web.controller.UifControllerBase;
014    import org.kuali.rice.krad.web.form.MaintenanceForm;
015    import org.kuali.rice.krad.web.form.UifFormBase;
016    import org.springframework.stereotype.Controller;
017    import org.springframework.validation.BindingResult;
018    import org.springframework.web.bind.annotation.ModelAttribute;
019    import org.springframework.web.bind.annotation.RequestMapping;
020    import org.springframework.web.servlet.ModelAndView;
021    
022    import javax.servlet.http.HttpServletRequest;
023    import javax.servlet.http.HttpServletResponse;
024    import java.math.BigDecimal;
025    import java.util.HashMap;
026    import java.util.Iterator;
027    import java.util.List;
028    import java.util.Map;
029    
030    /**
031     * Created with IntelliJ IDEA.
032     * User: ?
033     * Date: 9/7/12
034     * Time: 11:32 AM
035     * To change this template use File | Settings | File Templates.
036     */
037    
038    @Controller
039    @RequestMapping(value = "/itemPatronBill")
040    public class ItemBillController extends UifControllerBase {
041    
042        private static final Logger LOG = Logger.getLogger(ItemBillController.class);
043    
044        /**
045         *  This method creates new ItemBill form
046         * @param request
047         * @return  ItemBillForm
048         */
049        @Override
050        protected ItemBillForm createInitialForm(HttpServletRequest request) {
051            return new ItemBillForm();
052        }
053    
054        /**
055         * This method takes the initial request when click on  Item Bill link
056         * @param form
057         * @param result
058         * @param request
059         * @param response
060         * @return  ModelAndView
061         */
062        @Override
063        @RequestMapping(params = "methodToCall=start")
064        public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
065                                  HttpServletRequest request, HttpServletResponse response) {
066            ItemBillForm itemBillForm = (ItemBillForm) form;
067            return super.start(itemBillForm, result, request, response);
068        }
069    
070        /**
071         * This method retrieves all bill information for particular item barcode
072         * @param form
073         * @param result
074         * @param request
075         * @param response
076         * @return  ModelAndView
077         */
078        @RequestMapping(params = "methodToCall=submit")
079        public ModelAndView submitItemBarcode(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
080                                  HttpServletRequest request, HttpServletResponse response) {
081            ItemBillForm itemBillForm = (ItemBillForm) form;
082            String itemBarcode = itemBillForm.getItemBarcode();
083            SolrRequestReponseHandler solrRequestReponseHandler = new SolrRequestReponseHandler();
084            if(itemBarcode.equals("") || itemBarcode == null){
085                GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.ENTR_ITM_BAR );
086                return getUIFModelAndView(itemBillForm);
087            }else if(!(itemBarcode.equals("")) || itemBarcode != null){
088                List<HashMap<String, Object>> documentList = solrRequestReponseHandler.retriveResults(OLEConstants.ITM_BAR_DISP + itemBarcode);
089                if (documentList != null && documentList.size() == 0) {
090                    GlobalVariables.getMessageMap().putError(KRADConstants.GLOBAL_ERRORS, OLEConstants.ITM_BAR_NOT_AVAL);
091                    return getUIFModelAndView(itemBillForm);
092                }
093            }
094            Map itemBarcodeMap = new HashMap();
095            itemBarcodeMap.put("itemBarcode",itemBarcode);
096            List<FeeType> feeTypeList = (List<FeeType>)KRADServiceLocator.getBusinessObjectService().findMatching(FeeType.class,itemBarcodeMap);
097            if(feeTypeList.size()==0){
098                GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.BILL_NOT_AVAI_BAR );
099                return getUIFModelAndView(itemBillForm);
100            }
101            ItemBillHelperService itemBillHelperService = new ItemBillHelperService();
102            itemBillForm.setItemBillList(itemBillHelperService.getItemBills(itemBarcode));
103            return getUIFModelAndView(itemBillForm, "ItemViewPage");
104        }
105    
106        /**
107         * This method will clear all elements
108         * @param form
109         * @param result
110         * @param request
111         * @param response
112         * @return  ModelAndView
113         */
114        @RequestMapping(params = "methodToCall=clear")
115        public ModelAndView clearItemBarcode(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
116                                              HttpServletRequest request, HttpServletResponse response) {
117            ItemBillForm itemBillForm = (ItemBillForm) form;
118            itemBillForm.setItemBarcode("");
119            return getUIFModelAndView(itemBillForm, "ItemViewPage");
120    
121        }
122    
123        /**
124         * Just returns as if return with no value was selected.
125         */
126        @Override
127        @RequestMapping(params = "methodToCall=close")
128        public ModelAndView close(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
129                                  HttpServletRequest request, HttpServletResponse response) {
130            return super.close(form, result, request, response);
131        }
132    
133    
134    
135    
136    
137    }