<?php
namespace App\Exports;
use App\Models\Budget;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use App\Helper\Generator;
use App\Helper\PermissionHelper;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\BeforeImport;
use Maatwebsite\Excel\Events\AfterImport;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Events\BeforeSheet;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use \Carbon\Carbon;
use Illuminate\Support\Facades\Auth;
class BudgetExport implements FromCollection, WithMapping, WithHeadings,WithEvents,ShouldAutoSize
{
public $request;
public $month;
// use Component;
/**
* @return \Illuminate\Support\Collection
*/
public function __construct(Request $request,$month){
$this->request = $request;
$this->month = $month;
}
public function collection()
{
$datas = Budget::filter($this->request)->with('divisi','perusahaan','item.groupItem.surat')
->with('approvedItem');
if($this->request->divisi_id != "" && $this->request->divisi_id != null){
$datas = $datas->whereIn('divisi_id',[$this->request->divisi_id]);
} else {
if(!PermissionHelper::checkPermission('view all budged')){
$datas = $datas->whereIn('divisi_id',Auth::user()->divisis->pluck('divisi_id')->toArray())->whereIn('perusahaan_id',Auth::user()->perusahaans->pluck('perusahaan_id')->toArray());
}
}
$datas = $datas->orderBy('id','desc');
return $datas->get();
}
public function headings(): array
{
return [
'KODE',
'NAMA ANGGARAN',
'BULAN ANGGARAN',
'TAHUN ANGGARAN',
'JUMLAH ANGGARAN',
'JUMLAH DIAJUKAN',
'JUMLAH REALISASI',
'SISA ANGGARAN',
'KETERANGAN REALISASI BIAYA (MANUAL)',
'TANGGAL REALISASI (MANUAL)',
];
}
public function map($budget): array
{
return [
'kode'=>$budget->kode_budget,
'nama_anggaran'=>$budget->nama_anggaran,
'bulan_anggaran'=>isset($this->month[$budget->budget_bulan])?$this->month[$budget->budget_bulan]:'-',
'tahun_anggaran'=>$budget->budget_tahun != '0'?$budget->budget_tahun:'-',
'jumlah_anggaran'=>$budget->jumlah_anggaran,
'jumlah_diajukan'=>(int)$budget->total_terpakai ?? 0,
'jumlah_realisasi'=>(int)$budget->total_realisasi ?? 0,
'sisa_anggaran'=>(int)$budget->sisa_anggaran ?? 0,
'keterangan'=>$budget->keterangan_realisasi,
'tanggal_realisasi'=>isset($budget->tanggal_realisasi)?Carbon::create($budget->tanggal_realisasi)->format('d/m/Y'):'-',
];
}
public function registerEvents(): array
{
return [
AfterSheet::class=> function(AfterSheet $event)
{
$last_record = $event->getSheet()->getCellCollection()->getCurrentCoordinate();
$event->getSheet()->getDelegate()->getStyle('A1:J1')
->applyFromArray(
array(
'fill'=>array(
'fillType' => Fill::FILL_SOLID,
'startColor' => ['argb' => Color::COLOR_GREEN],
),
),
);
$event->getSheet()->getDelegate()->getStyle('A1:J1')->getFont()->setBold(true);
$event->getSheet()->getDelegate()->getStyle('A1:'.$last_record)
->applyFromArray(
array(
'borders' => array(
'allBorders' => array(
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['rgb' => '000000'],
)
)
)
);
}
];
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]