Beispiel #1
0
 /**
  * Add like on review, checkin or photo
  *
  * @param $request
  * @return mixed
  */
 public function addAction(Request $request)
 {
     $data = $request->json()->get('Like');
     $type = $data['type'];
     $type_id = $data['type_id'];
     $user_id = $data['user_id'];
     $user_data = Users::find($user_id);
     if (is_null($user_data)) {
         return showErrorResponse('Invalid user');
     }
     $is_liked = Like::isLiked($user_id, $type, $type_id);
     if ($is_liked) {
         $like_count = Like::getCount($type, $type_id);
         $json_return[KeyParser::data] = array(KeyParser::type => $type, KeyParser::type_id => $type_id, KeyParser::user_id => $user_id, KeyParser::is_existing => CONSTANTS::LIKE_IS_EXISTING, KeyParser::like_count => $like_count);
         return response()->json($json_return);
     }
     switch ($type) {
         case CONSTANTS::REVIEW:
             $like_object = Reviews::find($type_id);
             $like_type = CONSTANTS::NOTIFICATION_TYPE_LIKE_REVIEW;
             if (!$like_object) {
                 $status_code = CONSTANTS::ERROR_CODE_REVIEW_MISSING;
             }
             break;
         case CONSTANTS::CHECKIN:
             $like_object = CheckIns::find($type_id);
             $like_type = CONSTANTS::NOTIFICATION_TYPE_LIKE_CHECKIN;
             if (!$like_object) {
                 $status_code = CONSTANTS::ERROR_CODE_CHECKIN_MISSING;
             }
             break;
         case CONSTANTS::PHOTO:
             $like_object = Photos::find($type_id);
             $like_type = CONSTANTS::NOTIFICATION_TYPE_LIKE_PHOTO;
             if (!$like_object) {
                 $status_code = CONSTANTS::ERROR_CODE_PHOTO_MISSING;
             }
             break;
         default:
             return showErrorResponse('Invalid type', HTTP_ACCEPTED, CONSTANTS::ERROR_CODE_INVALID_TYPE);
     }
     if (!isset($like_object)) {
         return showErrorResponse('Invalid type id', HTTP_ACCEPTED, $status_code);
     }
     if (!Restaurants::isExists($like_object->restaurant_id)) {
         return showErrorResponse('Restaurant data not found', HTTP_ACCEPTED, CONSTANTS::ERROR_CODE_GENERAL);
     }
     try {
         $like_data = new Like();
         $query_response = $like_data->addLike($type_id, $type, $user_id, $like_object, $like_type);
     } catch (\Exception $e) {
         return showErrorResponse($e->getMessage());
     }
     $json_return[KeyParser::data] = array(KeyParser::type => $query_response->type, KeyParser::type_id => $query_response->type_id, KeyParser::user_id => $query_response->user_id, KeyParser::is_existing => CONSTANTS::LIKE_IS_NOT_EXISTING, KeyParser::like_count => Like::getCount($type, $type_id));
     return response()->json($json_return);
 }