public function myActivitySorting($sort_by, $id) { if (Auth::check()) { $title = 'mypost'; if (Auth::user()->identifier == 1 || Auth::user()->identifier == 2) { $posts = Postjob::where('unique_id', '=', $id)->leftjoin('postactivities', 'postactivities.post_id', '=', 'postjobs.id'); if ($sort_by == 'date') { $posts->orderBy('postactivities.created_at', 'asc')->with('indUser', 'corpUser', 'postActivity', 'taggedUser', 'taggedGroup')->where('postjobs.individual_id', '!=', Auth::user()->induser_id)->paginate(15); } elseif ($sort_by == 'magic-match') { $posts = Postjob::orderBy('created_at', 'asc')->with('indUser', 'corpUser', 'postActivity', 'taggedUser', 'taggedGroup')->where('individual_id', '!=', Auth::user()->induser_id)->get(); $posts = $posts->sortBy(function ($jobPost) { return -$jobPost->magic_match; }); $perPage = 15; $pageStart = \Request::get('page', 1); // Start displaying items from this number; $offSet = $pageStart * $perPage - $perPage; // Get only the items you need using array_slice $itemsForCurrentPage = $posts->slice($offSet, $perPage)->all(); $posts = new LengthAwarePaginator($itemsForCurrentPage, count($posts), $perPage, LengthAwarePaginator::resolveCurrentPage(), array('path' => LengthAwarePaginator::resolveCurrentPath())); } elseif ($sort_by == 'individual') { $posts = Postjob::orderByRaw(DB::raw('CASE WHEN postjobs.individual_id IS NULL THEN "corp" ELSE "ind" END DESC'))->orderBy('id', 'desc')->with('indUser', 'corpUser', 'postActivity', 'taggedUser', 'taggedGroup')->where('post_type', '=', 'job')->where('individual_id', '!=', Auth::user()->induser_id)->paginate(15); } elseif ($sort_by == 'corporate') { $posts = Postjob::orderByRaw(DB::raw('CASE WHEN postjobs.corporate_id IS NULL THEN "ind" ELSE "corp" END ASC'))->orderBy('id', 'desc')->with('indUser', 'corpUser', 'postActivity', 'taggedUser', 'taggedGroup')->where('post_type', '=', 'job')->where('individual_id', '!=', Auth::user()->induser_id)->paginate(15); } else { $posts = Postjob::orderBy('created_at', 'desc')->with('indUser', 'corpUser', 'postActivity', 'taggedUser', 'taggedGroup')->where('post_type', '=', 'job')->where('individual_id', '!=', Auth::user()->induser_id)->paginate(15); } $myActivities = DB::select('(select pa.id,pa.user_id,pa.post_id,"Thanks" as identifier,pa.thanks as activity, pa.thanks_dtTime as time,pj.unique_id, pj.post_title, pj.post_compname from postactivities pa join postjobs pj on pj.id = pa.post_id where pa.user_id=? and pa.thanks = 1) union (select pa.id,pa.user_id,pa.post_id,"Shared" as identifier,pa.share as share, pa.share_dtTime as time,pj.unique_id, pj.post_title, pj.post_compname from postactivities pa join postjobs pj on pj.id = pa.post_id where pa.user_id=? and pa.share = 1) union (select pa.id,pa.user_id,pa.post_id,"Applied" as identifier,pa.apply as activity, pa.apply_dtTime as time,pj.unique_id,pj.post_title, pj.post_compname from postactivities pa join postjobs pj on pj.id = pa.post_id where pa.user_id=? and pa.apply = 1) union (select pa.id,pa.user_id,pa.post_id,"Contacted" as identifier,pa.contact_view as activity,pa.contact_view_dtTime as time,pj.unique_id, pj.post_title, pj.post_compname from postactivities pa join postjobs pj on pj.id = pa.post_id where pa.user_id=? and pa.contact_view = 1) order by time desc', [Auth::user()->id, Auth::user()->id, Auth::user()->id, Auth::user()->id]); $myActivities = collect($myActivities); if (Auth::user()->identifier == 1) { $share_links = Induser::whereRaw('indusers.id in ( select connections.user_id as id from connections where connections.connection_user_id=? and connections.status=1 union select connections.connection_user_id as id from connections where connections.user_id=? and connections.status=1 )', [Auth::user()->induser_id, Auth::user()->induser_id])->get(['id', 'fname'])->lists('fname', 'id'); $share_groups = Group::leftjoin('groups_users', 'groups_users.group_id', '=', 'groups.id')->where('groups.admin_id', '=', Auth::user()->induser_id)->orWhere('groups_users.user_id', '=', Auth::user()->induser_id)->groupBy('groups.id')->get(['groups.id as id', 'groups.group_name as name'])->lists('name', 'id'); } return view('pages.mypost', compact('posts', 'title', 'myActivities', 'share_groups', 'share_links')); } } else { return redirect('login'); } }