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