51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Exports;
|
|
|
|
use Illuminate\Contracts\View\View;
|
|
use Maatwebsite\Excel\Concerns\FromView;
|
|
use Maatwebsite\Excel\Concerns\WithTitle;
|
|
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
|
|
|
|
class JadwalTimetableSheet implements FromView, WithTitle, ShouldAutoSize
|
|
{
|
|
protected $jadwalMaster;
|
|
protected $sesiList;
|
|
|
|
public function __construct($jadwalMaster, $sesiList)
|
|
{
|
|
$this->jadwalMaster = $jadwalMaster;
|
|
$this->sesiList = $sesiList;
|
|
}
|
|
|
|
public function title(): string
|
|
{
|
|
return '1. Timetable Grid Mingguan';
|
|
}
|
|
|
|
public function view(): View
|
|
{
|
|
$days = [
|
|
1 => 'Senin',
|
|
2 => 'Selasa',
|
|
3 => 'Rabu',
|
|
4 => 'Kamis',
|
|
5 => 'Jumat',
|
|
6 => 'Sabtu',
|
|
7 => 'Minggu'
|
|
];
|
|
|
|
// Grouping data jadwal berdasarkan "hari-sesi_id"
|
|
$jadwalGrouped = $this->jadwalMaster->groupBy(function ($item) {
|
|
return "{$item->hari}-{$item->sesi_id}";
|
|
});
|
|
|
|
return view('admin.exports.excel-timetable', [
|
|
'jadwalMaster' => $this->jadwalMaster,
|
|
'sesiList' => $this->sesiList,
|
|
'days' => $days,
|
|
'jadwalGrouped' => $jadwalGrouped
|
|
]);
|
|
}
|
|
}
|