<?php
namespace App\Imports;
use App\Models\DataWarga;
use App\Models\Dpt;
use Maatwebsite\Excel\Concerns\ToModel;
use App\Models\UserLog;
use App\Models\Kelurahan;
use App\Models\Kecamatan;
use App\Models\Tp;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class DataWargaImport implements ToModel
{
public function transformDate($value, $format = 'Y-m-d')
{
try {
return \Carbon\Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value))->format($format);
} catch (\ErrorException $e) {
return date($format,strtotime($value));
}
}
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public $headerCheck = false;
public $total = 0;
public $dptNONRegister = 0;
public function model(array $row)
{
if($this->headerCheck == false) {
$this->headerCheck = true;
} else {
$user = Auth::user();
if(isset($row[2]) && strlen($row[2]) > 0 && strtolower($row[2]) != "nik" && isset($row[12]) && strlen($row[12]) > 0 && isset($row[13]) && strlen($row[13]) > 0 ){
$ceknik = DataWarga::where('nik',$row[2])->where('deleted_at',null)->first();
if($ceknik){
$s = Session::get('alert_import',[]);
$s[] = 'data warga dari excel dengan nik '.$row[2].' tidak bisa di input karena data dengan nik tersebut sudah ada / pernah diinput';
Session::put('alert_import', $s);
} else {
// $cek = Kelurahan::where('nama_kelurahan','like','%'.$row[8].'%')->first();
$kelurahanItem = $row[0];
$cek = Dpt::join('tps','tps.id','=','dpts.tps_id')
->join('kelurahans', 'kelurahans.id','=', 'tps.kelurahan_id')
->join('kecamatans', 'kelurahans.kecamatan_id','=','kecamatans.id')
->join('kabupatens','kabupatens.id', '=', 'kecamatans.kabupaten_id')
->where('nama_lengkap','like','%'.$row[1].'%')
->where('kelurahan_id','like','%'.$kelurahanItem.'%')
->first();
// if($user->role == 1) {
// // $cek = Dpt::where('nama_lengkap','like','%'.$row[1].'%')->whereHas('tp', function($tp) use($kelurahanItem) {
// // $tp->whereHas('kelurahans', function($kelu) use($kelurahanItem) {
// // $kelu->where('nama_kelurahan','like','%'.$kelurahanItem.'%');
// // });
// // })->first();
// $cek = Dpt::join('tps','tps.id','=','dpts.tps_id')
// ->join('kelurahans', 'kelurahans.id','=', 'tps.kelurahan_id')
// ->join('kecamatans', 'kelurahans.kecamatan_id','=','kecamatans.id')
// ->join('kabupatens','kabupatens.id', '=', 'kecamatans.kabupaten_id')
// ->where('nama_lengkap','like','%'.$row[1].'%')
// ->where('nama_kelurahan','like','%'.$kelurahanItem.'%')
// ->first();
// } else {
// // $cek = Dpt::with('tp.kelurahans.kecamatan')->where('nama_lengkap','like','%'.$row[1].'%')->whereHas('tp', function($tp) use($kelurahanItem, $user) {
// // $tp->whereHas('kelurahans', function($kelu) use($kelurahanItem, $user) {
// // $kelu->where('nama_kelurahan','like','%'.$kelurahanItem.'%')->whereHas('kecamatan', function($kec) use($user) {
// // $kec->where('kabupaten_id', $user->kabupaten_id);
// // });
// // });
// // })->first();
// $cek = Dpt::join('tps','tps.id','=','dpts.tps_id')
// ->join('kelurahans', 'kelurahans.id','=', 'tps.kelurahan_id')
// ->join('kecamatans', 'kelurahans.kecamatan_id','=','kecamatans.id')
// ->join('kabupatens','kabupatens.id', '=', 'kecamatans.kabupaten_id')
// ->where('nama_lengkap','like','%'.$row[1].'%')
// ->where('nama_kelurahan','like','%'.$kelurahanItem.'%')
// ->where('kabupaten_id', $user->kabupaten_id)
// ->first();
// // dd($cek);
// }
// dd($cek);
$lan = array(
1 => '1 / Prajurit Tentara Nasional Indonesia',
2 => '2 / Anggota Kepolisian Negara Republik Indonesia',
3 => '3 / Aparatur sipil negara',
4 => '4 / Penyelenggara Pemilu',
5 => '5 / PPK',
6 => '6 / PPS',
7 => '7 / Panwaslu Kecamatan',
8 => '8 / Panwaslu Kelurahan atau Desa',
9 => '9 / Pegawai kesekretariatan penyelenggara Pemilihan',
10 => '10 / Kepala Desa atau sebutan lain',
11 => '11 / Perangkat Desa atau sebutan lain',
12 => '12 / Lainnya',
);
if($cek){
$kelurahan_id = $cek->tp->kelurahan_id;
$data = [
'kelurahan_id'=>$kelurahan_id,
'nama_lengkap'=>$cek->nama_lengkap,
'nik'=> $row[2],
'jenis_kelamin'=>$row[3],
'alamat'=>$row[4],
'rt'=>$row[5],
'rw'=>0,
'ttl'=>$row[6].' , '.$this->transformDate($row[7],'d-m-Y'),
'pekerjaan'=>$lan[$row[8]],
'kawin'=>$row[9],
'no_telepon'=> $row[10],
'email'=> $row[11],
'agama'=>$row[12],
'nama_penghubung'=>$row[13],
'no_telp_penghubung'=> $row[14],
'keterangan'=> $row[15],
'user_id'=>$user->id,
'e_ktp'=>"-",
'dpt_id' => $cek->id
];
$msg = 'Berhasil menambah data warga dari excel dengan nik '.$data['nik'];
UserLog::create(['user_id'=>$user->id,'keterangan'=>$msg]);
$this->total += 1;
return new DataWarga($data);
} else {
$kl = Kelurahan::where('kelurahan_id','like','%'.$row[0].'%')->first();
// dd($kl);
if($kl) {
$tp = Tp::where('kelurahan_id', $kl->id)->first();
// dd($tp);
$datas = [
'nik'=>$row[2] != '-' ? $row[2] : null ,
'nama_lengkap'=>$row[1],
// 'no_telepon'=> null,
'jenis_kelamin'=>$row[3] == "Laki-laki" ? "L" : "P",
// 'ttl'=>null,
// 'user_id'=>$user->id,
// 'e_ktp'=>"-",
'alamat'=>$row[4],
'rt'=>$row[5],
'rw'=>0,
'tps_id'=>$tp->id,
// 'agama'=>null,
// 'kawin'=>null,
// 'pekerjaan'=> null,
// 'nama_penghubung'=> null,
// 'no_telp_penghubung'=> null,
'usia' => 0,
'keterangan' => $row[15],
'status' => 1,
];
$dpt = Dpt::create($datas);
$data = [
'kelurahan_id'=>$kl->id,
'nama_lengkap'=>$dpt->nama_lengkap,
'nik'=> $row[2],
'jenis_kelamin'=>$row[3],
'alamat'=>$row[4],
'rt'=>$row[5],
'rw'=>0,
'ttl'=>$row[6].' , '.$this->transformDate($row[7],'d-m-Y'),
'pekerjaan'=>$lan[$row[8]],
'kawin'=>$row[9],
'no_telepon'=> $row[10],
'email'=> $row[11],
'agama'=>$row[12],
'nama_penghubung'=>$row[13],
'no_telp_penghubung'=> $row[14],
'keterangan'=> $row[15],
'user_id'=>$user->id,
'e_ktp'=>"-",
'dpt_id' => $dpt->id
];
$msg = 'Berhasil menambah dpt belum terdaftar dari excel dengan nik '.$data['nik'];
UserLog::create(['user_id'=>$user->id,'keterangan'=>$msg]);
$this->dptNONRegister += 1;
return new DataWarga($data);
} else {
$s = Session::get('alert_import',[]);
$s[] = 'data warga dari excel dengan nik '.$row[0].' tidak bisa di input karena Kelurahan tidak di temukan';
Session::put('alert_import', $s);
}
}
}
}
}
}
public function getTotal(): int
{
return $this->total;
}
public function getdptNonRegister(): int {
return $this->dptNONRegister;
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]