diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 01c4b50..d37b83c 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -38,17 +38,15 @@ class DashboardController extends Controller $incomplete_count = $data['incomplete_count']; // Convert all todo to Todo model - $projects = $this->projects(); - $project_count = $projects['project_count']; - $ave_todo_count = $projects['ave_todo_count']; +// $projects = $this->projects(); +// $project_count = $projects['project_count']; +// $ave_todo_count = $projects['ave_todo_count']; $todo_completed_count = $this->all_completed_todos()['completed_count']; return view('dashboard.index', compact( 'todos', 'incomplete_count', - 'project_count', - 'ave_todo_count', 'todo_completed_count' )); } diff --git a/app/Http/Livewire/Dashboard/AveTodoPerProject.php b/app/Http/Livewire/Dashboard/AveTodoPerProject.php new file mode 100644 index 0000000..e47a69b --- /dev/null +++ b/app/Http/Livewire/Dashboard/AveTodoPerProject.php @@ -0,0 +1,40 @@ +user(); + $projects = $user->projects; + $project_count = $projects->count(); + + // Average number of todos per project + $ave_todo_count = function ($projects) { + $todo_count = 0; + foreach ($projects as $project) { + $todo_count += $project->todos->count(); + } + return $todo_count / $projects->count(); + }; + + $this->ave_todo_count = $ave_todo_count($projects); + } + public function render() + { + return view('livewire.dashboard.ave-todo-per-project'); + } +} diff --git a/app/Http/Livewire/Dashboard/CompletedTodo.php b/app/Http/Livewire/Dashboard/CompletedTodo.php new file mode 100644 index 0000000..a336fd3 --- /dev/null +++ b/app/Http/Livewire/Dashboard/CompletedTodo.php @@ -0,0 +1,29 @@ +todo_completed_count = DB::table('todos') + ->join('project_todo', 'todos.id', '=', 'project_todo.todo_id') + ->join('project_user', 'project_todo.project_id', '=', 'project_user.project_id') + ->where('project_user.user_id', '=', Auth::user()->id) + ->whereDate('due_end', '<=', strtotime('today midnight')) + ->whereNotNull('completed_at') + ->count(); + } + + public function render() + { + return view('livewire.dashboard.completed-todo'); + } +} diff --git a/app/Http/Livewire/Dashboard/IncompleteTodo.php b/app/Http/Livewire/Dashboard/IncompleteTodo.php new file mode 100644 index 0000000..fbde930 --- /dev/null +++ b/app/Http/Livewire/Dashboard/IncompleteTodo.php @@ -0,0 +1,28 @@ +incomplete_count = DB::table('todos') + ->join('project_todo', 'todos.id', '=', 'project_todo.todo_id') + ->join('project_user', 'project_todo.project_id', '=', 'project_user.project_id') + ->where('project_user.user_id', '=', Auth::user()->id) + ->whereDate('due_end', '<=', strtotime('today midnight')) + ->whereNull('completed_at') + ->count(); + + } + public function render() + { + return view('livewire.dashboard.incomplete-todo'); + } +} diff --git a/app/Http/Livewire/Dashboard/ProjectCount.php b/app/Http/Livewire/Dashboard/ProjectCount.php new file mode 100644 index 0000000..f15bab5 --- /dev/null +++ b/app/Http/Livewire/Dashboard/ProjectCount.php @@ -0,0 +1,20 @@ +project_count = auth()->user()->projects()->count(); + } + + public function render() + { + return view('livewire.dashboard.project-count'); + } +} diff --git a/app/Http/Livewire/Dashboard/Stats.php b/app/Http/Livewire/Dashboard/Stats.php new file mode 100644 index 0000000..60568da --- /dev/null +++ b/app/Http/Livewire/Dashboard/Stats.php @@ -0,0 +1,13 @@ + 'endBreak', ]; + public function resetPomo() + { + $this->time = 25 * 60; + $this->countdown = false; + $this->break = false; + } + public function endBreak($time = null) { $this->time = $time ?? $this->time; diff --git a/app/Http/Livewire/Todo/TodaysTodo.php b/app/Http/Livewire/Todo/TodaysTodo.php new file mode 100644 index 0000000..3d19265 --- /dev/null +++ b/app/Http/Livewire/Todo/TodaysTodo.php @@ -0,0 +1,52 @@ + 'loadMore', + ]; + + public function loadMore() + { + $this->perPage += 5; + } + + public function render() + { + $todos = DB::table('todos') + ->join('project_todo', 'todos.id', '=', 'project_todo.todo_id') + ->join('project_user', 'project_todo.project_id', '=', 'project_user.project_id') + ->where('project_user.user_id', '=', auth()->user()->id) + ->whereDate('due_end', '<=', strtotime('today midnight')) + ->whereNull('completed_at') + ->orderBy('due_end', 'asc') + ->paginate($this->perPage); + + + $todos->transform(function ($todo) { + return Todo::find($todo->id); + }); + + + $incomplete_count = DB::table('todos') + ->join('project_todo', 'todos.id', '=', 'project_todo.todo_id') + ->join('project_user', 'project_todo.project_id', '=', 'project_user.project_id') + ->where('project_user.user_id', '=', auth()->user()->id) + ->whereDate('due_end', '<=', strtotime('today midnight')) + ->whereNull('completed_at') + ->count(); + + return view('livewire.todo.todays-todo', [ + 'todos' => $todos, + 'incomplete_count' => $incomplete_count, + ]); + } +} diff --git a/resources/views/dashboard/index.blade.php b/resources/views/dashboard/index.blade.php index ce303a5..43b276b 100644 --- a/resources/views/dashboard/index.blade.php +++ b/resources/views/dashboard/index.blade.php @@ -5,158 +5,10 @@ - -
- {{ $incomplete_count }} -
-- {{ $todo_completed_count }} -
-- {{ $ave_todo_count }} -
-- {{ $project_count }} -
-+ {{ $ave_todo_count }} +
++ {{ $todo_completed_count }} +
++ {{ $incomplete_count }} +
++ {{ $project_count }} +
+