Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function paginate(Request $request)
- {
- $params = $request->all();
- $department = Department::with('company', 'establishment', 'location');
- $path = 'department';
- if (Auth()->user()->isCompanyAdmin() && !Auth()->user()->isNSUser())
- {
- $department = $department->where('departments.company_id', Auth()->user()->company_id);
- }
- if ($request->input('columns') !== null) {
- foreach ($request->input('columns') as $index => $column) {
- if ($column['searchable'] === 'true') {
- $value = $column['search']['value'];
- if($params['draw'] != 1 && $value == null)
- {
- $request->session()->forget($path . '.' . $index);
- }
- if(strlen($value) > 0) {
- $request->session()->put($path . '.' . $index, $value);
- } else {
- if($params['draw'] == 1) {
- $value = $request->session()->get($path . '.' . $index);
- }
- }
- if (strlen($value) > 0 && strcmp($value, 'null') != 0) {
- if (strpos($column['data'], '.') > -1) {
- $table = explode('.', $column['name'])[0];
- $field = explode('.', $column['data'])[1];
- if ($field == '[]') {
- $field = explode('.', $column['data'])[2];
- }
- $name = explode('.', $params['columns'][$index]['data'])[0];
- $department = $department->whereHas($name, function ($q) use ($table, $field, $value) {
- $q->where($table . '.' . $field, 'LIKE', '%' . $value . '%');
- });
- } else {
- $department = $department->where('departments.' . $column['data'], 'LIKE', '%' . $value . '%');
- }
- }
- }
- }
- }
- $params['order'] = $params['order'][0];
- if(isset($params['order']['column']) && isset($params['order']['dir'])) {
- if($params['draw'] == 1) {
- $column_name = $request->session()->get($path . '.order.column');
- $order = $request->session()->get($path . '.order.dir');
- if(strlen($column_name) == 0) {
- $column_name = $params['columns'][$params['order']['column']]['name'];
- }
- if(strlen($order) == 0) {
- $order = $params['order']['dir'];
- }
- } else {
- $column_name = $params['columns'][$params['order']['column']]['name'];
- $order = $params['order']['dir'];
- $request->session()->put($path . '.order.column', $column_name);
- $request->session()->put($path . '.order.dir', $order);
- }
- if (strpos($column_name, '.') === false) {
- $department = $department->orderBy($column_name, $order);
- } else {
- $table = explode('.', $column_name)[0];
- $name = "";
- foreach($params['columns'] as $index => $column) {
- if($column_name == $column['name']) {
- $name = explode('.', $params['columns'][$index]['data'])[0];
- $request->session()->put($path . '.order.index', $index);
- }
- }
- $department = $department->join($table, 'departments.' . $name . '_id', '=', $table . '.id')
- ->orderBy($table . '.name', $order)->select('departments.*');
- }
- }
- $perPage = 20;
- if(!empty($params['length'])) {
- $perPage = $params['length'];
- $request->session()->put($path.'.perPage', $perPage);
- }
- $page = 1;
- if ($request->input('start') > 0)
- {
- $page = ($request->input('start') / $perPage) + 1;
- }
- if($params['draw'] == 1) {
- $currentPage = session()->get($path . '.currentPage');
- if(strlen($currentPage) > 0) {
- $page = $currentPage;
- }
- }
- session()->put($path . '.currentPage', $page);
- Paginator::currentPageResolver(function() use ($page) {
- return $page;
- });
- $department = $department->paginate($perPage);
- return response($department)->header('X-Total-Count',$department->total());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement