80 lines
2.7 KiB
PHP
80 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Laporan;
|
|
use App\Models\Makanan;
|
|
|
|
class LaporanController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$query = Laporan::query();
|
|
|
|
if ($request->filled('nama_pasien')) {
|
|
$query->where('nama_pasien', 'like', '%' . $request->nama_pasien . '%');
|
|
}
|
|
|
|
if ($request->filled('tanggal_dari')) {
|
|
$query->whereDate('created_at', '>=', $request->tanggal_dari);
|
|
}
|
|
|
|
if ($request->filled('tanggal_sampai')) {
|
|
$query->whereDate('created_at', '<=', $request->tanggal_sampai);
|
|
}
|
|
|
|
$laporan = $query->latest()
|
|
->paginate(10)
|
|
->withQueryString();
|
|
|
|
return view('laporan.index', compact('laporan'));
|
|
}
|
|
|
|
public function detail($id)
|
|
{
|
|
$laporan = Laporan::findOrFail($id);
|
|
$hasil = [];
|
|
|
|
if (!empty($laporan->hasil_json)) {
|
|
$decoded = json_decode($laporan->hasil_json, true);
|
|
|
|
$hasil = collect($decoded)->map(function($item) {
|
|
return [
|
|
'nama_makanan' => $item['nama_makanan'] ?? ($item['makanan']['nama_makanan'] ?? 'Tanpa Nama'),
|
|
|
|
// Tambahkan pengecekan fallback jika tersimpan di dalam nested array 'makanan'
|
|
'porsi_saji' => $item['porsi_saji'] ?? ($item['makanan']['porsi_saji'] ?? '-'),
|
|
|
|
'cara_pengolahan' => $item['cara_pengolahan'] ?? ($item['makanan']['cara_pengolahan'] ?? '-'),
|
|
'alternatif_serupa' => $item['alternatif_serupa'] ?? ($item['makanan']['alternatif_serupa'] ?? '-'),
|
|
'karbohidrat' => $item['karbohidrat'] ?? ($item['makanan']['karbohidrat'] ?? 0),
|
|
'lemak' => $item['lemak'] ?? ($item['kandungan_lemak'] ?? 0),
|
|
'serat' => $item['serat'] ?? ($item['kandungan_serat'] ?? 0),
|
|
'kalori' => $item['kalori'] ?? ($item['makanan']['kalori'] ?? 0),
|
|
'protein' => $item['protein'] ?? ($item['makanan']['protein'] ?? 0),
|
|
'skor' => $item['skor'] ?? 0,
|
|
];
|
|
})->sortByDesc('skor')->values()->all();
|
|
}
|
|
|
|
return view('laporan.detail', compact('laporan', 'hasil'));
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
$laporan = Laporan::findOrFail($id);
|
|
$laporan->delete();
|
|
|
|
return redirect()
|
|
->route('laporan.index')
|
|
->with('success', 'Data laporan berhasil dihapus');
|
|
}
|
|
|
|
public function cetak($id)
|
|
{
|
|
$laporan = \App\Models\Laporan::with('pasien')->findOrFail($id);
|
|
|
|
return view('laporan.cetak', compact('laporan'));
|
|
}
|
|
} |