Exemplo n.º 1
0
 public static function searchResultsEntities(ModelConfig $modelConfig)
 {
     return static::completeEntities($modelConfig)->where(function ($query) use($modelConfig) {
         $searchDataArray = AdminHelper::getSearchData($modelConfig);
         if ($searchDataArray) {
             foreach ($searchDataArray as $searchData) {
                 if ($searchData['searchConfig']['type'] == 'standard') {
                     if ($searchData['searchConfig']['match'] == 'exact') {
                         if (config('gtcms.premium') && isset($searchData['langDependent']) && $searchData['langDependent']) {
                             $query->where(function ($query2) use($searchData) {
                                 foreach (config('gtcmslang.languages') as $lang) {
                                     $query2->orWhere($searchData['dbProperty'] . "_" . $lang, $searchData['value']);
                                 }
                             });
                         } else {
                             $value = $modelConfig->getDatabasePropertyValue($searchData['property'], $searchData['value']);
                             $eqSign = "=";
                             if ($searchData['fieldFrom']) {
                                 $eqSign = ">=";
                             } else {
                                 if ($searchData['fieldTo']) {
                                     $eqSign = "<=";
                                 }
                             }
                             $query->where($searchData['dbProperty'], $eqSign, $value);
                         }
                     } else {
                         if ($searchData['searchConfig']['match'] == 'pattern') {
                             if (config('gtcms.premium') && isset($searchData['langDependent']) && $searchData['langDependent']) {
                                 $query->where(function ($query2) use($searchData) {
                                     foreach (config('gtcmslang.languages') as $lang) {
                                         $query2->orWhere($searchData['dbProperty'] . "_" . $lang, 'LIKE', '%' . $searchData['value'] . '%');
                                     }
                                 });
                             } else {
                                 $query->where($searchData['dbProperty'], 'LIKE', '%' . $searchData['value'] . '%');
                             }
                         }
                     }
                 } else {
                     if ($searchData['searchConfig']['type'] == 'exception') {
                         //custom code here
                     }
                 }
             }
         }
     });
 }