MIF_E31222307/resources/views/user/simulasi/hasil.blade.php

202 lines
11 KiB
PHP

@extends('layoutuser.app')
@section('content')
<div style="background: linear-gradient(to bottom, #e3f2fd, #bbdefb); min-height: 100vh; padding-top: 5rem; padding-bottom: 5rem;">
<div class="container">
<div class="text-center mb-5">
<p class="d-inline-block border rounded-pill bg-primary text-light py-1 px-4">Hasil Simulasi</p>
<h1 class="text-dark mb-4">Hasil Simulasi Rekomendasi Menu</h1>
<p class="text-dark mb-4 pb-2">
Berikut adalah hasil simulasi pemilihan menu berdasarkan metode AHP
</p>
</div>
<div class="row justify-content-center">
<div class="col-lg-10">
<!-- Informasi Simulasi -->
<div class="card shadow-sm mb-4">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<h6 class="mb-3">Informasi Simulasi</h6>
<table class="table table-sm">
<tr>
<td>Waktu Makan</td>
<td>{{ $waktuMakan->nama }}</td>
</tr>
<tr>
<td>Komponen</td>
<td>{{ $komponen->nama }}</td>
</tr>
<tr>
<td>Jumlah Makanan</td>
<td>{{ count($hasilSimulasi['makanan_ids']) }} makanan</td>
</tr>
</table>
</div>
<div class="col-md-6">
<h6 class="mb-3">Kriteria yang Dipertimbangkan</h6>
<ul class="list-unstyled">
@foreach($kriterias as $kriteria)
@php
$bobot = $hasilSimulasi['bobot_kriteria'][$kriteria->id] ?? 0;
@endphp
<li>
<i class="fas fa-check-circle text-success me-2"></i>
{{ $kriteria->nama }}
<span class="badge bg-primary ms-2">{{ number_format($bobot, 4) }}</span>
</li>
@endforeach
</ul>
@if($crCriteria)
<div class="mt-2">
<span class="badge bg-info">CR Kriteria: {{ number_format($crCriteria->cr, 4) }}</span>
<span class="ms-2">({{ $crCriteria->cr <= 0.1 ? 'Konsisten' : 'Tidak Konsisten' }})</span>
</div>
@endif
</div>
</div>
</div>
</div>
<!-- Hasil Ranking -->
<div class="card shadow-sm mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Hasil Ranking Makanan</h5>
</div>
<div class="card-body">
@php
// Ambil makanan dengan skor tertinggi
$topMakananId = array_key_first($hasilSimulasi['hasil']);
$topSkor = $hasilSimulasi['hasil'][$topMakananId] ?? 0;
$topMakanan = $makanans->keyBy('id')[$topMakananId] ?? null;
@endphp
@if($topMakanan)
<div class="alert alert-success mb-4">
<strong>Kesimpulan:</strong> Berdasarkan hasil simulasi AHP, <b>{{ $topMakanan->nama }}</b> memperoleh skor tertinggi ({{ number_format($topSkor, 4) }}), sehingga <b>paling direkomendasikan</b> untuk dikonsumsi pada waktu makan <b>{{ $waktuMakan->nama }}</b> dengan komponen <b>{{ $komponen->nama }}</b>.<br>
<br>
<u>Pendekatan Analisis Gizi:</u><br>
<span class="text-dark">Pilihan ini didasarkan pada analisis nilai gizi utama, yaitu:
<ul class="mb-1">
<li>Energi: <b>{{ $topMakanan->energi }}</b> kkal</li>
<li>Protein: <b>{{ $topMakanan->protein }}</b> g</li>
<li>Lemak: <b>{{ $topMakanan->lemak }}</b> g</li>
<li>Karbohidrat: <b>{{ $topMakanan->karbohidrat }}</b> g</li>
<li>Natrium: <b>{{ $topMakanan->natrium }}</b> mg</li>
</ul>
Dengan mempertimbangkan bobot kriteria yang telah ditentukan, makanan ini dinilai paling sesuai dengan kebutuhan gizi dan prinsip pemilihan menu oleh ahli gizi.<br>
<span class="text-primary">Pilihlah makanan ini untuk hasil yang optimal bagi kesehatan Anda.</span>
</span>
</div>
@endif
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>Ranking</th>
<th>Nama Makanan</th>
<th>Skor Akhir</th>
<th>Detail Nutrisi</th>
</tr>
</thead>
<tbody>
@php
$rank = 1;
$makananMap = $makanans->keyBy('id');
@endphp
@foreach($hasilSimulasi['hasil'] as $makananId => $skor)
@php
$makanan = $makananMap[$makananId] ?? null;
@endphp
@if($makanan)
<tr>
<td>{{ $rank++ }}</td>
<td>{{ $makanan->nama }}</td>
<td>{{ number_format($skor, 4) }}</td>
<td>
<button type="button" class="btn btn-link btn-sm p-0"
onclick="showDetailMakanan(this)"
data-lemak="{{ $makanan->lemak }}"
data-natrium="{{ $makanan->natrium }}"
data-energi="{{ $makanan->energi }}"
data-karbohidrat="{{ $makanan->karbohidrat }}">
<i class="fas fa-info-circle"></i> Lihat Detail
</button>
</td>
</tr>
@endif
@endforeach
</tbody>
</table>
</div>
</div>
</div>
<!-- Tombol Kembali -->
<div class="text-center">
<a href="{{ route('user.simulasi.index') }}" class="btn btn-primary rounded-pill px-5 py-2 me-2">
<i class="fas fa-arrow-left me-2"></i>Kembali ke Simulasi
</a>
<a href="{{ route('user.simulasi.history') }}" class="btn btn-info rounded-pill px-5 py-2">
<i class="fas fa-history me-2"></i>Lihat History
</a>
</div>
</div>
</div>
</div>
</div>
<!-- Modal Detail Makanan -->
<div class="modal fade" id="modalDetailMakanan" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Detail Makanan</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="row">
<!-- <div class="col-md-6">
<img id="makananImage" src="" class="img-fluid rounded" alt="Gambar Makanan">
</div> -->
<div class="col-md-6">
<h6 class="mb-3">Informasi Nutrisi</h6>
<table class="table table-sm">
<tr>
<td>Lemak</td>
<td id="makananLemak">-</td>
</tr>
<tr>
<td>Natrium</td>
<td id="makananNatrium">-</td>
</tr>
<tr>
<td>Energi</td>
<td id="makananEnergi">-</td>
</tr>
<tr>
<td>Karbohidrat</td>
<td id="makananKarbohidrat">-</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@push('scripts')
<script>
function showDetailMakanan(btn) {
document.getElementById('makananLemak').textContent = btn.getAttribute('data-lemak') + ' g';
document.getElementById('makananNatrium').textContent = btn.getAttribute('data-natrium') + ' mg';
document.getElementById('makananEnergi').textContent = btn.getAttribute('data-energi') + ' kkal';
document.getElementById('makananKarbohidrat').textContent = btn.getAttribute('data-karbohidrat') + ' g';
var modal = new bootstrap.Modal(document.getElementById('modalDetailMakanan'));
modal.show();
}
</script>
@endpush
@endsection