/** * Update a new task: load date and forward to view * * @param Request $request, Task $task * @return view */ public function update(Request $request, Task $task) { $categories = Category::where('is_note', '=', 0)->orderBy('seq')->get(); $priorities = Priority::All(['id', 'name']); $stages = Stage::All(['id', 'name']); $user = User::find($request->user()->id); //get next id $tasks = DB::table('tasks')->leftjoin('categories', 'tasks.category_id', '=', 'categories.id')->join('priorities', 'tasks.priority_id', '=', 'priorities.id')->join('stages', 'tasks.stage_id', '=', 'stages.id')->select('tasks.id as id')->where('user_id', '=', $request->user()->id); //handle stages $ses_stage_id = $request->session()->get('stage_id'); if ($ses_stage_id) { $tasks->where('stage_id', '=', $ses_stage_id); } //handle categories $ses_category_id = $request->session()->get('category_id'); if ($ses_category_id) { $tasks->where('category_id', '=', $ses_category_id); } //handle search $search = $request->session()->get('search'); if (strlen($search) > 0) { $tasks->where(function ($query) use($search) { $query->where('tasks.name', 'like', "%" . $search . "%")->orWhere('tasks.description', 'like', "%" . $search . "%"); }); } //handle filters $filter_deadline = $request->session()->get('filter_deadline'); if ($filter_deadline == 1) { $tasks->where('deadline', '!=', '0000-00-00')->where('deadline', '<=', date('Y-m-d', time())); } //handle sort order $order = $request->session()->get('order'); if (!$order) { $order = 'priority_id'; } //handle sort direction $dir = $request->session()->get('dir'); if (!$dir) { $dir = 'ASC'; } $pagination_number = $request->session()->get('pagination_number'); $tasks = $tasks->orderBy('tasks.' . $order, $dir)->orderBy('deadline', 'ASC')->orderBy('tasks.name', 'ASC')->paginate($pagination_number); $previous_id = 0; $next_id = 0; $counter = 0; $found = false; foreach ($tasks as $temp) { if ($found) { $next_id = $temp->id; break; } if ($temp->id == $task->id) { $found = true; } $counter++; if (!$found) { $previous_id = $temp->id; } } return view('tasks.update', ['categories' => $categories, 'priorities' => $priorities, 'stages' => $stages, 'task' => $task, 'category_id' => False, 'previous_id' => $previous_id, 'next_id' => $next_id, 'counter' => $counter, 'total' => count($tasks), 'page' => $request->session()->get('page'), 'filetab' => $request->filetab])->withTask($task); }