/**
  * @param Request $request
  * @param         $query
  * @return mixed
  */
 public static function queryRequestHandler(Request $request, $query)
 {
     if ($request instanceof SearchQueryContract) {
         $query = static::getSearchQuery($query, $request->getSearchQuery());
     }
     if ($request instanceof EqualsQueryContract) {
         foreach ($request->getEqualsQuery() as $field => $value) {
             $fieldName = @(string) $field;
             $fieldValue = @(string) $value;
             $query = static::handleEqualsQuery($query, $fieldName, $fieldValue);
         }
     }
     if ($request instanceof OrderQueryContract) {
         $hasOrder = false;
         foreach ($request->getOrderQuery() as $field => $value) {
             $hasOrder = true;
             $fieldName = @(string) $field;
             $fieldValue = @(string) $value;
             $query = static::handleOrderQuery($query, $fieldName, $fieldValue);
         }
         if (!$hasOrder) {
             $query->orderBy('created_at', 'desc');
         }
     }
     if ($request instanceof WhereInQueryContract) {
         foreach ($request->getWhereInQuery() as $field => $value) {
             $fieldName = @(string) $field;
             $query = static::handleWhereInQuery($query, $fieldName, $value);
         }
     }
     return $query;
 }