protected function handleRequest(array $request) { $version = $request[self::FIELD_PROTOCOL_VERSION]; $projectTitle = $request[self::FIELD_TITLE]; $projectDescription = $request[self::FIELD_DESCRIPTION]; $projectId = Project::create(Project::getNextOrd(), $projectTitle, $projectDescription); $listsRep = $request[self::FIELD_LISTS]; $listOrd = 0; foreach ($listsRep as $listRep) { $listTitle = $listRep[self::FIELD_TITLE]; $listId = TasksList::create($projectId, ++$listOrd, $listTitle); $tasksRep = $listRep[self::FIELD_TASKS]; $taskOrd = 0; foreach ($tasksRep as $taskRep) { $taskTitle = $taskRep[self::FIELD_TITLE]; $taskDescription = $taskRep[self::FIELD_DESCRIPTION]; $taskId = Task::create($listId, ++$taskOrd, $taskTitle, $taskDescription); if ($version > 1) { $taskStatus = $taskRep[self::FIELD_TASK_STATUS]; Task::updateStatus($taskId, $taskStatus); } } } return array(self::FIELD_PROJECT_ID => $projectId); }
protected function handleRequest(array $request) { $projectId = $request[self::FIELD_PROJECT_ID]; $beforeId = $request[self::FIELD_BEFORE_LIST_ID]; $title = $request[self::FIELD_TITLE]; Project::lock($projectId); $ord = null; if ($beforeId) { $beforeList = TasksList::fetch($beforeId); if ($beforeList->getProjectId() !== $projectId) { throw new Exception("Insertion point for a new list is in another project", EndPoint::STATUS_BAD_REQUEST); } $ord = $beforeList->getOrd(); TasksList::shiftRight($projectId, $ord); } else { $ord = TasksList::getNextOrd($projectId); } $listId = TasksList::create($projectId, $ord, $title); return array(self::FIELD_LIST_ID => $listId); }