<?php
namespace App\Imports;
use App\Models\JenisPembayaran;
use App\Models\JenisPembayaranSiswa;
use App\Models\Jenjang;
use App\Models\KategoriSiswa;
use App\Models\Kelas;
use App\Models\KelasPararel;
use App\Models\Siswa;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithCalculatedFormulas;
class SiswasImport implements ToModel, WithCalculatedFormulas
{
protected $jenisPembayarans = [];
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
if(strtolower($row[0]) == 'nis'){
for ($i=14; $i < count($row); $i++) {
$this->jenisPembayarans[] = $row[$i];
}
return null;
}
if(strtolower($row[0]) == "" && strtolower($row[1]) == "" && strtolower($row[7]) == ""){
return null;
}
$nis = str_replace("'","",str_replace("`","",$row[0]));
$nama_siswa = $row[1];
$jenis_kelamin = $row[2];
$email = $row[3];
$no_hp = str_replace("'","",str_replace("`","",$row[4]));
$alamat = $row[5];
$orang_tua_wali = $row[6];
$kategori_siswa = $row[7];
$cekKategori = KategoriSiswa::where('nama_kategori_siswa', $kategori_siswa)->first();
if(!$cekKategori){
throw new \Exception('Kategori Siswa '.$kategori_siswa.' tidak ditemukan');
}
$kategori_siswa_id = $cekKategori->id;
$jenjang = $row[8];
$cekJenjang = Jenjang::where('nama_jenjang', $jenjang)->first();
if(!$cekJenjang){
throw new \Exception('Jenjang '.$jenjang.' tidak ditemukan');
}
$jenjang_id = $cekJenjang->id;
$kelas = $row[9];
$cekKelas = Kelas::where('nama_kelas', $kelas)->first();
if(!$cekKelas){
throw new \Exception('Kelas '.$kelas.' tidak ditemukan');
}
$kelas_id = $cekKelas->id;
$kelas_pararel = $row[10];
$cekKelasPararel = KelasPararel::where('nama_kelas_pararel', $kelas_pararel)->first();
if(!$cekKelasPararel){
throw new \Exception('Kelas Pararel '.$kelas_pararel.' tidak ditemukan');
}
$kelas_pararel_id = $cekKelasPararel->id;
$status = $row[11];
$mulai_pembayaran = $row[12];
$tahun_ajaran = str_replace(' ', '', $row[13]);
$siswa = Siswa::where('nis', $nis)->where('nama_siswa', $nama_siswa)->where('tahun_ajaran',$tahun_ajaran)->first();
if($siswa){
$siswa->update([
'nama_siswa' => $nama_siswa,
'jenis_kelamin' => $jenis_kelamin,
'email' => $email,
'no_hp' => $no_hp,
'alamat' => $alamat,
'orang_tua_wali' => $orang_tua_wali,
'kategori_siswa_id' => $kategori_siswa_id,
'kelas_id' => $kelas_id,
'kelas_pararel_id' => $kelas_pararel_id,
'status_siswa' => $status,
'mulai_pembayaran' => $mulai_pembayaran,
'tahun_ajaran' => $tahun_ajaran,
]);
}else{
$siswa = Siswa::create([
'nis' => $nis,
'nama_siswa' => $nama_siswa,
'jenis_kelamin' => $jenis_kelamin,
'email' => $email,
'no_hp' => $no_hp,
'alamat' => $alamat,
'orang_tua_wali' => $orang_tua_wali,
'kategori_siswa_id' => $kategori_siswa_id,
'kelas_id' => $kelas_id,
'kelas_pararel_id' => $kelas_pararel_id,
'status_siswa' => $status,
'mulai_pembayaran' => $mulai_pembayaran,
'tahun_ajaran' => $tahun_ajaran,
]);
}
for ($i=14; $i < count($row); $i++) {
if($this->jenisPembayarans[$i-14] != null){
$jarr = explode('/', $this->jenisPembayarans[$i-14]);
$jenis_pembayaran = JenisPembayaran::where('nama_jenis_pembayaran',$jarr[1])->where('sifat_pembayaran',strtolower($jarr[0]))->first();
$siswa->jenis_pembayaran_siswas()->updateOrCreate(['jenis_pembayaran_id' => $jenis_pembayaran->id],[
'nominal' => $row[$i],
]);
}
}
return $siswa;
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]