Files
admin-erahn/app/Exports/GadaianSummaryExport.php
2023-12-03 10:14:43 +08:00

117 lines
3.7 KiB
PHP

<?php
namespace App\Exports;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
use Maatwebsite\Excel\Concerns\WithEvents;
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithTitle;
class GadaianSummaryExport extends DefaultValueBinder implements FromView, ShouldAutoSize, WithCustomValueBinder, WithColumnWidths, WithEvents, WithColumnFormatting, WithTitle
{
public $cawangan_detail;
public $query;
public $teller_with_gadaian_summary_data;
public $summary_gadaian;
public function __construct($cawangan_detail, $query, $teller_with_gadaian_data, $summary_gadaian)
{
$this->cawangan_detail = $cawangan_detail;
$this->query = $query;
$this->teller_with_gadaian_summary_data = $teller_with_gadaian_data;
$this->summary_gadaian = $summary_gadaian;
}
public function title(): string
{
return 'SUMMARY GADAIAN';
}
public function bindValue(Cell $cell, $value)
{
if (is_numeric($value)) {
$cell->setValueExplicit($value, DataType::TYPE_NUMERIC);
return true;
}
// else return default behavior
return parent::bindValue($cell, $value);
}
public function columnWidths(): array
{
return [
'A' => 28,
'B' => 14.67,
'C' => 16.00,
'D' => 14.18,
];
}
public function columnFormats(): array
{
return [
'B' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'C' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
];
}
public function registerEvents(): array
{
$table_style = [
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '#000000'],
],
],
];
$main_table_row_count = count($this->teller_with_gadaian_summary_data) + 1;
$main_table_start_at_row = 9;
$main_table_range = 'A' . $main_table_start_at_row . ':J' . ($main_table_row_count + $main_table_start_at_row);
$summary_table_row_count = 1;
$summary_table_start_at_row = $main_table_row_count + $main_table_start_at_row + 5;
$summary_table_range = 'A' . $summary_table_start_at_row . ':I' . ($summary_table_row_count + $summary_table_start_at_row);
$summary_table_column_head = 'A' . $summary_table_start_at_row . ':F' . $summary_table_start_at_row;
// return [
// AfterSheet::class => function (AfterSheet $event) use ($main_table_range, $summary_table_range, $summary_table_column_head, $table_style) {
// $event->sheet->getStyle($main_table_range)->applyFromArray($table_style);
// $event->sheet->getStyle($summary_table_range)->applyFromArray($table_style);
// $event->sheet->mergeCells($summary_table_column_head);
// },
// ];
return [];
}
public function view(): View
{
return view('exports.gadaian.summary', [
'cawangan_detail' => $this->cawangan_detail,
'query' => $this->query,
'teller_with_gadaian_data' => $this->teller_with_gadaian_summary_data,
'summary_gadaian' => $this->summary_gadaian,
]);
}
}