/** * Action for saving a new task check item inline edit form. * @param string or array $redirectUrl */ public function actionInlineCreateTaskCheckItemSave($relatedModelId, $relatedModelClassName, $relatedModelRelationName, $redirectUrl = null) { if (isset($_POST['ajax']) && $_POST['ajax'] === 'task-check-item-inline-edit-form') { $this->actionInlineEditValidate(new TaskCheckListItem()); } $taskCheckListItem = new TaskCheckListItem(); $postData = PostUtil::getData(); $postFormData = ArrayUtil::getArrayValue($postData, get_class($taskCheckListItem)); $taskCheckListItem->name = $postFormData['name']; $task = Task::getById(intval($relatedModelId)); $task->checkListItems->add($taskCheckListItem); $saved = $task->save(); if (!$saved) { throw new FailedToSaveModelException(); } if ($task->project->id > 0) { ProjectsUtil::logTaskCheckItemEvent($task, $taskCheckListItem); } if ($redirectUrl != null) { $this->redirect($redirectUrl); } }
/** * Add demo tasks for the project * @param type $project */ protected static function addDemoTasks($project, $taskInputCount = 1, &$demoDataHelper) { $randomTasks = self::getRandomTasks(); for ($i = 0; $i < count($randomTasks); $i++) { $task = new Task(); $task->name = $randomTasks[$i]['name']; $task->owner = $demoDataHelper->getRandomByModelName('User'); $task->requestedByUser = $demoDataHelper->getRandomByModelName('User'); $task->completedDateTime = '0000-00-00 00:00:00'; $task->project = $project; $task->status = Task::STATUS_NEW; $task->save(); //Notification subscriber $notificationSubscriber = new NotificationSubscriber(); $notificationSubscriber->person = $demoDataHelper->getRandomByModelName('User'); $notificationSubscriber->hasReadLatest = false; //Task check list items $task->notificationSubscribers->add($notificationSubscriber); $taskCheckListItems = $randomTasks[$i]['checkListItems']; foreach ($taskCheckListItems as $itemKey => $name) { $taskCheckListItem = new TaskCheckListItem(); $taskCheckListItem->name = $name; if ($itemKey * $i * rand(5, 100) % 3 == 0) { $taskCheckListItem->completed = true; } $task->checkListItems->add($taskCheckListItem); ProjectsUtil::logTaskCheckItemEvent($task, $taskCheckListItem); } //Comments $commentItems = $randomTasks[$i]['comments']; foreach ($commentItems as $description) { $comment = new Comment(); $comment->description = $description; $comment->setScenario('importModel'); $comment->createdByUser = $demoDataHelper->getRandomByModelName('User'); $task->comments->add($comment); ProjectsUtil::logAddCommentEvent($task, strval($comment)); } //Add Super user $comment = new Comment(); $comment->description = 'Versatile idea regarding the task'; $task->comments->add($comment); $task->addPermissions(Group::getByName(Group::EVERYONE_GROUP_NAME), Permission::READ_WRITE_CHANGE_PERMISSIONS_CHANGE_OWNER); $task->save(); $currentStatus = $task->status; ProjectsUtil::logAddTaskEvent($task); $task = Task::getById($task->id); $task->status = RandomDataUtil::getRandomValueFromArray(self::getTaskStatusOptions()); $task->save(); AllPermissionsOptimizationUtil::securableItemGivenPermissionsForGroup($task, Group::getByName(Group::EVERYONE_GROUP_NAME)); $task->save(); ProjectsUtil::logTaskStatusChangeEvent($task, Task::getStatusDisplayName($currentStatus), Task::getStatusDisplayName(intval($task->status))); } }