Files
basicdata/app/Exports/HolidayCalendarExport.php
Daeng Deni Mardaeni 4c6a6d8cea feat(holidaycalendar): implement full feature set for holiday calendar management
- Mengganti namespace model `HolidayCalendar` dari `Entities` ke `Models`.
- Menambahkan validasi izin untuk semua aksi CRUD dan ekspor pada `HolidayCalendarController`.
- Mengintegrasikan fitur izin pada tombol aksi (create, update, delete, export) di view `index.blade.php`.
- Mengupdate logika form view `create.blade.php` untuk mendukung pengelolaan izin dan action dinamis.
- Menambahkan class test `HolidayCalendarControllerTest` dengan pengujian lengkap mencakup:
  - Hak akses untuk membaca, membuat, memperbarui, menghapus, dan mengekspor data.
  - Validasi data saat penyimpanan/pembaruan.
  - Validasi respon HTTP untuk setiap aksi berdasarkan izin.
- Memastikan user tanpa izin akan menerima pesan atau pembatasan akses yang relevan (HTTP 403).
- Fitur ekspor CSV hanya dapat diakses oleh user dengan izin `basic-data.export`.
- Memperbaiki rendering tindakan pada data tabel di `index.blade.php` agar responsif terhadap izin user.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-17 11:34:12 +07:00

53 lines
1.2 KiB
PHP

<?php
namespace Modules\Basicdata\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Modules\Basicdata\Models\HolidayCalendar;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class HolidayCalendarExport implements WithColumnFormatting, WithHeadings, FromCollection, WithMapping
{
public function collection()
{
return HolidayCalendar::all();
}
public function map($row): array
{
return [
$row->id,
$row->date,
$row->description,
$row->type,
$row->created_at,
$row->updated_at
];
}
public function headings(): array
{
return [
'ID',
'Date',
'Description',
'Type',
'Created At',
'Updated At'
];
}
public function columnFormats(): array
{
return [
'A' => NumberFormat::FORMAT_NUMBER,
'B' => NumberFormat::FORMAT_DATE_DDMMYYYY,
'E' => NumberFormat::FORMAT_DATE_DATETIME,
'F' => NumberFormat::FORMAT_DATE_DATETIME
];
}
}