middleware(['superadmin', '2fa']); } public function leads() { // $query = Lead::with('customer')->with('sf_guard_user')->with('status')->select('lead.*'); $data = [ 'filter_leads_options' => [], //need ??? FewoLodging::get()->pluck('name', 'id'), ]; return view('admin.report.leads', $data); } //checkLeadsDatatable private function prozessLeadsSearch() { $query = Lead::with('customer')->with('sf_guard_user')->with('status') ->select('inquiries.*'); //->where('deleted_at', '=', null); /* if(Request::get('filter_option_leads_id') != ""){ $query->where('...?', '=', Request::get('filter_option_leads_id')); } */ if(Request::get('filter_date_from') != ""){ $date_from = Carbon::parse(Request::get('filter_date_from'))->format("Y-m-d"); $query->where("request_date", '>=', $date_from); } if(Request::get('filter_date_to') != ""){ $date_to = Carbon::parse(Request::get('filter_date_to'))->format("Y-m-d"); $query->where("request_date", '<=', $date_to); } return $query; } public function leadsDatatable() { $query = $this->prozessLeadsSearch(); return \DataTables::eloquent($query) ->addColumn('id', function (Lead $lead) { return ''.$lead->id.''; }) ->addColumn('customer_id', function (Lead $lead) { return ''.$lead->customer_id.''; }) ->addColumn('request_date', function (Lead $lead) { return Carbon::parse($lead->request_date)->format(\Util::formatDateDB()); }) ->addColumn('travel_country', function (Lead $lead) { return $lead->getTravelCountryDestco(); }) ->addColumn('status', function (Lead $lead) { return $lead->getStatusBadge(); }) ->addColumn('lead_notice', function (Lead $lead) { return $lead->lead_notices->count() ? '' : ''; }) ->addColumn('last_lead_email', function (Lead $lead) { if($lead->lead_mails->count()){ $lead_mail = $lead->lead_mails_sent_at->last(); $badge = $lead_mail->is_answer ? 'badge-default' : 'badge-secondary'; $badge = !$lead_mail->send ? $badge : 'badge-success'; return ' ' .($lead_mail->send ? '' : '').' ' .$lead_mail->sent_at.' '; } return '-'; }) ->addColumn('action_delete', function (Lead $lead) { return ''; }) ->orderColumn('id', 'id $1') ->orderColumn('customer_id', 'customer_id $1') ->orderColumn('request_date', 'request_date $1') ->orderColumn('status', 'status_id $1') ->orderColumn('last_lead_email', function ($query, $order) { $query->whereHas('lead_mails', function ($q) use ($order) { // $q->select('sent_at')->where('sent_at', DB::raw("(select max('sent_at') customer_mails)")); //) })->orderBy( LeadMail::select('sent_at') ->whereColumn('lead_id', 'inquiries.id') ->orderBy('sent_at', 'DESC') ->limit(1) , $order); }) ->filterColumn('id', function($query, $keyword) { if($keyword != ""){ $query->where('id', 'LIKE', '%'.$keyword.'%'); } }) ->filterColumn('customer_id', function($query, $keyword) { if($keyword != ""){ $query->where('customer_id', 'LIKE', '%'.$keyword.'%'); } }) ->rawColumns(['action_edit', 'customer_id', 'sf_guard_user_id', 'id', 'status', 'last_lead_email', 'travel_country', 'lead_notice', 'action_delete']) ->make(true); } public function leadsExport(){ $query = $this->prozessLeadsSearch(); $order = explode(",", Request::get('order')); $orderByNum = [ 0 => 'id', 1 => 'customer_id', 2 => 'contacts.firstname', 3 => 'contacts.name', 4 => 'contacts.email', 5 => 'request_date', 6 => 'travel_country', 7 => 'sf_guard_user.last_name', 8 => 'status', 9 => 'last_lead_email', ]; if(isset($order[0])) { $column = isset($orderByNum[$order[0]]) ? $orderByNum[$order[0]] : "id"; $direction = isset($order[1]) ? strtoupper($order[1]) : "ASC"; $query->orderBy($column, $direction); } $filename = "file-".date('Y-m-d-H-i-s'); $exports = $query->get(); $columns = []; if(Request::get('export') === "export"){ $filename = "Buchungen_Anfragen_".date('Y-m-d-H-i-s'); $headers = array( 'LeadID', 'KundenID', 'Vorname', 'Nachname', 'E-Mail', 'Anfrage-Datum', 'Reiseland', 'Sachbearbeiter', 'Status', 'Letzte E-Mail', ); foreach($exports as $export) { $columns[] = array( 'LeadID' => $export->id, 'KundenID' => $export->customer_id, 'Vorname' => $export->customer ? $export->customer->firstname : " ", 'Nachname' => $export->customer ? $export->customer->name : " ", 'E-Mail' => $export->customer ? $export->customer->email : " ", 'Anfrage-Datum' => _format_date($export->request_date), 'Reiseland' => $export->getTravelCountryDestco(false), 'Sachbearbeiter' => $export->sf_guard_user->last_name, 'Status' => $export->status->name, 'Letzte E-Mail' => $export->lead_mails->count() ? $export->lead_mails_sent_at->last()->sent_at : " ", ); } } return Excel::download(new ReportCollectionExport($columns, $headers), $filename.'.xls'); } }