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 } } } } }); }