<?php

namespace Modules\Lpj\Exports;

use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;

class LaporanSlikExport implements FromQuery, WithHeadings, WithMapping, WithStyles
{
    protected $query;

    public function __construct($query)
    {
        $this->query = $query;
    }

    public function query()
    {
        return $this->query;
    }

    public function headings(): array
    {
        return [
            'Sandi Bank',
            'Kode Kantor',
            'Kode Cabang',
            'Tahun',
            'Bulan',
            'No Rekening',
            'CIF',
            'Nama Debitur',
            'NPWP',
            'No KTP',
            'No Telp',
            'Alamat',
            'Kode Pos',
            'Kode Kab/Kota',
            'Kode Negara Domisili',
            'Kode Jenis',
            'Kode Sifat',
            'Kode Valuta',
            'Baki Debet',
            'Kolektibilitas',
            'Tanggal Mulai',
            'Tanggal Jatuh Tempo',
            'Tanggal Selesai',
            'Tanggal Restrukturisasi',
            'Kode Sebab Macet',
            'Tanggal Macet',
            'Kode Kondisi',
            'Tanggal Kondisi',
            'Nilai Agunan',
            'Jenis Agunan',
            'Kode Agunan',
            'Peringkat Agunan',
            'Fasilitas',
            'Status Agunan',
            'Tanggal Lapor',
            'Status',
            'Tanggal Dibuat',
        ];
    }

    public function map($laporanSlik): array
    {
        return [
            $laporanSlik->sandi_bank,
            $laporanSlik->kode_kantor,
            $laporanSlik->kode_cabang,
            $laporanSlik->tahun,
            $laporanSlik->bulan,
            $laporanSlik->no_rekening,
            $laporanSlik->cif,
            $laporanSlik->nama_debitur,
            $laporanSlik->npwp,
            $laporanSlik->no_ktp,
            $laporanSlik->no_telp,
            $laporanSlik->alamat,
            $laporanSlik->kode_pos,
            $laporanSlik->kode_kab_kota,
            $laporanSlik->kode_negara_domisili,
            $laporanSlik->kode_jenis,
            $laporanSlik->kode_sifat,
            $laporanSlik->kode_valuta,
            $laporanSlik->baki_debet,
            $laporanSlik->kolektibilitas,
            $laporanSlik->tanggal_mulai,
            $laporanSlik->tanggal_jatuh_tempo,
            $laporanSlik->tanggal_selesai,
            $laporanSlik->tanggal_restrukturisasi,
            $laporanSlik->kode_sebab_macet,
            $laporanSlik->tanggal_macet,
            $laporanSlik->kode_kondisi,
            $laporanSlik->tanggal_kondisi,
            $laporanSlik->nilai_agunan,
            $laporanSlik->jenis_agunan,
            $laporanSlik->kode_agunan,
            $laporanSlik->peringkat_agunan,
            $laporanSlik->fasilitas,
            $laporanSlik->status_agunan,
            $laporanSlik->tanggal_lapor,
            $laporanSlik->status,
            $laporanSlik->created_at->format('d/m/Y H:i'),
        ];
    }

    public function styles(Worksheet $sheet)
    {
        return [
            1 => ['font' => ['bold' => true]],
        ];
    }
}