query('search'); $model = \App\Todo::with('todoItems')->where('user_id', $request->session()->get('user')); if ($search != null && $search != "") { $model = $model->where("name", "like", "%$search%")->orWhere("description", "like", "%$search%"); } return $model->get(); } public function todoManipulate(Request $request, $id) { $todo = new \App\Todo(); if ($id != null) { $todo = \App\Todo::find($id); } $todo['name'] = $request->input('name'); $todo['description'] = $request->input('description'); $todo['user_id'] = $request->session()->get('user'); if ($todo->save()) { return response()->json(array( "message" => "Success " . ($id != null ? "edit" : "create") . " todo" ), 200); } else { return response()->json(array( "message" => "Failed create todo" ), 500); } } public function todoCreate(Request $request) { $request->validate([ "name" => "required", ]); return $this->todoManipulate($request, null); } public function todoEdit(Request $request) { $request->validate([ "name" => "required", "id" => "required" ]); return $this->todoManipulate($request, $request->input('id')); } public function todoView(Request $request, $id) { $model = \App\Todo::with('todoItems')->find($id); if ($model == null) { return response()->json(array( "message" => "There's no todo with id $id" ), 400); } else { return $model; } } public function todoDelete(Request $request, $id) { $model = \App\Todo::find($id); if ($model == null) { return response()->json(array( "message" => "There's no todo with id $id" ), 400); } else { if ($model->delete()) { return response()->json(array( "message" => "Success delete todo" ), 200); } else { return response()->json(array( "message" => "Failed delete todo" ), 500); } } } // End Todo // Todo Items public function todoItemList(Request $request, $todo_id) { $search = $request->query('search'); $model = \App\TodoItem::where('todo_id', $todo_id); if ($search != null && $search != "") { $model = $model->where("name", "like", "%$search%"); } return $model->get(); } public function todoItemManipulate(Request $request, $id) { $todo = new \App\TodoItem(); if ($id != null) { $todo = \App\TodoItem::find($id); } $todo['name'] = $request->input('name'); $todo['complete'] = ($request->input('complete') != null) ? $request->input('complete') : false; $todo['todo_id'] = $request->input('todo_id'); if ($todo->save()) { return response()->json(array( "message" => "Success " . ($id != null ? "edit" : "create") . " todo item" ), 200); } else { return response()->json(array( "message" => "Failed create todo item" ), 500); } } public function todoItemCreate(Request $request) { $request->validate([ "name" => "required", "todo_id" => "required", ]); return $this->todoItemManipulate($request, null); } public function todoItemEdit(Request $request) { $request->validate([ "name" => "required", "id" => "required", "todo_id" => "required", ]); return $this->todoItemManipulate($request, $request->input('id')); } public function todoItemView(Request $request, $id) { $model = \App\TodoItem::find($id); if ($model == null) { return response()->json(array( "message" => "There's no todo item with id $id" ), 400); } else { return $model; } } public function todoItemDelete(Request $request, $id) { $model = \App\TodoItem::find($id); if ($model == null) { return response()->json(array( "message" => "There's no todo item with id $id" ), 400); } else { if ($model->delete()) { return response()->json(array( "message" => "Success delete todo item" ), 200); } else { return response()->json(array( "message" => "Failed delete todo item" ), 500); } } } public function todoItemMark(Request $request, $id, $complete = true) { $todo = \App\TodoItem::find($id); $todo['complete'] = $complete; if ($todo->save()) { return response()->json(array( "message" => "Success mark " . ($complete ? "complete" : "not complete") ), 200); } else { return response()->json(array( "message" => "Failed mark todo item" ), 500); } } public function todoItemMarkComplete(Request $request, $id) { return $this->todoItemMark($request, $id, true); } public function todoItemMarkNotComplete(Request $request, $id) { return $this->todoItemMark($request, $id, false); } // End Todo Items }