public function doRecipientSearch(Request $request)
 {
     $recipient_string = explode(' ', $request->input('search_string'));
     $list = null;
     if ($request->has('list')) {
         $recipient_ids = DB::table('mailing_recipients')->select('mailing_recipients.id', 'mailing_list_recipients.mailing_list_id')->join('mailing_list_recipients', 'mailing_recipients.id', '=', 'mailing_list_recipients.recipient_id')->where('mailing_list_recipients.mailing_list_id', $request->input('list'))->where(function ($outer_query) use($recipient_string) {
             $outer_query->where(function ($query) use($recipient_string) {
                 $where = [];
                 foreach ($recipient_string as $string) {
                     $where[] = "`first_name` LIKE '%" . $string . "%'";
                 }
                 $query->whereRaw(implode(' OR ', $where));
             })->orWhere(function ($query) use($recipient_string) {
                 $where = [];
                 foreach ($recipient_string as $string) {
                     $where[] = "`last_name` LIKE '%" . $string . "%'";
                 }
                 $query->whereRaw(implode(' OR ', $where));
             })->orWhere(function ($query) use($recipient_string) {
                 $where = [];
                 foreach ($recipient_string as $string) {
                     $where[] = "`email_address` LIKE '%" . $string . "%'";
                 }
                 $query->whereRaw(implode(' OR ', $where));
             })->orWhere(function ($query) use($recipient_string) {
                 $where = [];
                 foreach ($recipient_string as $string) {
                     $where[] = "`mobile_number` LIKE '%" . $string . "%'";
                 }
                 $query->whereRaw(implode(' OR ', $where));
             });
         })->take(50)->get();
         $ids = [];
         foreach ($recipient_ids as $id) {
             $ids[] = $id->id;
         }
         $recipients = MailingRecipient::whereIn('id', $ids)->get();
         $list = MailingList::findOrFail($request->has('list'));
     } else {
         $recipients = MailingRecipient::where(function ($query) use($recipient_string) {
             $where = [];
             foreach ($recipient_string as $string) {
                 $where[] = "`first_name` LIKE '%" . $string . "%'";
             }
             $query->whereRaw(implode(' OR ', $where));
         })->orWhere(function ($query) use($recipient_string) {
             $where = [];
             foreach ($recipient_string as $string) {
                 $where[] = "`last_name` LIKE '%" . $string . "%'";
             }
             $query->whereRaw(implode(' OR ', $where));
         })->orWhere(function ($query) use($recipient_string) {
             $where = [];
             foreach ($recipient_string as $string) {
                 $where[] = "`email_address` LIKE '%" . $string . "%'";
             }
             $query->whereRaw(implode(' OR ', $where));
         })->orWhere(function ($query) use($recipient_string) {
             $where = [];
             foreach ($recipient_string as $string) {
                 $where[] = "`mobile_number` LIKE '%" . $string . "%'";
             }
             $query->whereRaw(implode(' OR ', $where));
         })->take(50)->get();
     }
     $response = ['html' => view('backend.partials.marketing.recipient-list')->with(['recipients' => $recipients, 'list' => $list])->render()];
     header('Content-Type: application/json');
     die(json_encode($response));
 }
 /**
  * Create a new job instance.
  *
  * @return void
  */
 public function __construct($filename, $user_id, $list_id)
 {
     $this->user = User::findOrFail($user_id);
     $this->filename = $filename;
     $this->mailing_list = MailingList::findOrFail($list_id);
 }