/** * Process datatables ajax request. * * @return \Illuminate\Http\JsonResponse */ public function search() { $domains = Domain::select('domains.*', 'contacts.name as contacts_name')->leftJoin('contacts', 'contacts.id', '=', 'domains.contact_id'); return Datatables::of($domains)->addColumn('actions', function ($domain) { $actions = Form::open(['route' => ['admin.domains.destroy', $domain->id], 'method' => 'DELETE', 'class' => 'form-inline']); $actions .= ' <a href="domains/' . $domain->id . '" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-eye-open"></i> ' . trans('misc.button.show') . '</a> '; $actions .= ' <a href="domains/' . $domain->id . '/edit" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> ' . trans('misc.button.edit') . '</a> '; $actions .= Form::button('<i class="glyphicon glyphicon-remove"></i> ' . trans('misc.button.delete'), ['type' => 'submit', 'class' => 'btn btn-danger btn-xs']); $actions .= Form::close(); return $actions; })->make(true); }
/** * Export listing to CSV format. * * @param string $format * * @return \Illuminate\Http\Response */ public function export($format) { $auth_account = $this->auth_user->account; if ($auth_account->isSystemAccount()) { $domains = Domain::all(); } else { $domains = Domain::select('domains.*')->leftJoin('contacts', 'contacts.id', '=', 'domains.contact_id')->leftJoin('accounts', 'accounts.id', '=', 'contacts.account_id')->where('accounts.id', '=', $auth_account->id); } if ($format === 'csv') { $columns = ['contact' => 'Contact', 'domain' => 'Domain name', 'enabled' => 'Status']; $output = '"' . implode('","', $columns) . '"' . PHP_EOL; foreach ($domains as $domain) { $row = [$domain->contact->name . ' (' . $domain->contact->reference . ')', $domain['name'], $domain['enabled'] ? 'Enabled' : 'Disabled']; $output .= '"' . implode('","', $row) . '"' . PHP_EOL; } return response(substr($output, 0, -1), 200)->header('Content-Type', 'text/csv')->header('Content-Disposition', 'attachment; filename="Domains.csv"'); } return Redirect::route('admin.domains.index')->with('message', "The requested format {$format} is not available for exports"); }