From 813ed7e99e95dbe049209b674bea0b1aebe9c5b3 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Tue, 9 Jun 2020 08:22:17 +0800 Subject: [PATCH] minor fixes --- .../Abstracts/AbstractControllerLogic.php | 2 +- .../Services/CreatesProjectWorkFlow.php | 2 +- .../ListTasksControllerLogic.php | 4 ++- .../MilestoneTaskOrderController.php | 21 +++++++++++++++ .../Milestones/MilestoneOrderController.php | 22 ++++++++++++++++ .../Controllers/Tasks/TaskOrderController.php | 26 +++++++++++++++++++ app/Models/Milestone.php | 2 +- app/Models/Project.php | 2 +- app/Models/User.php | 5 ++++ .../milestone/elements/MilestoneComponent.vue | 9 ++++++- .../elements/MilestoneTaskComponent.vue | 23 ++++++++++++++++ routes/api.php | 3 +++ 12 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 app/Http/Controllers/MilestoneTasks/MilestoneTaskOrderController.php create mode 100644 app/Http/Controllers/Milestones/MilestoneOrderController.php create mode 100644 app/Http/Controllers/Tasks/TaskOrderController.php diff --git a/app/Classes/General/Abstracts/AbstractControllerLogic.php b/app/Classes/General/Abstracts/AbstractControllerLogic.php index 59ffe45..eca7301 100644 --- a/app/Classes/General/Abstracts/AbstractControllerLogic.php +++ b/app/Classes/General/Abstracts/AbstractControllerLogic.php @@ -52,7 +52,7 @@ abstract class AbstractControllerLogic return $this->logic($request); } catch (ErrorException $exception){ - dd($exception->getMessage()); + dd($exception); return (new ApiResponseObject($this->getNotificationTitle().' failed', $exception->getMessage(), $exception->getCode()))->handler(); } diff --git a/app/Classes/Modules/Projects/Services/CreatesProjectWorkFlow.php b/app/Classes/Modules/Projects/Services/CreatesProjectWorkFlow.php index 85cde06..ab5db9e 100644 --- a/app/Classes/Modules/Projects/Services/CreatesProjectWorkFlow.php +++ b/app/Classes/Modules/Projects/Services/CreatesProjectWorkFlow.php @@ -30,7 +30,7 @@ class CreatesProjectWorkFlow public function execute($project) { $first = true; - foreach($this->listsMilestones->handler(['project_type' => $project->type_id]) as $milestone){ + foreach($this->listsMilestones->handler(['project_type' => $project->type_id, 'order_by' => json_decode(json_encode(['column' => 'order', 'DESC' => false]))]) as $milestone){ $newMilestone = ProjectMilestone::create(['project_id' => $project->id, 'name' => $milestone->name, 'order' => $milestone->order, 'complete' => false]); foreach($milestone->tasks as $task){ /** @var Task $newTask */ diff --git a/app/Classes/Modules/Tasks/ControllerLogic/ListTasksControllerLogic.php b/app/Classes/Modules/Tasks/ControllerLogic/ListTasksControllerLogic.php index 477ddf5..78f5f94 100644 --- a/app/Classes/Modules/Tasks/ControllerLogic/ListTasksControllerLogic.php +++ b/app/Classes/Modules/Tasks/ControllerLogic/ListTasksControllerLogic.php @@ -10,6 +10,7 @@ use App\Http\Resources\TaskResource; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class ListTasksControllerLogic extends AbstractControllerLogic { @@ -53,8 +54,9 @@ class ListTasksControllerLogic extends AbstractControllerLogic $this->canListTasks->passes(); - $query = $this->listsTasks->execute($this->listsTasks->deserializeFilters($request->input('filters'))); +// $query = $this->listsTasks->execute($this->listsTasks->deserializeFilters($request->input('filters'))); + $query = Auth::user()->tasks->where('status', 7)->where('active', true); return $this->collectionResponse(TaskResource::collection($query)); } catch (\Exception $exception){ diff --git a/app/Http/Controllers/MilestoneTasks/MilestoneTaskOrderController.php b/app/Http/Controllers/MilestoneTasks/MilestoneTaskOrderController.php new file mode 100644 index 0000000..edf3562 --- /dev/null +++ b/app/Http/Controllers/MilestoneTasks/MilestoneTaskOrderController.php @@ -0,0 +1,21 @@ +moveOrderUp() : $milestoneTask->moveOrderDown(); + + return (new ApiResponseObject('Task Order Changed Successfully', + 'You have successfully changed the task order', + HttpStatus::OK_WITH_MESSAGE, []))->handler(); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Milestones/MilestoneOrderController.php b/app/Http/Controllers/Milestones/MilestoneOrderController.php new file mode 100644 index 0000000..6019f41 --- /dev/null +++ b/app/Http/Controllers/Milestones/MilestoneOrderController.php @@ -0,0 +1,22 @@ +moveOrderUp() : $milestone->moveOrderDown(); + + return (new ApiResponseObject('Milestone Order Changed Successfully', + 'You have successfully changed the milestone order', + HttpStatus::OK_WITH_MESSAGE, []))->handler(); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Tasks/TaskOrderController.php b/app/Http/Controllers/Tasks/TaskOrderController.php new file mode 100644 index 0000000..78ee113 --- /dev/null +++ b/app/Http/Controllers/Tasks/TaskOrderController.php @@ -0,0 +1,26 @@ +trackers()->attach(Auth::user()->getAuthIdentifier(), ['time_start' => Carbon::now()]); + + return (new ApiResponseObject('Timer Started Successfully', + 'You have successfully started the task timer', + HttpStatus::OK_WITH_MESSAGE, []))->handler(); + } + +} \ No newline at end of file diff --git a/app/Models/Milestone.php b/app/Models/Milestone.php index 591c9f5..bd1c68c 100644 --- a/app/Models/Milestone.php +++ b/app/Models/Milestone.php @@ -84,7 +84,7 @@ class Milestone extends AbstractModel implements Sortable **/ public function tasks(): HasMany { - return $this->HasMany(MilestoneTask::class, 'milestone_id', 'id'); + return $this->HasMany(MilestoneTask::class, 'milestone_id', 'id')->orderBy('order'); } } diff --git a/app/Models/Project.php b/app/Models/Project.php index 311d40e..61321d7 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -98,7 +98,7 @@ class Project extends AbstractModel } public function tasks(): hasManyThrough { - return $this->hasManyThrough(Task::class, ProjectMilestone::class, 'project_id', 'milestone_id'); + return $this->hasManyThrough(Task::class, ProjectMilestone::class, 'project_id', 'milestone_id')->orderBy('order'); } protected static function boot() { diff --git a/app/Models/User.php b/app/Models/User.php index f6cd2e6..ecf95f8 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -71,4 +71,9 @@ class User extends AbstractModel implements public function passwordReset(): HasMany { return $this->hasMany(PasswordReset::class, 'user_id', 'id'); } + + public function tasks() + { + return $this->morphToMany(Task::class, 'assignee', 'task_assignees', 'assignee_id', 'assignment_id'); + } } diff --git a/resources/assets/vue/components/milestone/elements/MilestoneComponent.vue b/resources/assets/vue/components/milestone/elements/MilestoneComponent.vue index de20833..fae5bf2 100644 --- a/resources/assets/vue/components/milestone/elements/MilestoneComponent.vue +++ b/resources/assets/vue/components/milestone/elements/MilestoneComponent.vue @@ -14,7 +14,8 @@
- {{milestone.order}} + +
@@ -105,6 +106,7 @@ }, data() { return { + section: 'milestoneSection', milestone: this.data, } }, @@ -112,6 +114,11 @@ 'data': function() { this.milestone = this.data; } + }, + methods:{ + successHandler(){ + this.updateList(); + } } } diff --git a/resources/assets/vue/components/milestoneTask/elements/MilestoneTaskComponent.vue b/resources/assets/vue/components/milestoneTask/elements/MilestoneTaskComponent.vue index e56a172..49bf4c2 100644 --- a/resources/assets/vue/components/milestoneTask/elements/MilestoneTaskComponent.vue +++ b/resources/assets/vue/components/milestoneTask/elements/MilestoneTaskComponent.vue @@ -3,6 +3,23 @@
+
+
+
+
+ Order +
+
+
+
+
+
+ + +
+
+
+
@@ -64,6 +81,7 @@ }, data() { return { + section: 'milestoneSection', milestoneTask: this.data, } }, @@ -71,6 +89,11 @@ 'data': function() { this.milestoneTask = this.data; } + }, + methods:{ + successHandler(){ + this.updateList(); + } } } diff --git a/routes/api.php b/routes/api.php index 321682f..9ec8820 100644 --- a/routes/api.php +++ b/routes/api.php @@ -23,6 +23,9 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function Route::post('task/{id}/timer/stop', 'Tasks\TimeTrackerController@stop')->name('task.timer.stop'); Route::post('task/{id}/complete', 'Tasks\TimeTrackerController@completeTask')->name('task.complete'); + Route::post('milestone/{id}/{type}', 'Milestones\MilestoneOrderController@update')->name('milestone.order'); + Route::post('milestone/task/{id}/{type}', 'MilestoneTasks\MilestoneTaskOrderController@update')->name('milestone.task.order'); + require __DIR__ . '/crud.php'; });