Rubenwouters\CrmLauncher\Controllers\CasesController::searchByKeywords PHP Метод

searchByKeywords() приватный Метод

Searches trough cases
private searchByKeywords ( Illuminate\Http\Request $request ) : boolean | Builder
$request Illuminate\Http\Request
Результат boolean | Builder
    private function searchByKeywords(Request $request)
    {
        $keywords = $request->input('keywords');
        $contacts = $this->contact->where('name', 'LIKE', '%' . $keywords . '%')->get();
        if (is_numeric($keywords)) {
            $query = $this->case->where('id', $keywords);
        } else {
            if (strpos($keywords, self::TYPE_TWEET) !== false || strpos($keywords, 'twitter') !== false) {
                $query = $this->case->where('origin', 'Twitter mention')->orWhere('origin', 'Twitter direct');
            } else {
                if (strpos($keywords, 'fb') !== false || strpos($keywords, 'facebook') !== false || strpos($keywords, 'post') !== false) {
                    $query = $this->case->where('origin', 'Facebook post');
                }
            }
        }
        if (strtotime($keywords)) {
            $today = date("Y-m-d", strtotime("+0 hours", strtotime($keywords)));
            $tomorrow = date("Y-m-d", strtotime("+1 day", strtotime($keywords)));
            $query = $this->case->whereHas('messages', function ($q) use($today, $tomorrow) {
                $q->orderBy('id', 'ASC')->where('post_date', '>=', $today)->where('post_date', '<', $tomorrow);
            });
        }
        foreach ($contacts as $key => $contact) {
            $query = $contact->cases();
        }
        if (!isset($query)) {
            return false;
        }
        return $query;
    }