Ejemplo n.º 1
0
  /**
   * 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;
  }