middleware('admin'); $this->customerMailRepo = $customerMailRepo; } public function index() { $data = [ ]; return view('customer.mail.index', $data); } public function detail($id) { if($id === "new") { $customer_mail = new CustomerMail(); $id = 'new'; }else{ $customer_mail = CustomerMail::findOrFail($id); $id = $customer_mail->id; } $data = [ 'customer_mail' => $customer_mail, 'id' => $id, 'back' => URL::previous(), ]; return view('customer.mail.detail', $data); } public function store($id) { return back(); /* $data = Request::all(); \Session()->flash('alert-save', '1'); return redirect(route('lead_detail', [$lead->id]));*/ } public function delete($id){ $customer_mail = CustomerMail::find($id); $customer_mail->dir = 12; $customer_mail->travel_country_id = null; $customer_mail->draft = false; $customer_mail->save(); \Session()->flash('alert-success', __('Mail gelöscht')); return back(); } /* public function loadModal(){ $data = Request::all(); $ret = ""; if(Request::ajax()){ $customers = []; $query = $this->getSearchRequests(); $bookings = $query->orderBy('id', 'DESC')->limit(50)->get(); foreach ($bookings as $booking){ $tmp = ""; $tmp .= $booking->customer ? $booking->customer->email." | " : "- | "; $tmp .= $booking->customer ? $booking->customer->firstname." ".$booking->customer->name." | " : "- | "; $tmp .= $booking->travel_country_id ? $booking->travel_country->name." | " : "- | "; $tmp .= $booking->travelagenda_id ? $booking->travel_agenda->name."" : "-"; $customers[$booking->id] = $tmp; } // return TravelAgenda::whereIn('id', $ret)->get()->pluck('name', 'id'); if($data['action'] === "send-customer-mail"){ $value = new Collection(); $value->id = "add"; $value->customers = $customers; $value->message = "Sehr #geehrte/r# #Anrede# #Vorname# #Nachname#,\n\nText ...."; $data['title'] = "E-Mail-Nachricht an Auswahl"; $url = route('requests_send_customer_mail'); $ret = view("customer.mail.modal-mail", compact('data','value', 'url') )->render(); } } return response()->json(['response' => $data, 'html'=>$ret]); }*/ public function sendMail(CustomerMailRepository $customerMailRepository){ $data = Request::all(); $customerMailRepository->sendAndStore($data); if($data['action'] == 'draft'){ \Session()->flash('alert-success', "Entwurf gespeichert!"); }else{ \Session()->flash('alert-success', "Mail gesendet!"); } return back(); } public function replyMail(CustomerMailRepository $customerMailRepository){ $data = Request::all(); $customerMailRepository->replyStore($data); \Session()->flash('alert-success', "Mail gespeichert!"); return back(); } public function getCustomerMails() { $query = CustomerMail::with('booking')->with('customer'); return \DataTables::eloquent($query) ->addColumn('action_edit', function (CustomerMail $customer_mail) { return ''; }) ->addColumn('id', function (CustomerMail $customer_mail) { return ''.$customer_mail->id.''; }) ->addColumn('booking', function (CustomerMail $customer_mail) { $out = $customer_mail->booking->travel_country_id ? $customer_mail->booking->travel_country->name." | " : "- | "; $out .= $customer_mail->booking->travelagenda_id ? $customer_mail->booking->travel_agenda->name."" : "-"; return $out; }) ->addColumn('booking_id', function (CustomerMail $customer_mail) { return ''.$customer_mail->booking_id.''; }) ->addColumn('customer_id', function (CustomerMail $customer_mail) { return ''.$customer_mail->customer_id.''; }) ->addColumn('send', function (CustomerMail $customer_mail) { return $customer_mail->send ? '' : ''; }) ->orderColumn('id', 'id $1') ->orderColumn('booking_id', 'booking_id $1') ->orderColumn('customer_id', 'customer_id $1') ->orderColumn('send', 'send $1') ->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.'%'); } }) ->filterColumn('booking_id', function($query, $keyword) { if($keyword != ""){ $query->where('booking_id', 'LIKE', '%'.$keyword.'%'); } }) ->rawColumns(['action_edit', 'send', 'customer_id', 'booking_id', 'id']) ->make(true); } public function uploadAttachment($id){ $fileRepo = new CustomerFileRepository(new CustomerFile()); if($id === 'tmp'){ $fileRepo->_set('disk', 'customer'); $fileRepo->_set('dir', '/attachment/'.date('Y/m').'/'); $fileRepo->_set('customer_id', NULL); $fileRepo->_set('customer_mail_id', NULL); $fileRepo->_set('identifier', 'tmp'); return $fileRepo->uploadFile(Request::all()); } return Response::json([ 'error' => true, 'code' => 200 ], 200); } public function ajax(){ $data = Request::all(); $ret = ""; $status = false; if(Request::ajax()){ if($data['action'] === 'toggle_important'){ $customer_mail = CustomerMail::find($data['id']); $customer_mail->important = ($customer_mail->important ? false : true); $customer_mail->save(); $status = 'success'; } } return response()->json(['response' => $data, 'html'=>$ret, 'status'=>$status]); } private function getSearchRequests() { if (!Request::get('booking_id')) { return false; } $query = CustomerMail::where('booking_id', '=', Request::get('booking_id')); if (Request::get('customer_mail_dir') == 11) { //draft $query->where('draft', '=', true); }else{ $query->where('dir', '=', Request::get('customer_mail_dir')); //with('lead' } if (Request::get('customer_mail_country')) { $query->where('travel_country_id', '=', Request::get('customer_mail_country')); } return $query; } public function getRequests(){ $query = $this->getSearchRequests(); return \DataTables::eloquent($query) ->addColumn('checkbox', function (CustomerMail $customer_mail) { return '
'; }) ->addColumn('important', function (CustomerMail $customer_mail) { $icon = ($customer_mail->important ? 'ion-md-star' : 'ion-md-star-outline'); return ''; }) ->addColumn('subject', function (CustomerMail $customer_mail) { $icon = $customer_mail->reply_id ? 'ion-ios-redo' : 'ion-ios-mail'; $badge = $customer_mail->is_answer ? 'badge-next' : 'badge-secondary'; $badge = $customer_mail->draft ? 'badge-default' : $badge; $to_icon = $customer_mail->draft ? '' : ''; $action = $customer_mail->draft ? 'edit-customer-mail' : 'show-customer-mail'; $id = $customer_mail->draft ? $customer_mail->id : 'new'; $url = $customer_mail->draft ? route('customer_mail_send_mail') : ''; return ' '.$to_icon.''.$customer_mail->subject.' '.($customer_mail->customer_files->count() ? '  '.$customer_mail->customer_files->count().'' : ''); }) ->addColumn('date', function (CustomerMail $customer_mail) { if($customer_mail->send){ return ' '.$customer_mail->sent_at.''; } return ' '.$customer_mail->sent_at.''; }) ->addColumn('action', function (CustomerMail $customer_mail) { $ret = ''; if(!$customer_mail->draft){ $ret = '    '; } $ret .= ''; return '
'.$ret.'
'; }) /* ->filter(function ($query) { if (request()->has('search.value')) { $query->where('subject', 'like', "%" . request('search.value') . "%"); } if (request()->has('data_table_search')) { $query->where('subject', 'like', "%" . request('data_table_search') . "%"); } })*/ /*->filterColumn('subject', function($query, $keyword) { if($keyword != ""){ $query->whereRaw("subject LIKE ?", '%'.$keyword.'%'); } })*/ ->orderColumn('date', 'sent_at $1') ->orderColumn('subject', 'subject $1') ->orderColumn('important', 'important $1') ->rawColumns(['checkbox', 'important', 'subject', 'date', 'action']) ->make(true); } }