public function addVersion()
 {
     try {
         $json = $this->getJsonRequest();
         if (!$json) {
             return $this->serverError();
         }
         $component_id = (int) $this->request->param('COMPONENT_ID');
         $rules = array('version' => 'required|text', 'status' => 'required|versionstatus');
         $messages = array('version.required' => ':attribute is required', 'version.text' => ':attribute should be valid text.', 'status.required' => ':attribute is required', 'status.versionstatus' => ':attribute should be valid api version status.');
         $validator = ValidatorService::make($json, $rules, $messages);
         if ($validator->fails()) {
             return $this->validationError($validator->messages());
         }
         $component = $this->factory->buildOpenStackComponentById($component_id);
         $version = $this->factory->buildOpenStackApiVersion($json['version'], $json['status'], $component);
         return $this->created($this->manager->registerVersion($version));
     } catch (EntityAlreadyExistsException $ex1) {
         return $this->addingDuplicate($ex1->getMessage());
     } catch (NotFoundEntityException $ex2) {
         return $this->notFound($ex2->getMessage());
     } catch (Exception $ex) {
         return $this->serverError();
     }
 }
 public function addRelease()
 {
     $json = $this->getJsonRequest();
     if (!$json) {
         return $this->serverError();
     }
     $rules = array('name' => 'required|text', 'release_number' => 'required|text', 'release_date' => 'required|date', 'release_notes_url' => 'required|url');
     $messages = array('name.required' => ':attribute is required', 'name.text' => ':attribute should be valid text.', 'release_number.required' => ':attribute is required', 'release_number.text' => ':attribute should be valid text.', 'release_date.required' => ':attribute is required', 'release_date.date' => ':attribute should be valid date (y-m-d).', 'release_notes_url.required' => ':attribute is required', 'release_notes_url.url' => ':attribute should be valid url.');
     $validator = ValidatorService::make($json, $rules, $messages);
     if ($validator->fails()) {
         return $this->validationError($validator->messages());
     }
     $date = new DateTime($json['release_date']);
     $id = $this->manager->registerRelease($this->factory->buildOpenStackRelease($json['name'], $json['release_number'], $date, $json['release_notes_url']));
     return $this->created($id);
 }