Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/isranhadikaltim.id/app/Imports/
Upload File :
Current File : /home/aplikasiposinfo/public_html/isranhadikaltim.id/app/Imports/DataWargaImport.php

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