/**
  * Apply order settings to the source
  *
  * @param array $settings
  */
 protected function processOrders(array $settings = [])
 {
     foreach ($settings['orders'] as $column => $order) {
         switch ($order) {
             case Grid\Grid::ORDER_ASC:
                 $this->source->addAscending($column);
                 break;
             case Grid\Grid::ORDER_DESC:
                 $this->source->addDescending($column);
                 break;
             default:
                 break;
         }
     }
 }
 public function showNotifications(Request $request)
 {
     $current_user = ParseUser::getCurrentUser();
     $query = new ParseQuery("Notifications");
     $query->equalTo("for", $current_user);
     $query->equalTo("read", false);
     $query->includeKey('by');
     $query->includeKey('message');
     $query->addDescending('createdAt');
     try {
         $notifications = $query->find();
         Html\Assets::addLink(Html\Link::Css(elixir('css/default.css')));
         $renderData = $this->getRenderData($request);
         $notes = array();
         foreach ($notifications as $notify) {
             if (!empty($notify->get('message'))) {
                 $byimage = $notify->get('by')->get('image');
                 $chatroom = $notify->get('message')->get('chatRoom');
                 $relation = $notify->get('message')->getRelation('asset');
                 $assets = $relation->getQuery()->find();
                 if (empty($chatroom)) {
                     continue;
                 }
                 $chatroom->fetch();
                 $notes[] = ['notification' => $notify, 'byimage' => $byimage, 'chatRoom' => $chatroom, 'assets' => $assets];
             }
             $notify->set("read", true);
             $notify->save();
         }
         $renderData['user'] = $current_user;
         $renderData['notifications'] = $notes;
         return view('notification', $renderData);
     } catch (\Exception $ex) {
         echo $ex->getMessage();
         die;
     }
 }