<?php
namespace App\Exports\Sheets;
use App\Models\KabupatenKota;
use App\Models\Kecamatan;
use App\Models\KelurahanDesa;
use App\Models\Partai;
use App\Models\Pelatihan;
use App\Models\Regency;
use App\Models\Tps;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
class MasterDataSheet implements FromView, WithTitle,ShouldAutoSize,WithEvents
{
//public $user;
public function __construct()
{
}
public function view(): View
{
$multiDropdown = [];
$user = auth()->user();
$kabupatenKotas = Regency::with('districts.villages')->where('province_id',64);
$kabupatenKotas = $kabupatenKotas->get();
foreach ($kabupatenKotas as $kabupatenKota) {
$multiDropdown[$kabupatenKota->id] = [
"nama"=>$kabupatenKota->name,
"sub_data"=>[]
];
foreach ($kabupatenKota->districts as $kecamatan) {
$multiDropdown[$kabupatenKota->id]["sub_data"][$kecamatan->id] = [
"nama"=>$kecamatan->name,
];
foreach ($kecamatan->villages as $desa) {
$multiDropdown[$kabupatenKota->id]["sub_data"][$kecamatan->id]['sub_data'][$desa->id] = [
"nama"=>$desa->name,
];
}
}
}
$pelatihans = Pelatihan::all();
return view('admin.peserta.template-excel-master-data',compact('kabupatenKotas','multiDropdown','pelatihans'));
}
/**
* @return string
*/
public function title(): string
{
return 'MASTER_DATA';
}
public function registerEvents(): array
{
$kabupatenKotas = Regency::with('districts.villages')->where('province_id',64);
$kabupatenKotas = $kabupatenKotas->get();
return [
AfterSheet::class => function(AfterSheet $event)use($kabupatenKotas) {
$event->sheet->getDelegate()->getParent()->addNamedRange(
new \PhpOffice\PhpSpreadsheet\NamedRange(
'ListKabupatenKota',
$event->sheet->getDelegate(),
'$A$1:$A$'.count($kabupatenKotas)
)
);
$offset = count($kabupatenKotas)+2;
foreach ($kabupatenKotas as $index_kab_kota => $kabupatenKota) {
$event->sheet->getDelegate()->getParent()->addNamedRange(
new \PhpOffice\PhpSpreadsheet\NamedRange(
"KEC_".str_replace(' ','_',str_replace("'",'',$kabupatenKota->name)),
$event->sheet->getDelegate(),
'$B$'.($index_kab_kota+1).':$'.Coordinate::stringFromColumnIndex(($kabupatenKota->districts->count()+1)).'$'.($index_kab_kota+1)
)
);
foreach ($kabupatenKota->districts as $index_kec => $kecamatan) {
$event->sheet->getDelegate()->getParent()->addNamedRange(
new \PhpOffice\PhpSpreadsheet\NamedRange(
"KEL_DES_".(str_replace("'",'-',str_replace('/','-',str_replace(' ','_',str_replace("'","",$kecamatan->name))))),
$event->sheet->getDelegate(),
'$C$'.($offset+($index_kab_kota+1)+($index_kec+1)).':$C$'.($kecamatan->villages->count()+($offset+($index_kab_kota+1)+($index_kec)))
)
);
$offset += $kecamatan->villages->count();
}
$offset += $kabupatenKota->districts->count();
}
$event->sheet->getDelegate()->getParent()->addNamedRange(
new \PhpOffice\PhpSpreadsheet\NamedRange(
'ListPelatihan',
$event->sheet->getDelegate(),
'$A$'.($offset+count($kabupatenKotas)).':$A$'.($offset+Pelatihan::count())
)
);
},
];
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]