Example #1
0
 /**
  * Ratings listing
  *
  * @return Response
  */
 public function getRatings($id)
 {
     //TODO: This is poorly written. Can be optimized
     //__krasi
     try {
         $AdService = new SoapClient(Config::get('wsdl.ad'), array());
         $ratings['giver'] = $AdService->getReceivedRatingsAsOwner(array("userId" => $id));
         if (isset($ratings['giver']->rating)) {
             if (is_array($ratings['giver']->rating)) {
                 $ratings['giver'] = $ratings['giver']->rating;
             } else {
                 $ratings['giver'] = array($ratings['giver']->rating);
             }
         }
         $ratings['receiver'] = $AdService->getReceivedRatingsAsReceiver(array("userId" => $id));
         if (isset($ratings['receiver']->rating)) {
             if (is_array($ratings['receiver']->rating)) {
                 $ratings['receiver'] = $ratings['receiver']->rating;
             } else {
                 $ratings['receiver'] = array($ratings['receiver']->rating);
             }
         }
         $all_ratings = array();
         $stats = array('all' => array('neutral' => 0, 'positive' => 0, 'negative' => 0), 'giver' => array('neutral' => 0, 'positive' => 0, 'negative' => 0), 'receiver' => array('neutral' => 0, 'positive' => 0, 'negative' => 0));
         foreach ($ratings['receiver'] as $k => $v) {
             $v->owner = false;
             $all_ratings[] = $v;
             switch ($v->value) {
                 case 0:
                     $stats['all']['neutral']++;
                     $stats['receiver']['neutral']++;
                     break;
                 case -1:
                     $stats['all']['negative']++;
                     $stats['receiver']['negative']++;
                     break;
                 case 1:
                     $stats['all']['positive']++;
                     $stats['receiver']['positive']++;
                     break;
             }
         }
         foreach ($ratings['giver'] as $k => $v) {
             $v->owner = true;
             $all_ratings[] = $v;
             switch ($v->value) {
                 case 0:
                     $stats['all']['neutral']++;
                     $stats['giver']['neutral']++;
                     break;
                 case -1:
                     $stats['all']['negative']++;
                     $stats['giver']['negative']++;
                     break;
                 case 1:
                     $stats['all']['positive']++;
                     $stats['giver']['positive']++;
                     break;
             }
         }
         return Response::json(array('ratings' => $all_ratings, 'stats' => $stats));
     } catch (Exception $ex) {
         return Response::json(array('ex' => $ex));
     }
 }