/** * @param Criteria $criteria */ public function decorate(Criteria $criteria) { $alcoholFrom = $this->form->get('alcohol')->get('from')->getData(); $alcoholTo = $this->form->get('alcohol')->get('to')->getData(); if (!is_null($alcoholFrom)) { $criteria->withAlcoholContentGreaterThan($alcoholFrom); } if (!is_null($alcoholTo)) { $criteria->withAlcoholContentLowerThan($alcoholTo); } $criteria->addQuery($this->form->get('query')->getData()); $criteria->mustContainIngredients($this->form->get('ingredients')->getData()); $tasteBuilder = new TasteBuilder(); foreach ($this->form->get('taste')->getData() as $tasteName) { switch ($tasteName) { case Tastes::SWEET: $tasteBuilder->sweet(); break; case Tastes::BITTER: $tasteBuilder->bitter(); break; case Tastes::SALTY: $tasteBuilder->salty(); break; case Tastes::SPICY: $tasteBuilder->spicy(); break; case Tastes::SOUR: $tasteBuilder->sour(); break; } } $criteria->updateRequiredTaste($tasteBuilder->buildTaste()); }
function it_build_parameters_for_ingredients_and_query() { $criteria = new Criteria(0, false); $criteria->addQuery('blue'); $criteria->mustContainIngredients(['vodka']); $this->createParameters($criteria)->shouldReturn(['index' => ElasticSearch::INDEX, 'type' => 'recipe', 'body' => ['from' => 0, 'size' => 10, 'query' => ['filtered' => ['filter' => ['and' => [['terms' => ['steps.name' => ['vodka']]]]], 'query' => ['multi_match' => ['query' => 'blue', "type" => "phrase_prefix", 'fields' => ["description.text^2", "name^4"]]]]]]]); }
public function createAction(Request $request) { $form = $this->createForm(new CreateRecipeType(), new CreateNewRecipeCommand()); $searchForm = $this->createForm(new AdminSearchType()); $form->handleRequest($request); $searchForm->handleRequest($request); if ($form->isValid()) { $this->get('my_drinks.command_bus')->handle($form->getData()); $slug = $this->get('my_drinks.slug_generator')->generateFrom($form->get('name')->getData()); return $this->redirect($this->generateUrl('admin_recipe_update_description', ['slug' => $slug])); } $criteria = new Criteria((int) $request->query->get('start', 0), false); $criteria->sortBy('name.raw', Criteria::SORT_ASC); if ($searchForm->isValid()) { $criteria->addQuery($searchForm->get('name')->getData()); } $results = $this->get('my_drinks.search_engine')->search($criteria); return $this->render('admin/recipe/create.html.twig', ['search' => $searchForm->createView(), 'form' => $form->createView(), 'results' => $results]); }