My beer compendium
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

90 lines
3.1 KiB

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Search;
use App\Models\Summarie;
use App\Models\Brewerie;
use App\Models\Hopaddition;
use App\Models\Hop;
use App\Models\Grainbill;
use App\Models\Grain;
use App\Models\Fermentation;
use App\Models\Yeast;
use App\Models\Adjunctaddition;
use App\Models\Adjunct;
use Kyslik\ColumnSortable\Sortable;
class SearchController extends Controller
{
public function search(Request $request){
// validation
$this->validate($request,[
'search' => 'required',
'table' => 'required',
]);
$search = $request->input('search');
$table = $request->input('table');
switch($table) {
case('summarie'):
$results = Summarie::where('keywords', 'LIKE', '%'.$search.'%')->orWhere('type', 'LIKE', '%'.$search.'%')->get();
foreach ($results as $result) {
$brewery = Brewerie::where('id', $result->brewery_id)->value('name');
$result['brewery']=$brewery;
$hops = Hopaddition::where('beer_id', $result->beer_id)->distinct('hop_id');
$result['hops']=[];
$i = 0;
foreach ($hops as $hop){
$hopname = Hop::where('id', $hop->id)->value('name');
$result['hops'][$i]['id'] = $hop->id;
$result['hops'][$i]['name'] = $hopname;
$i++;
};
$grains = Grainbill::where('beer_id', $result->beer_id)->distinct('grain_id');
$result['grains']=[];
$i = 0;
foreach ($grains as $grain){
$grainname = Grain::where('id', $grain->id)->value('name');
$result['grains'][$i]['id'] = $grain->id;
$result['grains'][$i]['name'] = $grainname;
$i++;
};
$yeasts = Fermentation::where('beer_id', $result->beer_id)->distinct('yeast_id');
$result['yeasts']=[];
$i = 0;
foreach ($yeasts as $yeast){
$yeastname = Yeast::where('id', $yeast->id)->value('name');
$result['yeasts'][$i]['id'] = $yeast->id;
$result['yeasts'][$i]['name'] = $yeastname;
$i++;
};
$adjuncts = Adjunctaddition::where('beer_id', $result->beer_id)->distinct('adjunct_id');
$result['adjuncts']=[];
$i = 0;
foreach ($adjuncts as $adjunct){
$adjunctname = Adjunct::where('id', $adjunct->id)->value('name');
$result['adjuncts'][$i]['id'] = $adjunct->id;
$result['adjuncts'][$i]['name'] = $hopname;
$i++;
};
}
break;
case('brewerie'):
break;
case('hops'):
break;
case('yeast'):
break;
default:
$msg = "You fucked up somehow!";
}
$results = $results->sortable('name')->paginate(10);
return('search.results')->with($results);
}
}