/**
  * Add bookmark
  * route: /bookmarks/add
  * 
  * @param Request $request
  * @return Response
  */
 public function addBookmarkAction(Request $request)
 {
     $data = $request->json()->get('Bookmark');
     $json_return = array();
     if (!isset($data['user_id']) || !isset($data['restaurant_id'])) {
         $message = "Format should be: {'Bookmark': {'user_id': <int>, 'restaurant_id': <int>}}";
         return showErrorResponse($message, HTTP_UNPROCESSABLE_ENTITY);
     }
     $user_id = $data['user_id'];
     $restaurant_id = $data['restaurant_id'];
     if (!Bookmarks::isBookmarked($user_id, $restaurant_id)) {
         try {
             $bookmark = new Bookmarks();
             $bookmark = $bookmark->addBookmark($user_id, $restaurant_id);
             $bookmark[KeyParser::is_bookmarked] = Bookmarks::isBookmarked($user_id, $restaurant_id);
             $bookmark[KeyParser::status] = CONSTANTS::BOOKMARK_SAVED;
             $json_return[KeyParser::data] = ModelFormatter::bookmarkViewFormat($bookmark);
         } catch (\Exception $e) {
             return showErrorResponse('Error adding bookmark');
         }
     } else {
         $bookmark = Bookmarks::getBookmarkByUserIdRestaurantId($user_id, $restaurant_id);
         $bookmark[KeyParser::is_bookmarked] = Bookmarks::isBookmarked($user_id, $restaurant_id);
         $bookmark[KeyParser::status] = CONSTANTS::BOOKMARK_EXISTS;
         $json_return[KeyParser::data] = ModelFormatter::bookmarkViewFormat($bookmark);
     }
     return response()->json($json_return);
 }
 /**
  * Displays individual restaurant information
  * route: /restaurants/{restaurant_id}/{viewer_id?}
  *
  * @param id - restaurant ID
  * @param viewer_id - user ID of the viewer (Optional)
  * @return Response
  */
 public function viewAction($id)
 {
     $viewer_id = Input::get('viewer_id', null);
     $restaurant = Restaurants::find($id);
     $data = array();
     if ($restaurant) {
         $restaurant->view_count++;
         $restaurant->save();
         $restaurant_categories = RestaurantsCategory::getByRestaurantId($id);
         $photos = Photos::getByRestaurantId($id);
         $is_bookmarked = Bookmarks::isBookmarked($viewer_id, $restaurant->id);
         $data[KeyParser::restaurant] = ModelFormatter::restaurantViewFormat($restaurant, $is_bookmarked);
         foreach ($photos as $photo) {
             $data[KeyParser::photos][] = ModelFormatter::photosFormat($photo);
         }
         $data[KeyParser::categories] = Categories::getFormattedRestaurantCategories($restaurant->id);
         Categories::getFormattedRestaurantCategories($restaurant->id);
         $latest_activity = Activities::getLatestRestaurantActivity($id);
         if ($latest_activity) {
             $data[KeyParser::activity] = ModelFormatter::activityRestaurantViewFormat($latest_activity);
             $data[KeyParser::user] = Users::getStatistics($id);
             $data += Activities::getActivityType($latest_activity->type, $latest_activity->type_id);
         }
     }
     $recently_viewed = array();
     if ($viewer_id) {
         $where = array('user_id' => $viewer_id, 'restaurant_id' => $id);
         $rv = LogRecentlyViewed::where($where)->get()->first();
         if ($rv) {
             $rv->date_modified = date('Y-m-d H:i:s');
             $rv->save();
         }
         $rv = new LogRecentlyViewed();
         $rv->addNewLog($viewer_id, $id);
     }
     $json_return[KeyParser::data] = $data;
     return response()->json($json_return);
 }