/** * Searches trough cases * * @param Request $request * * @return bool|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; }