MIF_E31221105/app/Imports/DataAlumniImport.php

64 lines
2.3 KiB
PHP

<?php
namespace App\Imports;
use App\Models\DataAlumni;
use App\Models\TahunAngkatan;
use App\Models\Jabatan;
use App\Models\KualifikasiBidang;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class DataAlumniImport implements ToModel,WithHeadingRow
{
public function model(array $row)
{
// Cek apakah tahun angkatan sudah ada di tabel TahunAngkatan
$tahunAngkatan = TahunAngkatan::where('tahun', $row['angkatan'])->first();
// Jika tahun angkatan tidak ada, buat baru
if (!$tahunAngkatan) {
$tahunAngkatan = TahunAngkatan::create([
'tahun' => $row['angkatan'],
]);
}
$jenisProfesi = ucwords(strtolower(trim($row['jenis_profesi'])));
$jenisProfesiValid = [
'Programmer', 'Data Analyst', 'Business Intelligence Developer',
'Wirausaha', 'Non IT', 'Tidak diketahui', 'Tidak bekerja',
'Pelajar', 'Wirausaha IT', 'Infokom'
];
if (!in_array($jenisProfesi, $jenisProfesiValid)) {
$jenisProfesi = 'Tidak diketahui'; // fallback default
}
// 3. Ambil ID jabatan dari nama (bukan langsung dari Excel)
$jabatan = Jabatan::where('Kategori_bidang_kerja', $row['kelompok_jabatan'])->first();
$jabatanId = $jabatan ? $jabatan->id_kategori : null;
// 4. Ambil ID kualifikasi bidang dari nama (bukan langsung dari Excel)
$kualifikasi = KualifikasiBidang::where('kualifikasi_bidang', $row['kualifikasi_bidang_kerja'])->first();
$kualifikasiId = $kualifikasi ? $kualifikasi->id_kualifikasi : null;
// Ambil ID angkatan yang ada
$angkatanId = $tahunAngkatan->id_angkatan;
return new DataAlumni([
'nama' => $row['nama'],
'nim' => $row['nim'],
'angkatan' => $angkatanId,
'masa_tunggu' => $row['masa_tunggu'],
'pekerjaan' => $row['pekerjaan'],
'instansi' => $row['instansi'],
'link_linkedin' => $row['link_linkedin'] ?? '-',
'Jenis_profesi' => $jenisProfesi,
'lingkup_pekerjaan' => $row['lingkup_pekerjaan'],
'kualifikasi_bidang_kerja' => $kualifikasiId,
'jabatan' => $jabatanId,
]);
}
}