middleware(['admin', '2fa']); $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, $action=false) { $data = Request::all(); if($action === 'move-mail'){ $customer_mail = CustomerMail::findOrFail($id); $data['subdir'] = isset($data['subdir']) && $data['subdir'] ? $data['subdir'] : null; $customer_mail->dir = $data['dir']; $customer_mail->subdir = $data['subdir']; $customer_mail->save(); } if($action === 'move-mail-fewo'){ $customer_mail = CustomerFewoMail::findOrFail($id); $data['subdir'] = isset($data['subdir']) && $data['subdir'] ? $data['subdir'] : null; $customer_mail->dir = $data['dir']; $customer_mail->subdir = $data['subdir']; $customer_mail->save(); } if($action === 'forward_fewo-email'){ $customer_mail = CustomerFewoMail::findOrFail($id); $customerMailFewoRepo = new CustomerFewoMailRepository($customer_mail); $customerMailFewoRepo->forwardMail($customer_mail, $data); \Session()->flash('alert-success', __('E-Mail weitergeleitet')); } if($action === 'forward_email'){ $customer_mail = CustomerMail::findOrFail($id); $this->customerMailRepo->forwardMail($customer_mail, $data); \Session()->flash('alert-success', __('E-Mail weitergeleitet')); } return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function delete($id){ $customer_mail = CustomerMail::find($id); $customer_mail->dir = 12; $customer_mail->subdir = 0; $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()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function replyMail(CustomerMailRepository $customerMailRepository){ $data = Request::all(); $customerMailRepository->replyStore($data); \Session()->flash('alert-success', "Mail gespeichert!"); return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function getEmailTemplates() { $query = EmailTemplate::with('email_template_dir')->select('email_templates.*')->where('active', '=', true); if(Request::get('filter_email_templates_directory') != ""){ $query->where('email_template_dir_id', '=', Request::get('filter_email_templates_directory')); } return \DataTables::eloquent($query) ->addColumn('action', function (EmailTemplate $emailTemplate) { return ''; }) ->addColumn('email_template_dir.name', function (EmailTemplate $emailTemplate) { return $emailTemplate->email_template_dir ? ''.$emailTemplate->email_template_dir->name.'' : ' '; }) ->orderColumn('id', 'id $1') ->orderColumn('subject', 'subject $1') ->orderColumn('email_template_dir.name', 'email_template_dir.name $1') ->orderColumn('message', 'message $1') ->filterColumn('id', function($query, $keyword) { if($keyword != ""){ $query->where('id', 'LIKE', '%'.$keyword.'%'); } }) ->filterColumn('subject', function($query, $keyword) { if($keyword != ""){ $query->where('name', 'LIKE', '%'.$keyword.'%'); $query->OrWhere('subject', 'LIKE', '%'.$keyword.'%'); $query->OrWhere('message', 'LIKE', '%'.$keyword.'%'); } }) ->rawColumns(['action', 'email_template_dir.name']) ->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() && isset($data['action'])){ if($data['action'] === 'load_preview_mail'){ $booking = Booking::findOrFail($data['booking_id']); $ret = Placeholder::replaceBooking($booking, $data['content']); $data['subject'] = Placeholder::replaceBooking($booking, $data['subject']); $status = 'success'; } if($data['action'] === 'toggle_important'){ $customer_mail = CustomerMail::find($data['id']); $customer_mail->important = ($customer_mail->important ? false : true); $customer_mail->save(); $status = 'success'; } if($data['action'] === 'load_email_template'){ $email_template = EmailTemplate::find($data['id']); $ret = $email_template->message; $data['subject'] = $email_template->subject; $status = 'success'; } if($data['action'] === 'delete_mail_attachment'){ $customer_file = CustomerFile::find($data['id']); $fileRepo = new CustomerFileRepository($customer_file); $fileRepo->_set('disk', 'customer'); $ret = $fileRepo->delete(); $status = 'success'; } if($data['action'] === 'add_attachment'){ $arrContextOptions=array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false, ), ); $contents = file_get_contents($data['target'], false, stream_context_create($arrContextOptions)); $mine = Util::getMimeFromHeader($http_response_header); $extension = Util::getExtensionFromMime($mine); $fileRepo = new CustomerFileRepository(new CustomerFile()); $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'); $fileRepo->_set('originalName', $data['name']); $fileRepo->_set('mine', $mine); $fileRepo->_set('extension', $extension); return $fileRepo->storeFile($contents); } } 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)->where('dir', '!=', 12); }else{ $query->where('dir', '=', Request::get('customer_mail_dir')); //with('lead' } if (Request::get('customer_mail_subdir')) { $query->where('subdir', '=', Request::get('customer_mail_subdir')); } 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 ? '' : ''; $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') : ''; $deep = $customer_mail->customer_mail_deep(); for ($i=1; $i < $deep; $i++) { $icon .= ''; } return ' '.$to_icon.''.$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); } }