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/PermintaanExport.php

<?php

namespace App\Exports;

use App\Models\SuratPermintaan;
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 Auth;
use Maatwebsite\Excel\Concerns\WithStyles;

class PermintaanExport implements FromCollection, WithMapping, WithHeadings,WithEvents,ShouldAutoSize
{   
    private $request;
    public function __construct(Request $request){
        $this->request = $request;
    }
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        if (PermissionHelper::checkPermission('view all permintaan')) {
            $query = SuratPermintaan::filter($this->request)
                ->with('peminta:id,name', 'peminta.divisi.divisi.perusahaan')
                ->with('posisiSurat:id,name')
                ->whereHas('suratSignature', function ($query) {
                    $query->where('status', '1');
                })
                ->where('status', '1')
                ->with('groupItem');
        } else {
            $query = SuratPermintaan::filter($this->request)
                ->where(function ($w) {
                    $w->where(function ($w1) {
                        $w1->whereHas('suratSignature', function ($query) {
                            $query->where('user_id', Auth::user()->id)->where('status', '1');
                        });
                    })->orWhere(['user_id' => Auth::user()->id])->orWhere('user_id',Auth::user()->id);
                })
                ->where('status', '1')
                ->with('peminta:id,name', 'peminta.divisi.divisi.perusahaan')
                ->with('posisiSurat:id,name')
                ->with('groupItem');
        }

        if (!PermissionHelper::checkPermission('view all divisi') && Auth::user()->divisi) {
            $query = $query->whereIn('divisi_id', Auth::user()->divisis->pluck('divisi_id')->toArray());
        }

        $query = $query->whereHas('pembayarans')->where('status','1');
        return $query->orderBy('id', 'desc')->get();
    }

    public function headings(): array
    {
        return [
            'PEMOHON',
            'PERIHAL',
            'NOMOR SURAT',
            'JUMLAH PENGAJUAN',
            'TANGGAL PENGAJUAN',
        ];
    }


    public function map($surat): array
    {
        $generator = new Generator;
        return [
            'pemohon'=>$surat->peminta->name,
            'perihal'=>$surat->perihal,
            'nomor_surat'=>$surat->nomor_surat_format,
            'nominal_pengajuan'=>$surat->groupItem->sum('total_bayaran'),
            'created_at'=>$surat->created_at->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:E1')
                ->applyFromArray(
                    array(
                        'fill'=>array(
                            'fillType'   => Fill::FILL_SOLID,
                            'startColor' => ['argb' => Color::COLOR_GREEN],
                        ),
                    ),
                );
                $event->getSheet()->getDelegate()->getStyle('A1:E1')->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]