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 CustomerFewoMail(); $id = 'new'; }else{ $customer_mail = CustomerFewoMail::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(); $customer_mail = CustomerFewoMail::findOrFail($id); if($action === 'move-mail'){ $data['subdir'] = isset($data['subdir']) && $data['subdir'] ? $data['subdir'] : null; $customer_mail->dir = $data['dir']; $customer_mail->subdir = $data['subdir']; $customer_mail->save(); } return back(); } public function delete($id){ $customer_mail = CustomerFewoMail::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()) { /* if ($data['action'] === "new-customer-mail" || $data['action'] === "reply-customer-mail" || $data['action'] === "show-customer-mail" || $data['action'] === "edit-customer-mail"){ $data['customers'] = []; if ($data['action'] === "new-customer-mail" && isset($data['travel_user_booking_fewo_id']) && $TravelUserBookingFewo = TravelUserBookingFewo::find($data['travel_user_booking_fewo_id'])) { $tmp = []; $tmp['email'] = $TravelUserBookingFewo->travel_user ? $TravelUserBookingFewo->travel_user->email : ""; $tmp['name'] = $TravelUserBookingFewo->travel_user ? $TravelUserBookingFewo->travel_user->first_name . " " . $TravelUserBookingFewo->travel_user->last_name . " | " : "- | "; $tmp['name'] .= $TravelUserBookingFewo->fewo_lodging_id ? $TravelUserBookingFewo->fewo_lodging->name . " | " : "- | "; $data['customers'][$TravelUserBookingFewo->id] = $tmp; } $ret = CustomerFewoMailRepository::loadModal($data); }*/ if($data['action'] === "modal-upload-lead-file") { $ret = view("lead.upload_modal", compact('data'))->render(); } if($data['action'] === "upload-lead-file"){ if($data['lead_id']){ $bookingFileRepo = new LeadFileRepository(new LeadFile()); $bookingFileRepo->_set('disk', 'lead'); $bookingFileRepo->_set('lead_id', $data['lead_id']); $bookingFileRepo->_set('dir', '/files/'.date('Y/m').'/'); $bookingFileRepo->_set('identifier', 'lead'); return $bookingFileRepo->uploadFile(Request::all()); } } } return response()->json(['response' => $data, 'html'=>$ret]); } public function sendMail(CustomerFewoMailRepository $customerFewoMailRepository){ $data = Request::all(); $customerFewoMailRepository->sendAndStore($data); if($data['action'] == 'draft'){ \Session()->flash('alert-success', "Entwurf gespeichert!"); }else{ \Session()->flash('alert-success', "Mail gesendet!"); } return back(); } public function replyMail(CustomerFewoMailRepository $customerFewoMailRepository){ $data = Request::all(); $customerFewoMailRepository->replyStore($data); \Session()->flash('alert-success', "Mail gespeichert!"); return back(); } /*public function getCustomerFewoMails() { $query = CustomerFewoMail::with('booking')->with('customer')->select('customer_mails.*'); return \DataTables::eloquent($query) ->addColumn('action_edit', function (CustomerFewoMail $customer_mail) { return ''; }) ->addColumn('id', function (CustomerFewoMail $customer_mail) { return ''.$customer_mail->id.''; }) ->addColumn('booking', function (CustomerFewoMail $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('travel_user_booking_fewo_id', function (CustomerFewoMail $customer_mail) { return ''.$customer_mail->travel_user_booking_fewo_id.''; }) ->addColumn('customer_id', function (CustomerFewoMail $customer_mail) { return ''.$customer_mail->customer_id.''; }) ->addColumn('send', function (CustomerFewoMail $customer_mail) { return $customer_mail->send ? '' : ''; }) ->orderColumn('id', 'id $1') ->orderColumn('travel_user_booking_fewo_id', 'travel_user_booking_fewo_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('travel_user_booking_fewo_id', function($query, $keyword) { if($keyword != ""){ $query->where('travel_user_booking_fewo_id', 'LIKE', '%'.$keyword.'%'); } }) ->rawColumns(['action_edit', 'send', 'customer_id', 'travel_user_booking_fewo_id', 'id']) ->make(true); }*/ 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('name', 'name $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 CustomerFewoFileRepository(new CustomerFewoFile()); if($id === 'tmp'){ $fileRepo->_set('disk', 'travel_user'); $fileRepo->_set('dir', '/attachment/'.date('Y/m').'/'); $fileRepo->_set('travel_user_id', NULL); $fileRepo->_set('customer_fewo_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 = CustomerFewoMail::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 = CustomerFewoFile::find($data['id']); $fileRepo = new CustomerFewoFileRepository($customer_file); $fileRepo->_set('disk', 'travel_user'); $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 CustomerFewoFileRepository(new CustomerFewoFile()); $fileRepo->_set('disk', 'travel_user'); $fileRepo->_set('dir', '/attachment/'.date('Y/m').'/'); $fileRepo->_set('travel_user_id', NULL); $fileRepo->_set('customer_fewo_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('travel_user_booking_fewo_id')) { return false; } $query = CustomerFewoMail::where('travel_user_booking_fewo_id', '=', Request::get('travel_user_booking_fewo_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 (CustomerFewoMail $customer_mail) { return '
'; }) ->addColumn('important', function (CustomerFewoMail $customer_mail) { $icon = ($customer_mail->important ? 'ion-md-star' : 'ion-md-star-outline'); return ''; }) ->addColumn('subject', function (CustomerFewoMail $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_fewo_mail_send_mail') : ''; return ' '.$to_icon.''.$customer_mail->subject.' '.($customer_mail->customer_fewo_files->count() ? '  '.$customer_mail->customer_fewo_files->count().'' : ''); }) ->addColumn('date', function (CustomerFewoMail $customer_mail) { if($customer_mail->send){ return ' '.$customer_mail->sent_at.''; } return ' '.$customer_mail->sent_at.''; }) ->addColumn('action', function (CustomerFewoMail $customer_mail) { $ret = ''; if(!$customer_mail->draft){ $ret = '    '; } $ret .= ''; return '
'.$ret.'
'; }) ->orderColumn('date', 'sent_at $1') ->orderColumn('subject', 'subject $1') ->orderColumn('important', 'important $1') ->rawColumns(['checkbox', 'important', 'subject', 'date', 'action']) ->make(true); } }