示例#1
0
 /**
  * Check kanban type for status and update if it is required, it is required
  * when user is changing the status from modal detail view
  * @param $task Task
  */
 public static function checkKanbanTypeByStatusAndUpdateIfRequired(Task $task)
 {
     $kanbanItem = KanbanItem::getByTask($task->id);
     //It should be created here but check for create as well here
     if ($kanbanItem == null) {
         TasksUtil::createKanbanItemFromTask($task);
     } else {
         if (!TasksUtil::isKanbanItemTypeValidBasedOnTaskStatus($kanbanItem->type, $task->status)) {
             $kanbanTypeByStatus = TasksUtil::resolveKanbanItemTypeForTaskStatus($task->status);
             if ($kanbanItem->type != $kanbanTypeByStatus) {
                 $sourceKanbanItemType = $kanbanItem->type;
                 //put the item at the end
                 $kanbanItem->sortOrder = TasksUtil::resolveAndGetSortOrderForTaskOnKanbanBoard($kanbanTypeByStatus, $task);
                 $kanbanItem->type = $kanbanTypeByStatus;
                 $kanbanItem->save();
                 //Resort the source column
                 if ($task->project->id > 0) {
                     TasksUtil::sortKanbanColumnItems($sourceKanbanItemType, $task->project);
                 } elseif ($task->activityItems->count() > 0) {
                     TasksUtil::sortKanbanColumnItems($sourceKanbanItemType, $task->activityItems->offsetGet(0));
                 }
             }
         }
     }
 }