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) { $beforeId = $request[self::FIELD_BEFORE_PROJECT_ID]; $title = $request[self::FIELD_TITLE]; $description = $request[self::FIELD_DESCRIPTION]; // FIXME: Global::lock(); $ord = null; if ($beforeId) { $beforeProject = Project::fetch($beforeId); $ord = $beforeProject->getOrd(); Project::shiftRight($ord); } else { $ord = Project::getNextOrd(); } $projectId = Project::create($ord, $title, $description); return array(self::FIELD_PROJECT_ID => $projectId); }
protected function handleRequest(array $request) { $projectId = $request[self::FIELD_PROJECT_ID]; $beforeProjectId = $request[self::FIELD_BEFORE_PROJECT_ID]; $project = Project::fetch($projectId); // FIXME: Global::lock(); if ($beforeProjectId) { Project::shiftLeft($project->getOrd()); if ($beforeProjectId === $projectId) { throw new Exception("Can't move project before itself", EndPoint::STATUS_BAD_REQUEST); } $beforeProject = Project::fetch($beforeProjectId); Project::shiftRight($beforeProject->getOrd()); Project::updateOrd($projectId, $beforeProject->getOrd()); } else { Project::shiftLeft($project->getOrd()); Project::updateOrd($projectId, Project::getNextOrd()); } }