Fixes for task statuses

This commit is contained in:
David Bomba 2023-05-22 21:59:07 +10:00
parent a38d011d56
commit 49bfcd278e
2 changed files with 29 additions and 20 deletions

View File

@ -124,16 +124,16 @@ class TaskStatusController extends BaseController
*/ */
public function update(UpdateTaskStatusRequest $request, TaskStatus $task_status) public function update(UpdateTaskStatusRequest $request, TaskStatus $task_status)
{ {
nlog($request->all());
$task_status->fill($request->all()); $task_status->fill($request->all());
$reorder = $task_status->isDirty('status_order'); $reorder = $task_status->isDirty('status_order');
$task_status->save(); $task_status->save();
if ($reorder) if ($reorder)
$this->task_status_repo->reorder($task_status); $this->task_status_repo->reorder($task_status);
return $this->itemResponse($task_status->fresh()); return $this->itemResponse($task_status->fresh());
} }
/** /**

View File

@ -45,8 +45,8 @@ class TaskStatusRepository extends BaseRepository
$new_status = $task_status ? $task_status->id : null; $new_status = $task_status ? $task_status->id : null;
Task::where('status_id', $task_status->id) Task::where('status_id', $task_status->id)
->where('company_id', $task_status->company_id) ->where('company_id', $task_status->company_id)
->update(['status_id' => $new_status]); ->update(['status_id' => $new_status]);
parent::archive($task_status); parent::archive($task_status);
@ -56,22 +56,31 @@ class TaskStatusRepository extends BaseRepository
public function reorder(TaskStatus $task_status) public function reorder(TaskStatus $task_status)
{ {
nlog("i am dirty");
nlog(TaskStatus::query() TaskStatus::where('company_id', $task_status->company_id)
->where('company_id', $task_status->company_id) ->where('id', '!=', $task_status->id)
->orderByRaw('ISNULL(status_order), status_order ASC') ->orderByRaw('ISNULL(status_order), status_order ASC')
->orderBy('status_order', 'DESC')->pluck('name')); ->cursor()
->each(function ($ts, $key) use($task_status){
TaskStatus::query()
->where('company_id', $task_status->company_id) if($ts->status_order < $task_status->status_order) {
->orderByRaw('ISNULL(status_order), status_order ASC') $ts->status_order--;
->orderBy('status_order', 'DESC') $ts->save();
->cursor() } elseif($ts->status_order >= $task_status->status_order) {
->each(function ($task_status, $index) { $ts->status_order ++;
nlog($index." ".$task_status->name); $ts->save();
$task_status->update(['status_order' => $index+1]); }
});
});
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();
});
} }
} }