/** * Return quotes's data in a way that can be read by Datatables * * @return Response */ public function getDatatable() { $quotes = Quote::select(); $datatables = \Datatables::of($quotes)->addColumn('deleted_at', function ($quote) { return $quote->deleted_at == null ? '<span class="label label-sm label-success">Active</span>' : '<span class="label label-sm label-danger">Deleted</span>'; })->addColumn('created_at', function ($quote) { return date('F j, Y, g:i a', strtotime($quote->created_at)); })->addColumn('updated_at', function ($quote) { return date('F j, Y, g:i a', strtotime($quote->created_at)); })->addColumn('actions', function ($quote) { return '<a href="' . url('admin/quotes/' . $quote->id . '/edit') . '" class="btn btn-success btn-sm" ><span class="glyphicon glyphicon-pencil"></span> Edit</a>'; }); $filters = \Input::get('filters'); if (!empty($filters)) { $datatables->filter(function ($query) use($filters) { foreach ($filters as $fName => $fValue) { if (!$fValue) { continue; } switch ($fName) { case 'id': $query->where('quote.id', '=', $fValue); break; case 'slug': $query->where('slug', 'LIKE', '%' . $fValue . '%'); break; case 'text': $query->where('text', 'LIKE', '%' . $fValue . '%'); break; case 'created_at_from': $query->where('created_at', '>=', $fValue); break; case 'created_at_to': $query->where('created_at', '<=', $fValue); break; case 'updated_at_from': $query->where('updated_at', '>=', $fValue); break; case 'updated_at_to': $query->where('updated_at', '<=', $fValue); break; case 'deleted': if ($fValue) { if ($fValue == 1) { $query->whereNull('deleted_at'); } if ($fValue == -1) { $query->where('deleted_at', '!=', 'null'); } } break; } } }); } return $datatables->make(true); }