public function saveTerm(Term $term, $vocabulary)
 {
     if (is_string($vocabulary)) {
         $vocabulary = $this->fetchVocabularyByName($vocabulary);
     }
     $term->setVocabulary($vocabulary);
     $data = $this->termHydrator->extract($term);
     if (empty($data['id'])) {
         $this->dbal->insert('taxonomyTerms', $data);
         $term->setId($this->dbal->lastInsertId());
     } else {
         $response = $this->dbal->update('taxonomyTerms', $data, ['id' => $data['id']]);
     }
     return $term;
 }
 public function getTerms(Application $app, $vocabularyName, $termName = null)
 {
     /** @var \Mentoring\Taxonomy\TaxonomyService $taxonomyService */
     $taxonomyService = $app['taxonomy.service'];
     try {
         $vocabulary = $taxonomyService->fetchVocabularyByName($vocabularyName);
         $terms = $taxonomyService->fetchAllTerms($vocabulary);
         $termHydrator = new TermHydrator();
         $termData = [];
         foreach ($terms as $term) {
             $termData[] = $termHydrator->extract($term);
         }
         return new Response(json_encode(['vocabulary' => $vocabularyName, 'count' => count($termData), 'terms' => $termData]), 200, ['Content-Type' => 'application/json']);
     } catch (VocabularyNotFoundException $e) {
         return new Response(json_encode(['error' => $e->getMessage()]), 404, ['Content-Type' => 'application/json']);
     }
 }