diff --git a/app/Http/Controllers/TaskStatusController.php b/app/Http/Controllers/TaskStatusController.php index 6eff15de446c..4dc1e3f11f37 100644 --- a/app/Http/Controllers/TaskStatusController.php +++ b/app/Http/Controllers/TaskStatusController.php @@ -124,16 +124,16 @@ class TaskStatusController extends BaseController */ public function update(UpdateTaskStatusRequest $request, TaskStatus $task_status) { - nlog($request->all()); - + $task_status->fill($request->all()); $reorder = $task_status->isDirty('status_order'); $task_status->save(); - + if ($reorder) $this->task_status_repo->reorder($task_status); return $this->itemResponse($task_status->fresh()); + } /** diff --git a/app/Repositories/TaskStatusRepository.php b/app/Repositories/TaskStatusRepository.php index 3740325a4c96..ad085012d88e 100644 --- a/app/Repositories/TaskStatusRepository.php +++ b/app/Repositories/TaskStatusRepository.php @@ -45,8 +45,8 @@ class TaskStatusRepository extends BaseRepository $new_status = $task_status ? $task_status->id : null; Task::where('status_id', $task_status->id) - ->where('company_id', $task_status->company_id) - ->update(['status_id' => $new_status]); + ->where('company_id', $task_status->company_id) + ->update(['status_id' => $new_status]); parent::archive($task_status); @@ -56,22 +56,31 @@ class TaskStatusRepository extends BaseRepository public function reorder(TaskStatus $task_status) { -nlog("i am dirty"); -nlog(TaskStatus::query() - ->where('company_id', $task_status->company_id) - ->orderByRaw('ISNULL(status_order), status_order ASC') - ->orderBy('status_order', 'DESC')->pluck('name')); - - TaskStatus::query() - ->where('company_id', $task_status->company_id) - ->orderByRaw('ISNULL(status_order), status_order ASC') - ->orderBy('status_order', 'DESC') - ->cursor() - ->each(function ($task_status, $index) { - nlog($index." ".$task_status->name); - $task_status->update(['status_order' => $index+1]); - }); + TaskStatus::where('company_id', $task_status->company_id) + ->where('id', '!=', $task_status->id) + ->orderByRaw('ISNULL(status_order), status_order ASC') + ->cursor() + ->each(function ($ts, $key) use($task_status){ + + if($ts->status_order < $task_status->status_order) { + $ts->status_order--; + $ts->save(); + } elseif($ts->status_order >= $task_status->status_order) { + $ts->status_order ++; + $ts->save(); + } + + }); + + + TaskStatus::where('company_id', $task_status->company_id) + ->orderByRaw('ISNULL(status_order), status_order ASC') + ->cursor() + ->each(function ($ts, $key) { + $ts->status_order = $key; + $ts->save(); + }); } }