summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhorus2022-09-25 03:51:14 +0200
committerhorus2022-09-25 03:51:14 +0200
commit6b59ee2a6427431a1d5e76bf70f8c5e97b10eb3e (patch)
treeabb07501bd6305fa2a5f3a0242d5242b16d5aa9a
parentacbe243bcd4c2dade2a834ce6bdedf46d1d10ae2 (diff)
downloadkategorischeraperitif-6b59ee2a6427431a1d5e76bf70f8c5e97b10eb3e.tar.gz
Verodern der Zutaten möglich.
-rw-r--r--app/Http/Controllers/CocktailController.php52
-rw-r--r--resources/views/cocktail_list.blade.php2
-rw-r--r--resources/views/fragments/cocktails.blade.php2
3 files changed, 37 insertions, 19 deletions
diff --git a/app/Http/Controllers/CocktailController.php b/app/Http/Controllers/CocktailController.php
index ef24ab8..117f490 100644
--- a/app/Http/Controllers/CocktailController.php
+++ b/app/Http/Controllers/CocktailController.php
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Str;
use App\Cocktail;
use App\Ingredient;
@@ -33,7 +34,7 @@ class CocktailController extends Controller
}
$excludes = $request->input("i_ex");
if ( ! isset($excludes) || empty($excludes) ) {
- $excludes = array();
+ $excludes = array("");
}
$cocktails = new Cocktail;
@@ -42,25 +43,38 @@ class CocktailController extends Controller
$q = Helper::escapeLike($q);
$q = "%".$q."%";
- if ( ! isset($excludes) || empty($excludes) ) {
- $cocktails = $cocktails->where(function($query) use ($q){
+ foreach($excludes as $ex) {
+ $ex = Helper::escapeLike($ex);
+ $ex = "%".$ex."%";
+
+ $cocktails = $cocktails->where(function($query) use ($q, $ex){
$query->whereHas("getIngredients", function ($query) use ($q){
- $query->where('name', 'like', $q);
+ if ( Str::contains($q, '$or$') ) {
+ $exploded = explode('$or$', $q);
+ $query->where( function ($query) use ($exploded){
+ foreach($exploded as $e)
+ $query->orWhere('name', 'like', $e);
+ });
+ } else {
+ $query->where('name', 'like', $q);
+ }
});
+ if ( "%%" != $ex ) {
+ $query->whereDoesntHave("getIngredients", function ($query) use ($ex){
+ $query->where('name', 'like', $ex);
+ });
+ }
});
- } else {
- foreach($excludes as $ex) {
- $ex = Helper::escapeLike($ex);
- $ex = "%".$ex."%";
-
- $cocktails = $cocktails->where(function($query) use ($q, $ex){
- $query->whereHas("getIngredients", function ($query) use ($q){
- $query->where('name', 'like', $q);
- })->whereDoesntHave("getIngredients", function ($query) use ($ex){
- $query->where('name', 'like', $ex);
- });
- });
- }
+ }
+ }
+
+ foreach($ingredients as $key => $q) {
+ if ( Str::contains($q, '$or$') ) {
+ unset($ingredients[$key]);
+ $exploded = explode('$or$', $q);
+ foreach($exploded as $key => $val )
+ $exploded[$key] = trim($exploded[$key] );
+ $ingredients = array_merge($ingredients, $exploded);
}
}
@@ -84,8 +98,10 @@ class CocktailController extends Controller
$exclude_phrase = rtrim($exclude_phrase, " und ");
}
- $search_phrase .= " und nicht nach " . $exclude_phrase;
+ if ( "" != $exclude_phrase)
+ $search_phrase .= " und nicht nach " . $exclude_phrase;
+ #var_dump( array_filter($ingredients));exit;
return view('cocktail_list', [ "cocktails" => $cocktails, "count" => $count, "search_terms" => array_filter($ingredients), "search_phrase" => $search_phrase, "exclude_terms" => array_filter($excludes) ]);
diff --git a/resources/views/cocktail_list.blade.php b/resources/views/cocktail_list.blade.php
index a0fc9a3..37d5627 100644
--- a/resources/views/cocktail_list.blade.php
+++ b/resources/views/cocktail_list.blade.php
@@ -31,6 +31,7 @@ Du hast nach {{ implode(" und ", $search_terms) }} gesucht: {{$count}} Cocktails
gesucht.
+ @if ( ! empty($exclude_terms) )
Ausgeschlossen sind folgende Zutaten:
@foreach( $exclude_terms as $term )
@@ -39,6 +40,7 @@ Du hast nach {{ implode(" und ", $search_terms) }} gesucht: {{$count}} Cocktails
@endif
<strong>{{ $term }}</strong>
@endforeach
+ @endif
</p>
<p>
diff --git a/resources/views/fragments/cocktails.blade.php b/resources/views/fragments/cocktails.blade.php
index c6cd7ae..fa8a13f 100644
--- a/resources/views/fragments/cocktails.blade.php
+++ b/resources/views/fragments/cocktails.blade.php
@@ -34,7 +34,7 @@
<input type="text" class="form-control" id=ingredient_search_exclude name="i_ex[]" id="front_search_form" aria-describedby="suchform-help" placeholder="Ignoriere Cocktails mit dieser Zutat! (optional)">
</div-->
</div>
- <p id="front_search_help" class="form-text">Wie wäre es zum Beispiel mit einem Cocktail aus Gin und Kirschwasser?</p>
+ <p id="front_search_help" class="form-text">Tipp: Du kannst Zutaten verodern. "Jamaika $or$ Jamaica" findet beide Schreibweisen. Oder auch: "Peat $or$ Torf $or$ Islay"</p>
<button class="btn btn-primary" type="button" onclick="addField()">Zutat hinzufügen</button>
<button class="btn btn-primary" type="button" onclick="addFieldExclude()">Ausnahme hinzufügen</button>
<button type="submit" class="btn btn-secondary">Suchen</button>