Example #1
0
 /**
  * Load more
  *
  * @param int $last
  * @return Response
  */
 public function loadMore($last = -1)
 {
     try {
         $filter = new Filter();
         $filter->includeOwned = 1;
         $filter->includeCannotRequest = 1;
         $filter->includeInactive = 0;
         $filter->includePickUp = null;
         $filter->includeShipping = null;
         $type = Input::get('order');
         $adtype = Input::get('types');
         $filter->searchString = Input::get('keywords');
         if (Input::get('category')) {
             $category = array(Input::get('category'));
         } else {
             $category = null;
         }
         if ($delivery = Input::get('delivery')) {
             if ($delivery == "pickup") {
                 $filter->includePickUp = 1;
                 $filter->includeShipping = 0;
             } else {
                 if ($delivery == "shipping") {
                     $filter->includePickUp = 0;
                     $filter->includeShipping = 1;
                 }
             }
         }
         $filter->categories = $category;
         if (!$type) {
             $type = AdController::TYPE_NEWEST;
         }
         if ($type == AdController::TYPE_NEWEST) {
             $filter->orderAsc = false;
             $filter->orderClosest = false;
             $filter->filterType = Filter::FILTER_TYPE_ACTIVE;
         } else {
             if ($type == AdController::TYPE_OLDEST) {
                 $filter->orderAsc = true;
                 $filter->orderClosest = false;
                 $filter->filterType = Filter::FILTER_TYPE_ACTIVE;
             } else {
                 if ($type == AdController::TYPE_CLOSEST) {
                     $filter->orderAsc = true;
                     $filter->orderClosest = true;
                     $filter->filterType = Filter::FILTER_TYPE_ACTIVE;
                     $filter->latitude = $currentUser != null && $currentUser->address != null ? $currentUser->address->latitude : null;
                     $filter->longitude = $currentUser != null && $currentUser->address != null ? $currentUser->address->longitude : null;
                 } else {
                     if ($type == AdController::TYPE_GIFTED) {
                         $filter->orderAsc = false;
                         $filter->orderClosest = false;
                         $filter->filterType = Filter::FILTER_TYPE_GIFTED;
                     }
                 }
             }
         }
         if ($adtype) {
             $filter->types = $adtype;
         }
         $adService = new SoapClient(Config::get('wsdl.ad'), array());
         $result = $adService->getAdsExDetail(array("lastIndex" => $last, "numberAds" => 15, "filter" => $filter, "includeImages" => true, "includeCreator" => true, "includeCommentsNumber" => 2, "includeCreatorStatistics" => true));
         $creators = array();
         if (isset($result->ad->type)) {
             $ads = $result;
         } elseif (isset($result->ad)) {
             $ads = $result->ad;
         } else {
             $ads = array();
         }
         $results = array();
         foreach ($ads as $k => $ad) {
             $ad = new Ad($ad);
             $creators[$ad->creator->id] = $ad->creator;
             if (isset($currentUser->address) && isset($currentUser->address->latitude) && isset($currentUser->address->longitude) && isset($ad->address) && isset($ad->address->latitude) && isset($ad->address->longitude)) {
                 $ad->distance = $this->distance_haversine($currentUser->address->latitude, $currentUser->address->longitude, $ad->address->latitude, $ad->address->longitude);
             }
             if (isset($ad->requests)) {
                 if (is_array($ad->requests->item)) {
                     foreach ($ad->requests->item as $k => $v) {
                         $v = new Requested($v);
                         if ($v->user->id == $user_id) {
                             $ad->request = $v;
                         }
                     }
                 } else {
                     $v = new Requested($ad->requests->item);
                     if ($v->user->id == $user_id) {
                         $ad->request = $v;
                     }
                 }
             }
             if (isset($ad->comments) && isset($ad->comments->item)) {
                 if (!is_array($ad->comments->item)) {
                     $ad->comments->item = array($ad->comments->item);
                 }
             }
             if (!$ad->online) {
                 if ($ad->approved) {
                     $ad->status = "APPROVED";
                 } else {
                     if ($ad->approval == null) {
                         $ad->status = "PENDING";
                     } else {
                         $ad->status = "DECLINED";
                     }
                 }
             } elseif ($ad->sold && $ad->getAcceptedRequest()) {
                 $requestor = $ad->getAcceptedRequest()->user;
                 $request = $ad->getAcceptedRequest();
                 if (isset($requestor->avatar)) {
                     $ad->requestor = $requestor->avatar->id;
                 } else {
                     $ad->requestor = null;
                 }
                 if (isset($request)) {
                     $ad->request = $request;
                 } else {
                     $ad->request = null;
                 }
                 $ad->status = "SOLD";
             } elseif ($ad->expired) {
                 $ad->status = "EXPIRED";
             } elseif (!$ad->hasActiveRequest()) {
                 $ad->status = "NO_REQUESTS";
             } elseif ($ad->status == 'FINALIZED') {
                 if (isset($ad->requests)) {
                     $requests = get_object_vars($ad->requests);
                     if (is_array($requests['item'])) {
                         foreach ($requests['item'] as $request) {
                             $request = get_object_vars($request);
                             $usr = get_object_vars($request['user']);
                             if ($usr['id'] == $user_id) {
                                 $ad->status = $request['status'];
                             }
                         }
                     } else {
                         $ad->status = $ad->requests->item->status;
                     }
                 }
             } elseif ($ad->hasSentRequest()) {
                 $requestor = $ad->getAcceptedRequest()->user;
                 if (isset($requestor->avatar)) {
                     $ad->requestor = $requestor->avatar->id;
                 } else {
                     $ad->requestor = null;
                 }
                 if (isset($request)) {
                     $ad->request = $request;
                 } else {
                     $ad->request = null;
                 }
                 $ad->status = "SENT";
             } elseif ($ad->hasAcceptedRequest()) {
                 $requestor = $ad->getAcceptedRequest()->user;
                 if (isset($requestor->avatar)) {
                     $ad->requestor = $requestor->avatar->id;
                 } else {
                     $ad->requestor = null;
                 }
                 if (isset($request)) {
                     $ad->request = $request;
                 } else {
                     $ad->request = null;
                 }
                 $ad->status = "SELECTED";
             } else {
                 $ad->status = "ACTIVE";
             }
             if (isset($ad->request)) {
                 $request = $ad->request;
                 if ($ad->expired || $request->isExpired) {
                     if ($ad->request->adStatus == "EXPIRED") {
                         $ad->reqStat = "EXPIRED";
                     } else {
                         if ($ad->request->isCanceled) {
                             $ad->reqStat = "CANCELED";
                         } else {
                             $ad->reqStat = "DECLINED";
                         }
                     }
                 } else {
                     if ($ad->sold) {
                         $ad->reqStat = "RECEIVED";
                     } else {
                         if ($request->isPending) {
                             $ad->reqStat = "PENDING";
                         } else {
                             if ($request->accepted) {
                                 $ad->reqStat = "ACCEPTED";
                             }
                         }
                     }
                 }
             }
             $results[] = $ad;
         }
         return Response::json(array('ads' => $results, 'creators' => $creators));
     } catch (Exception $ex) {
         return Response::json(array());
     }
 }