minor fixes

This commit is contained in:
omair saleh
2020-06-09 08:22:17 +08:00
parent 630a6e6364
commit 813ed7e99e
12 changed files with 115 additions and 6 deletions
@@ -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();
}
@@ -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 */
@@ -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){
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Controllers\MilestoneTasks;
use App\Classes\ValueObjects\Constants\HttpStatus;
use App\Classes\ValueObjects\Response\ApiResponseObject;
use App\Models\MilestoneTask;
class MilestoneTaskOrderController
{
public function update(int $milestoneTaskId, string $type){
$milestoneTask = MilestoneTask::find($milestoneTaskId);
$type === 'up' ? $milestoneTask->moveOrderUp() : $milestoneTask->moveOrderDown();
return (new ApiResponseObject('Task Order Changed Successfully',
'You have successfully changed the task order',
HttpStatus::OK_WITH_MESSAGE, []))->handler();
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\Milestones;
use App\Classes\ValueObjects\Constants\HttpStatus;
use App\Classes\ValueObjects\Response\ApiResponseObject;
use App\Models\Milestone;
class MilestoneOrderController
{
public function update(int $milestoneId, string $type){
$milestone = Milestone::find($milestoneId);
$type === 'up' ? $milestone->moveOrderUp() : $milestone->moveOrderDown();
return (new ApiResponseObject('Milestone Order Changed Successfully',
'You have successfully changed the milestone order',
HttpStatus::OK_WITH_MESSAGE, []))->handler();
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Http\Controllers\Tasks;
use App\Classes\ValueObjects\Constants\HttpStatus;
use App\Classes\ValueObjects\Response\ApiResponseObject;
use App\Models\ProjectMilestone;
use App\Models\Task;
use App\Models\TimeTracker;
use Carbon\Carbon;
use Illuminate\Support\Facades\Auth;
class TaskOrderController
{
public function start(int $taskId){
$task = Task::find($taskId);
$task->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();
}
}
+1 -1
View File
@@ -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');
}
}
+1 -1
View File
@@ -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() {
+5
View File
@@ -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');
}
}
@@ -14,7 +14,8 @@
<div class="row">
<div class="col">
<div class="ist-item-heading truncate mb-0 w-xs-100 mt-0">
<span class="align-middle d-inline-block">{{milestone.order}}</span>
<span class="align-middle d-inline-block"><i class="iconsminds-arrow-down-in-circle text-danger pointer" @click="submit(route('api.milestone.order', data.id, 'down'), 'post', section, true, true)"></i></span>
<span class="align-middle d-inline-block"><i class="iconsminds-arrow-up-in-circle text-success pointer" @click="submit(route('api.milestone.order', data.id, 'up'), 'post', section, true, true)"></i></span>
</div>
</div>
</div>
@@ -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();
}
}
}
</script>
@@ -3,6 +3,23 @@
<div class="row">
<div class="col">
<div class="row align-items-center">
<div class="col-1">
<div class="row">
<div class="col">
<div class=" mb-1 w-xs-100 mt-0">
<span class="align-middle d-inline-block text-muted text-small text-uppercase" style=" font-size: 9px !important; ">Order</span>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="ist-item-heading truncate mb-0 w-xs-100 mt-0">
<span class="align-middle d-inline-block"><i class="iconsminds-arrow-down-in-circle text-danger pointer" @click="submit(route('api.milestone.task.order', data.id, 'down'), 'post', section, true, true)"></i></span>
<span class="align-middle d-inline-block"><i class="iconsminds-arrow-up-in-circle text-success pointer" @click="submit(route('api.milestone.task.order', data.id, 'up'), 'post', section, true, true)"></i></span>
</div>
</div>
</div>
</div>
<div class="col-2">
<div class="row">
<div class="col">
@@ -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();
}
}
}
</script>
+3
View File
@@ -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';
});