diff --git a/app/Http/Controllers/TaskKanbanController.php b/app/Http/Controllers/TaskKanbanController.php index 93353a01b1ce..74cb43d52c2e 100644 --- a/app/Http/Controllers/TaskKanbanController.php +++ b/app/Http/Controllers/TaskKanbanController.php @@ -90,13 +90,42 @@ class TaskKanbanController extends BaseController */ public function deleteStatus($publicId) { - $status = TaskStatus::scope($publicId)->first(); - - if ($status) { - $status->delete(); - } + $status = TaskStatus::scope($publicId)->firstOrFail(); + $status->delete(); return response()->json(['message' => RESULT_SUCCESS]); } + /** + * @param $publicId + * + * @return \Illuminate\Http\RedirectResponse + */ + public function updateTask($publicId) + { + $task = Task::scope($publicId)->firstOrFail(); + + $origStatusId = $task->task_status_id; + $origSortOrder = $task->task_status_sort_order; + + $newStatusId = request('task_status_id'); + $newSortOrder = request('task_status_sort_order'); + + Task::scope() + ->where('task_status_id', '=', $origStatusId) + ->where('task_status_sort_order', '>', $origSortOrder) + ->decrement('task_status_sort_order'); + + Task::scope() + ->where('task_status_id', '=', $newStatusId) + ->where('task_status_sort_order', '>=', $newSortOrder) + ->increment('task_status_sort_order'); + + $task->task_status_id = request('task_status_id'); + $task->task_status_sort_order = $newSortOrder; + $task->save(); + + return response()->json($task); + } + } diff --git a/resources/views/tasks/kanban.blade.php b/resources/views/tasks/kanban.blade.php index e0fd8ee2838e..c326636ab35e 100644 --- a/resources/views/tasks/kanban.blade.php +++ b/resources/views/tasks/kanban.blade.php @@ -230,8 +230,8 @@ }); } - self.onDragged = function() { - + self.onStatusDragged = function() { + console.log('onStatusDragged..'); } } @@ -274,8 +274,20 @@ self.is_editing_status(false); } - self.onDragged = function() { + self.onTaskDragged = function(dragged) { + console.log('onTaskDragged..'); + //console.log(dragged); + var task = dragged.item; + task.task_status_sort_order(dragged.targetIndex); + task.task_status_id(self.public_id()); + var url = '{{ url('/task_status_order') }}/' + task.public_id(); + var data = task.toData(); + console.log(data); + //return; + model.ajax('put', url, data, function(response) { + + }); } self.archiveStatus = function() { @@ -347,10 +359,6 @@ $('.kanban-column-row.editing textarea').focus(); } - self.onDragged = function() { - - } - self.toData = function() { return 'description=' + encodeURIComponent(self.description()) + '&task_status_id=' + self.task_status_id() + @@ -480,7 +488,7 @@