@extends('layouts.app')
@section('title', ' - Pencarian Café')
@php
// Tentukan langkah saat ini berdasarkan parameter URL
if (request()->has('weight')) {
$currentStep = 3; // Jika ada hasil pencarian (parameter weight), berarti di langkah hasil
} elseif (old('criteria') || request()->has('criteria')) {
$currentStep = 2; // Jika ada kriteria yang dipilih, berarti di langkah kriteria
} else {
$currentStep = 1; // Default langkah awal
}
@endphp
@section('stepper')
@endsection
@section('content')
Pencarian Café
Temukan café yang sesuai dengan preferensi dan kebutuhan Anda
@if(request()->has('weight'))
Hasil Rekomendasi SMART
@php
// Implementasi algoritma SMART
$cafes = \App\Models\Cafe::with(['ratings.subcategory', 'ratings.category'])->get();
$weights = request('weight') ?? [];
$criterias = request('criteria') ?? [];
$lokasi = request('lokasi');
$selectedCriteria = [];
if (!empty($criterias)) {
foreach ($criterias as $categoryId => $subcategoryId) {
if ($subcategoryId) {
$category = \App\Models\Category::find($categoryId);
$subcategory = \App\Models\Subcategory::find($subcategoryId);
if ($category && $subcategory) {
$selectedCriteria[] = $category->name . ': ' . $subcategory->name;
}
}
}
}
// Filter berdasarkan lokasi jika ada
if ($lokasi) {
$cafes = $cafes->filter(function($cafe) use ($lokasi) {
return stripos($cafe->lokasi, $lokasi) !== false;
});
}
// Hitung total semua bobot untuk normalisasi (atau default 100 jika kosong)
$totalWeight = array_sum($weights);
if ($totalWeight == 0) {
// Jika tidak ada bobot, buat bobot merata
$categories = \App\Models\Category::all();
foreach ($categories as $category) {
$weights[$category->id] = 100 / $categories->count();
}
$totalWeight = 100;
}
// Hitung skor SMART untuk setiap cafe
$cafeScores = [];
$debugOutput = "";
// Metode alternatif yang lebih langsung - ambil data dari database
foreach ($cafes as $cafe) {
$score = 0;
$debugInfo = [];
// Query langsung ke database untuk mendapatkan data yang diperlukan
$ratings = \Illuminate\Support\Facades\DB::table('cafe_ratings')
->join('subcategories', 'cafe_ratings.subcategory_id', '=', 'subcategories.id')
->join('categories', 'cafe_ratings.category_id', '=', 'categories.id')
->where('cafe_ratings.cafe_id', $cafe->id)
->select(
'cafe_ratings.category_id',
'categories.name as category_name',
'cafe_ratings.subcategory_id',
'subcategories.name as subcategory_name',
'subcategories.value'
)
->get();
$debugOutput .= "