/** * This creates combined search result list from business,page and deals * * @param businessList * @param dealsList * @param pageList * @param searchResultList * @return */ private List<SearchResult> getSearchResults( int userId, List<Business> businessList, List<Deals> dealsList, List<Page> pageList, List<Events> eventsList, List<SearchResult> searchResultList, String category, int minPrice, int maxPrice) { // Add results for Events if (eventsList != null) { for (Events events : eventsList) { SearchResult searchResult = new SearchResult(); // Check if event is already favorite or not Eventuserlikes eventProperty = userDAO.getUserEventProperties(userId, events.getEventId()); if (eventProperty != null) { searchResult.setIsFavorite(eventProperty.getIsFavorite()); searchResult.setIsBooked(eventProperty.getIsBooked()); } Page page = events.getPage(); /*List<CommunityReview> communityReviewList = eventsDAO.getCommunityReviewByPageId(page.getPageId()); int rating = 0; int count = 0; if(communityReviewList != null && !communityReviewList.isEmpty()) { for(CommunityReview communityReview:communityReviewList) { rating = rating + communityReview.getRating(); count++; } double avg = (double)rating/count; searchResult.setRating(avg); }*/ logger.debug("events.getPage():: " + events.getPage()); double avgRating = 0.0; if (events.getPage() != null) { avgRating = eventsDAO.getCommunityReviewByPageId(events.getPage().getPageId()); } searchResult.setRating(avgRating); searchResult.setId(events.getEventId()); searchResult.setCity(events.getCity()); searchResult.setName(events.getTitle()); searchResult.setType("Event"); searchResult.setStartDate(events.getEvent_date_time_local().toString()); searchResult.setEndDate(events.getEvent_date_time_local().toString()); // searchResult.setImageUrl(events.getImage_url()); searchResult.setWebsiteUrl(events.getUrlpath()); searchResult.setCategory(page.getPagetype().getPageType()); searchResult.setSource(events.getEventSource()); searchResult.setTimeLine( Utils.getTimeLineForEvent(events.getEvent_date_local(), events.getEvent_time_local())); searchResult.setTimeSlot(events.getEvent_time_local()); String address = events.getVenue_name() + "\n" + events.getCity() + "," + events.getState() + " " + events.getZip(); searchResult.setAddress(address); searchResult.setZipCode(events.getZip()); if (events.getLatitude() != null) searchResult.setLatitude(Double.parseDouble(events.getLatitude())); if (events.getLongitude() != null) searchResult.setLongitude(Double.parseDouble(events.getLongitude())); searchResultList.add(searchResult); } } // Add results for Deals if (dealsList != null) { for (Deals deals : dealsList) { Business business = deals.getBusiness(); SearchResult searchResult = new SearchResult(); // Check if deal is already favorite or not Dealsusage dealProperty = userDAO.getUserDealProperties(userId, deals.getId()); if (dealProperty != null) { searchResult.setIsFavorite(dealProperty.getIsFavorite()); searchResult.setIsBooked(dealProperty.getIsBooked()); } searchResult.setId(deals.getId()); searchResult.setCity(deals.getBusiness().getCity()); searchResult.setName(deals.getTitle()); searchResult.setType("Deal"); searchResult.setStartDate(deals.getStartAt().toString()); searchResult.setEndDate(deals.getEndAt().toString()); searchResult.setImageUrl(deals.getLargeImageUrl()); searchResult.setWebsiteUrl(deals.getDealUrl()); searchResult.setCategory(category); if (business != null) { if (business.getRating() != null) searchResult.setRating(business.getRating()); searchResult.setMerhcantName(business.getName()); } searchResult.setSource(deals.getDealSource()); // Get price and discount Dealoption dealoption = dealsDAO.getDealOptionByDealId(deals.getId(), minPrice, maxPrice); if (dealoption != null) { if (dealoption.getFormattedOriginalPrice() != null) searchResult.setPrice(dealoption.getFormattedOriginalPrice()); else searchResult.setPrice("$" + dealoption.getOriginalPrice()); searchResult.setDiscount(dealoption.getDiscountPercent()); // Get Address of redemption location logger.debug("getting location.........."); if (dealoption.getDealredemptionlocations() != null && !dealoption.getDealredemptionlocations().isEmpty()) { Dealredemptionlocation dealredemptionlocation = (Dealredemptionlocation) dealoption.getDealredemptionlocations().iterator().next(); logger.debug("getting location.........." + dealredemptionlocation); if (dealredemptionlocation != null) { String address = dealredemptionlocation.getName() + "\n" + dealredemptionlocation.getStreetAddress1() + "\n" + dealredemptionlocation.getCity() + "," + dealredemptionlocation.getState() + " " + dealredemptionlocation.getPostalCode(); searchResult.setAddress(address); if (dealredemptionlocation.getLattitude() != null) searchResult.setLatitude(Double.parseDouble(dealredemptionlocation.getLattitude())); if (dealredemptionlocation.getLongitude() != null) searchResult.setLongitude( Double.parseDouble(dealredemptionlocation.getLongitude())); searchResult.setZipCode(dealredemptionlocation.getPostalCode()); } } else { if (business != null) { if (business.getDisplayAddress() != null) searchResult.setAddress( business.getDisplayAddress().replaceAll("[<>\\[\\],-]", "")); if (business.getLattitude() != null) searchResult.setLatitude(Double.parseDouble(business.getLattitude())); if (business.getLongitude() != null) searchResult.setLongitude(Double.parseDouble(business.getLongitude())); searchResult.setZipCode(business.getPostalCode()); } } } searchResultList.add(searchResult); } } // Add results for Community if (pageList != null) { for (Page page : pageList) { SearchResult searchResult = new SearchResult(); // Get recent event date for community Object[] event_date = eventsDAO.getRecentEventDetails(page.getPageId()); if (event_date != null) { Date date = (Date) event_date[0]; searchResult.setStartDate(date.toString()); searchResult.setEndDate(date.toString()); searchResult.setTimeLine(Utils.getTimeLineForEvent(date, event_date[1].toString())); searchResult.setTimeSlot(event_date[1].toString()); if (event_date[2] != null && !event_date[2].toString().trim().equals("")) searchResult.setLatitude(Double.parseDouble(event_date[2].toString())); if (event_date[3] != null && !event_date[3].toString().trim().equals("")) searchResult.setLongitude(Double.parseDouble(event_date[3].toString())); if (event_date[4] != null && !event_date[4].toString().trim().equals("")) searchResult.setZipCode(event_date[4].toString()); } // Check if business is already favorite or not Pageuserlikes pageuserlikes = userDAO.getUserPageProperties(userId, page.getPageId()); if (pageuserlikes != null) { searchResult.setIsFavorite(pageuserlikes.getIsFavorite()); searchResult.setIsBooked(pageuserlikes.getIsBooked()); } searchResult.setId(page.getPageId()); /*List<CommunityReview> communityReviewList = eventsDAO.getCommunityReviewByPageId(page.getPageId()); int rating = 0; int count = 0; if(communityReviewList != null && !communityReviewList.isEmpty()) { for(CommunityReview communityReview:communityReviewList) { rating = rating + communityReview.getRating(); count++; }20 double avg = (double)rating/count; logger.debug("avg rating =>"+avg); searchResult.setRating(avg); } else searchResult.setRating(0);*/ double avgRating = eventsDAO.getCommunityReviewByPageId(page.getPageId()); searchResult.setRating(avgRating); if (page.getBusiness() != null) searchResult.setCity(page.getBusiness().getCity()); searchResult.setName(page.getAbout()); searchResult.setType("Community"); searchResult.setImageUrl(page.getProfilePicture()); searchResult.setWebsiteUrl(page.getPageUrl()); searchResult.setCategory(page.getPagetype().getPageType()); searchResult.setSource(page.getSource()); searchResultList.add(searchResult); } } // Add results for business if (businessList != null) { for (Business business : businessList) { SearchResult searchResult = new SearchResult(); Page page = eventsDAO.getPageByBusinessId(business.getId()); if (page != null) { // Check if business is already favorite or not Pageuserlikes pageuserlikes = userDAO.getUserPageProperties(userId, page.getPageId()); if (pageuserlikes != null) { searchResult.setIsFavorite(pageuserlikes.getIsFavorite()); searchResult.setIsBooked(pageuserlikes.getIsBooked()); } } else { Funboard funboard = funBoardDAO.isFunBoardExists(userId, business.getId(), null); if (funboard != null) searchResult.setIsBooked(true); } searchResult.setId(business.getId()); searchResult.setCity(business.getCity()); searchResult.setName(business.getName()); searchResult.setType("Business"); searchResult.setImageUrl(business.getImageUrl()); searchResult.setWebsiteUrl(business.getWebsiteUrl()); searchResult.setCategory(category); if (business.getRating() != null) searchResult.setRating(business.getRating()); searchResult.setSource(business.getSource()); searchResult.setZipCode(business.getPostalCode()); if (business.getLattitude() != null) searchResult.setLatitude(Double.parseDouble(business.getLattitude())); if (business.getLongitude() != null) searchResult.setLongitude(Double.parseDouble(business.getLongitude())); if (business.getDisplayAddress() != null) searchResult.setAddress(business.getDisplayAddress().replaceAll("[<>\\[\\],-]", "")); searchResultList.add(searchResult); } } return searchResultList; }