MIF_E31230690/project/app/Exports/LaporanExport.php

72 lines
2.1 KiB
PHP

<?php
namespace App\Exports;
use App\Models\PengukuranBalita;
use App\Models\PengukuranIbuHamil;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings; // <--- Cek ini
use Maatwebsite\Excel\Concerns\WithMapping;
class LaporanExport implements FromQuery, WithHeadings, WithMapping
{
protected $bulan, $tahun, $kategori;
public function __construct($bulan, $tahun, $kategori)
{
$this->bulan = $bulan;
$this->tahun = $tahun;
$this->kategori = $kategori;
}
public function query()
{
if ($this->kategori == 'balita') {
return PengukuranBalita::with('balita')
->whereMonth('tanggal', $this->bulan) // Harus pakai variabel ini!
->whereYear('tanggal', $this->tahun) // Harus pakai variabel ini!
->orderBy('tanggal', 'asc');
} else {
return PengukuranIbuHamil::with('ibuHamil')
->whereMonth('tanggal', $this->bulan)
->whereYear('tanggal', $this->tahun)
->orderBy('tanggal', 'asc');
}
}
public function headings(): array
{
if ($this->kategori == 'balita') {
return ["No", "Nama Balita", "Tanggal Ukur", "Usia (Bulan)", "BB (kg)", "TB (cm)", "ZS-TB/U", "Hasil/Status"];
}
return ["No", "Nama Ibu", "Tanggal Ukur", "Usia Hamil (Minggu)", "BB (kg)", "LILA (cm)", "IMT", "Status Gizi"];
}
public function map($item): array
{
static $no = 1;
if ($this->kategori == 'balita') {
return [
$no++,
$item->balita->nama ?? '-',
$item->tanggal,
$item->usia_saat_ukur,
$item->berat_badan,
$item->tinggi_badan,
$item->zs_tbu,
$item->hasil
];
}
return [
$no++,
$item->ibuHamil->nama ?? '-',
$item->tanggal,
$item->usia_kehamilan,
$item->berat_badan,
$item->lila,
$item->imt,
$item->status_gizi
];
}
}