From 15e9ca1d910a5eeca33025d3802ed8b6554339c4 Mon Sep 17 00:00:00 2001 From: Supan Adit Pratama Date: Wed, 24 Jun 2020 20:13:34 +0700 Subject: [PATCH] Todo List and item --- app/Http/Controllers/TodoController.php | 121 ++++++++- resources/views/home.blade.php | 335 ++++++++++++++++++++++-- routes/web.php | 11 + 3 files changed, 444 insertions(+), 23 deletions(-) diff --git a/app/Http/Controllers/TodoController.php b/app/Http/Controllers/TodoController.php index 1c03ff4..4a2aa51 100755 --- a/app/Http/Controllers/TodoController.php +++ b/app/Http/Controllers/TodoController.php @@ -11,9 +11,15 @@ class TodoController extends Controller return view('home'); } + // Todo public function todoList(Request $request) { - return \App\Todo::where('user_id', $request->session()->get('user'))->get(); + $search = $request->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) @@ -55,13 +61,13 @@ class TodoController extends Controller public function todoView(Request $request, $id) { - $model = \App\Todo::find($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->with('todo_items'); + return $model; } } @@ -84,4 +90,113 @@ class TodoController extends Controller } } } + // 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 } diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index ee07cd6..8fa1716 100755 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -9,7 +9,7 @@ @endsection @section('top-button') - @endsection @@ -25,44 +25,131 @@ @section('content')
- -
-
-
- -
-

Alexander Pierce

-
Founder & CEO
-
-
+ +
+
+
-