public function addStory() { $title = $this->app->request->post('Title'); if (!$title) { $this->sendInvalidFieldResult('Story', 'Title', 'missing_field'); } $userId = intval($this->app->request->post('UserId')); if ($userId <= 0) { $this->sendInvalidFieldResult('Story', 'UserId', 'missing_field'); } $type = intval($this->app->request->post('Type')); if ($type <= 0) { $this->sendInvalidFieldResult('Story', 'Type', 'missing_field'); } $storyData = array('Title' => $title, 'Description' => $this->app->request->post('Description') ?: '', 'Type' => $type, 'UserId' => $userId, 'CategoryId' => $this->app->request->post('CategoryId'), 'QuestionId' => $this->app->request->post('QuestionId'), 'CreatedDate' => date('Y-m-d H:i:s'), 'LastModifiedDate' => date('Y-m-d H:i:s'), 'PublishDate' => date('Y-m-d H:i:s')); $coverData = $this->processUploadedFile('cover', 'image'); $storyData['CoverUrl'] = $coverData['Url']; $storyData['CoverThumbUrl'] = $coverData['ThumbUrl']; switch ($type) { case StoryType::Video: $mediaData = $this->processUploadedFile('media', 'video'); $storyData['MediaUrl'] = $mediaData['Url']; $storyData['MediaLength'] = floatval($this->app->request->post('MediaLength')); break; case StoryType::Audio: $mediaData = $this->processUploadedFile('media', 'audio'); $storyData['MediaUrl'] = $mediaData['Url']; $storyData['MediaLength'] = floatval($this->app->request->post('MediaLength')); break; case StoryType::Text: if (empty($storyData['Description'])) { $this->sendInvalidFieldResult('Story', 'Description', 'missing_field'); } break; } $newStoryId = StoryRepository::save($storyData); if ($newStoryId) { $storyData['StoryId'] = $newStoryId; $this->sendResponse(array('story' => $storyData)); } else { $this->sendOperationFailedResult('Story'); } }