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)
{
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());
}
/**

View File

@ -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();
});
}
}