MIF_E31222307/resources/views/admin/validasi/index.blade.php

238 lines
8.9 KiB
PHP

@extends('layout.app')
@section('title', 'Validasi Rekomendasi')
@include('admin.shared.admin-styles')
@section('content')
<div class="admin-container container-fluid">
<!-- Page Header -->
<div class="page-header animate-fade-in">
<div class="row align-items-center">
<div class="col-12">
<div class="d-flex flex-column flex-md-row justify-content-between align-items-md-center gap-3">
<div>
<h3 class="mb-1 text-white d-flex align-items-center">
<i class="fas fa-check-circle me-2"></i>Validasi Rekomendasi
</h3>
<nav aria-label="breadcrumb">
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item"><a href="{{ route('admindash') }}" class="text-white-50">Dashboard</a></li>
<li class="breadcrumb-item active text-white" aria-current="page">Validasi Rekomendasi</li>
</ol>
</nav>
</div>
<div class="d-flex gap-2">
<a href="{{ route('validasi.export') }}" class="admin-btn btn-success">
<i class="fas fa-file-excel me-1"></i>Export Excel
</a>
<form action="{{ route('validasi.bandingkan') }}" method="POST" class="d-inline">
@csrf
<button type="submit" class="admin-btn btn-primary">
<i class="fas fa-sync-alt me-1"></i>Bandingkan
</button>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- Statistik -->
<div class="row g-4 mb-4">
<div class="col-12 col-md-6 col-lg-3">
<div class="stat-card bg-primary">
<div class="stat-icon">
<i class="fas fa-check-circle"></i>
</div>
<div class="stat-details">
<div class="stat-value">{{ $lebihBaik }}</div>
<div class="stat-label">Lebik baik</div>
</div>
</div>
</div>
<div class="col-12 col-md-6 col-lg-3">
<div class="stat-card bg-warning">
<div class="stat-icon">
<i class="fas fa-exclamation-circle"></i>
</div>
<div class="stat-details">
<div class="stat-value">{{ $setara }}</div>
<div class="stat-label">Setara</div>
</div>
</div>
</div>
<div class="col-12 col-md-6 col-lg-3">
<div class="stat-card bg-danger">
<div class="stat-icon">
<i class="fas fa-times-circle"></i>
</div>
<div class="stat-details">
<div class="stat-value">{{ $lebihBuruk }}</div>
<div class="stat-label">Lebih Buruk</div>
</div>
</div>
</div>
<div class="col-12 col-md-6 col-lg-3">
<div class="stat-card bg-success">
<div class="stat-icon">
<i class="fas fa-percentage"></i>
</div>
<div class="stat-details">
<div class="stat-value">{{ number_format($persentaseCocok, 2) }}%</div>
<div class="stat-label">Persentase Kecocokan</div>
</div>
</div>
</div>
</div>
<!-- Filter -->
<div class="card mb-4">
<div class="card-body">
<form action="{{ route('validasi.index') }}" method="GET" class="row g-3">
<div class="col-md-4">
<label for="hari" class="form-label">Hari</label>
<select name="hari" id="hari" class="form-select">
<option value="">Semua Hari</option>
@foreach(['Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu'] as $h)
<option value="{{ $h }}" {{ request('hari') == $h ? 'selected' : '' }}>{{ $h }}</option>
@endforeach
</select>
</div>
<div class="col-md-4">
<label for="waktu_makan_id" class="form-label">Waktu Makan</label>
<select name="waktu_makan_id" id="waktu_makan_id" class="form-select">
<option value="">Semua Waktu Makan</option>
@foreach($waktuMakans as $waktu)
<option value="{{ $waktu->id }}" {{ request('waktu_makan_id') == $waktu->id ? 'selected' : '' }}>
{{ $waktu->nama }}
</option>
@endforeach
</select>
</div>
<div class="col-md-4 d-flex align-items-end">
<button type="submit" class="btn btn-primary me-2">
<i class="fas fa-filter me-1"></i>Filter
</button>
<a href="{{ route('validasi.index') }}" class="btn btn-secondary">
<i class="fas fa-undo me-1"></i>Reset
</a>
</div>
</form>
</div>
</div>
<!-- Tabel Hasil -->
<div class="card">
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>Hari</th>
<th>Waktu Makan</th>
<th>Komponen</th>
<th>Makanan Pakar</th>
<th>Makanan Sistem</th>
<th>Status</th>
</tr>
</thead>
<tbody>
@php
$komponenUrutan = ['Karbohidrat', 'Protein', 'Sayur', 'Buah', 'Susu', 'Snack'];
$grouped = $validasi->groupBy(['hari', 'waktu_makan_id']);
@endphp
@forelse($grouped as $hari => $waktuGroup)
@foreach($waktuGroup as $waktuMakanId => $items)
@php
$waktuNama = $items->first()->waktuMakan->nama ?? '-';
$komponenData = collect($items)->keyBy(fn($item) => $item->komponen->nama);
@endphp
<tr class="table-primary">
<td colspan="6"><strong>{{ $hari }} - {{ $waktuNama }}</strong></td>
</tr>
@foreach($komponenUrutan as $komponen)
@php
$v = $komponenData->get($komponen);
@endphp
<tr>
<td></td>
<td></td>
<td>{{ $komponen }}</td>
<td>{{ $v?->makananPakar->nama ?? '-' }}</td>
<td>
@if($v && is_array($v->makanan_sistem_ids) && count($v->makanan_sistem_ids) > 0)
@foreach($v->makanan_sistem_ids as $id)
<span class="badge bg-info">{{ \App\Models\Makanan::find($id)?->nama ?? 'Tidak Ditemukan' }}</span>
@endforeach
@else
<span class="text-muted">Tidak ada data</span>
@endif
</td>
<td>
@if($v)
@switch($v->status_kecocokan)
@case('lebih_baik')
<span class="badge bg-success"> Lebih Baik</span>
@break
@case('setara')
<span class="badge bg-warning">⚠️ Setara</span>
@break
@case('lebih_buruk')
<span class="badge bg-danger"> Lebih Buruk</span>
@break
@endswitch
@else
<span class="text-muted">-</span>
@endif
</td>
</tr>
@endforeach
@endforeach
@empty
<tr>
<td colspan="6" class="text-center">Belum ada data validasi</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
<style>
.stat-card {
padding: 1.5rem;
border-radius: 1rem;
color: white;
height: 100%;
display: flex;
align-items: center;
gap: 1.5rem;
transition: transform 0.3s ease;
}
.stat-card:hover {
transform: translateY(-5px);
}
.stat-icon {
font-size: 2.5rem;
opacity: 0.9;
}
.stat-details {
flex-grow: 1;
}
.stat-value {
font-size: 1.75rem;
font-weight: 600;
margin-bottom: 0.25rem;
}
.stat-label {
margin-bottom: 0;
opacity: 0.9;
font-size: 0.9rem;
}
</style>
@endsection