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');
     }
 }