Advertisement
Guest User

Example

a guest
Dec 6th, 2019
316
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 45.17 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Imports;
  4.  
  5. use Illuminate\Support\Collection;
  6. use Illuminate\Support\Facades\Validator;
  7.  
  8. use Maatwebsite\Excel\HeadingRowImport;
  9. use Maatwebsite\Excel\Imports\HeadingRowFormatter;
  10. use Maatwebsite\Excel\Concerns\WithHeadingRow;
  11. use Maatwebsite\Excel\Concerns\ToCollection;
  12.  
  13. use App\TempSiswa;
  14. use App\Siswa;
  15. use App\OrtuWali;
  16. use App\Wali;
  17. use App\Pribadi;
  18. use App\RiwayatPendidikan;
  19. use App\Kelengkapan;
  20. use App\Bantuan;
  21.  
  22. use App\Kelas;
  23. use Auth;
  24.  
  25. ini_set('max_execution_time', '600');
  26. ini_set('memory_limit', '3096M');
  27.  
  28. HeadingRowFormatter::default('none');
  29.  
  30. class SiswaImport implements  ToCollection, WithHeadingRow
  31. {
  32.     private $data;
  33.  
  34.     public function __construct($data)
  35.     {
  36.         $this->data = $data;
  37.     }
  38.  
  39.     /**
  40.      * @param array $row
  41.      */
  42.  
  43.  
  44.     public function collection(Collection $rows)
  45.     {
  46.  
  47.         foreach($rows as $row){
  48.      $row['Lintang'] == NULL || '';
  49.      $row['Bujur'] ==   NULL || '';
  50.         }
  51.         // dd($rows);
  52.         $sekolah_id     = \Auth::user()->sekolah_id;
  53.         $is_subs        = \Auth::user()->is_subscribe;
  54.         $semester_id    = $this->data['tahun_ajaran'] . $this->data['semester'];
  55.  
  56.         $semester_select = intval($semester_id);
  57.  
  58.         $semester_max   = TempSiswa::where('sekolah_id', '=', $sekolah_id)->max('semester_id') != NULL ?
  59.                           TempSiswa::where('sekolah_id', '=', $sekolah_id)->max('semester_id') : 0;
  60.         $semester_max   = intval($semester_max);
  61.  
  62.         $kelas          = Kelas::select('id', 'nama_kelas')
  63.                                 ->where('sekolah_id', '=', \Auth::user()->sekolah_id)
  64.                                 ->where('semester_id', '=', $semester_id)
  65.                                 ->get()
  66.                                 ->pluck('id', 'nama_kelas');
  67.  
  68.         $tempLama       = TempSiswa::select('id', 'nisn')
  69.                                     ->where('sekolah_id', '=', \Auth::user()->sekolah_id)
  70.                                     ->where('semester_id', '=', $semester_id)
  71.                                     ->get()->toArray();
  72.  
  73.         $countBayar = \DB::table('tb_subscribe')->where('sekolah_id', '=', $sekolah_id)
  74.                          ->where('tahun_bayar', '=', $this->data['tahun_ajaran'])
  75.                          ->count();
  76.  
  77.         $idLama = [];
  78.         $lama = [];
  79.         $baru = [];
  80.  
  81.         // Simpan NISN dari temp lama pada semester dan sekolah yang sama
  82.         foreach($tempLama as $v)
  83.         {
  84.             $idLama[] = $v['id'];
  85.             $lama[] = $v['nisn'];
  86.         }
  87.  
  88.         if($semester_select >= $semester_max)
  89.         {
  90.             foreach ($rows as $row)
  91.             {
  92.                 if($row['No'] == '' || $row['No'] == null)
  93.                 {
  94.                     continue;
  95.                 }
  96.  
  97.                 // Simpan NISN terbaru juga
  98.                 $baru[] = $row['NISN'];
  99.  
  100.                 $tempSiswa = TempSiswa::create(
  101.                 [
  102.                     'sekolah_id'        => $sekolah_id,
  103.                     'semester_id'       => $semester_id,
  104.                     'nama'              => $row['Nama'],
  105.                     'nipd'              => $row['NIPD'],
  106.                     'jk'                => $row['JK'],
  107.                     'nisn'              => $row['NISN'],
  108.                     'tempat_lahir'      => $row['Tempat Lahir'],
  109.                     'tanggal_lahir'     => $row['Tanggal Lahir'],
  110.                     'nik'               => $row['NIK'],
  111.                     'agama'             => $row['Agama'],
  112.                     'alamat'            => $row['Alamat'],
  113.                     'rt'                => $row['RT'],
  114.                     'rw'                => $row['RW'],
  115.                     'dusun'             => $row['Dusun'],
  116.                     'kelurahan'         => $row['Kelurahan'],
  117.                     'kecamatan'         => $row['Kecamatan'],
  118.                     'kode_pos'          => $row['Kode Pos'],
  119.                     'hp'                => $row['HP'],
  120.                     'email'             => $row['E-Mail'],
  121.                     'skhun'             => $row['SKHUN'],
  122.                     'nama_ayah'         => $row['Data Ayah'],
  123.                     'tahun_lahir_ayah'  => $row[0],
  124.                     'pendidikan_ayah'   => $row[1],
  125.                     'pekerjaan_ayah'    => $row[2],
  126.                     'penghasilan_ayah'  => $row[3],
  127.                     'nik_ayah'          => $row[4],
  128.                     'nama_ibu'          => $row['Data Ibu'],
  129.                     'tahun_lahir_ibu'   => $row[5],
  130.                     'pendidikan_ibu'    => $row[6],
  131.                     'pekerjaan_ibu'     => $row[7],
  132.                     'penghasilan_ibu'   => $row[8],
  133.                     'nik_ibu'           => $row[9],
  134.                     // 'kelengkapan_id'    => $siswaKelengkapan->id,
  135.                 ]);
  136.  
  137.                 // Insert or Update Ortuwali
  138.                 $ortuwali = OrtuWali::updateOrCreate([
  139.                     'nama_ayah'         => $row['Data Ayah'],
  140.                     'tahun_lahir_ayah'  => $row[0],
  141.                     'nama_ibu'          => $row['Data Ibu'],
  142.                     'tahun_lahir_ibu'   => $row[5],
  143.                 ],
  144.                 [
  145.                     'nama_ayah'         => $row['Data Ayah'],
  146.                     'tahun_lahir_ayah'  => $row[0],
  147.                     'pendidikan_ayah'   => $row[1],
  148.                     'pekerjaan_ayah'    => $row[2],
  149.                     'penghasilan_ayah'  => $row[3],
  150.                     'nik_ayah'          => $row[4],
  151.  
  152.                     'nama_ibu'          => $row['Data Ibu'],
  153.                     'tahun_lahir_ibu'   => $row[5],
  154.                     'pendidikan_ibu'    => $row[6],
  155.                     'pekerjaan_ibu'     => $row[7],
  156.                     'penghasilan_ibu'   => $row[8],
  157.                     'nik_ibu'           => $row[9],
  158.                 ]);
  159.  
  160.                 // $siswaKelengkapan = SiswaKelengkapan::create([
  161.                 //     'sekolah_id'        => Auth::user()->sekolah_id,
  162.                 //     'skhun'             => $row['SKHUN'],
  163.                 //     'penerima_kps'      => $row['Penerima KPS'],
  164.                 //     'no_kps'            => $row['No. KPS'],
  165.                 //     'no_kip'            => $row['Nomor KIP'],
  166.                 //     'nama_kip'          => $row['Nama di KIP'],
  167.                 //     'no_kks'            => $row['Nomor KKS'],
  168.                 //     'layak_pip'         => $row['Layak PIP (usulan dari sekolah)'],
  169.                 //     'alasan_layak_pip'  => $row['Alasan Layak PIP'],
  170.                 //     'nama_bank'         => $row['Bank'],
  171.                 //     'rekening_bank'     => $row['Nomor Rekening Bank'],
  172.                 //     'atasnama_bank'     => $row['Rekening Atas Nama'],
  173.                 //     'no_peserta_un'     => $row['No Peserta Ujian Nasional'],
  174.                 //     'no_ijazah'         => $row['No Seri Ijazah'],
  175.                 //     'jenis_tinggal'     => $row['Jenis Tinggal'],
  176.                 //     'alat_transportasi' => $row['Alat Transportasi'],
  177.                 //     'asal_sekolah'      => $row['Sekolah Asal'],
  178.                 //     'kelas_masuk'       => $row['Rombel Saat Ini'],
  179.                 // ]);
  180.  
  181.                 // //]);
  182.  
  183.  
  184.                 /**
  185.                  * mencari nisn yg sama di excel dan database, jika ada kesamaan tidak masuk ke table siswa
  186.                  * jika tidak ada kesamaan masuk ke table siswa
  187.                  */
  188.  
  189.                 // $siswaNISN  = Siswa::where('nisn_utama', '=', $row['NISN'])->exists();
  190.                 // $siswaID    = Siswa::where('nisn_utama', '=', $row['NISN'])->select('id')->first();
  191.  
  192.                 // if( ! $siswaNISN)
  193.                 // {
  194.                 //     $siswa = Siswa::create([
  195.                 //         'sekolah_id'                    => \Auth::user()->sekolah_id,
  196.                 //         'nama'                          => $row['Nama'],
  197.                 //         'nipd'                          => $row['NIPD'],
  198.                 //         'jk'                            => $row['JK'],
  199.                 //         'nisn_utama'                    => $row['NISN'],
  200.                 //         'tempat_lahir'                  => $row['Tempat Lahir'],
  201.                 //         'tanggal_lahir'                 => $row['Tanggal Lahir'],
  202.                 //         'nik'                           => $row['NIK'],
  203.                 //         'agama'                         => $row['Agama'],
  204.                 //         'alamat'                        => $row['Alamat'],
  205.                 //         'rt'                            => $row['RT'],
  206.                 //         'rw'                            => $row['RW'],
  207.                 //         'dusun'                         => $row['Dusun'],
  208.                 //         'kelurahan'                     => $row['Kelurahan'],
  209.                 //         'kecamatan'                     => $row['Kecamatan'],
  210.                 //         'kode_pos'                      => $row['Kode Pos'],
  211.                 //         'jenis_tinggal'                 => $row['Jenis Tinggal'],
  212.                 //         'alat_transportasi'             => $row['Alat Transportasi'],
  213.                 //         'telepon'                       => $row['Telepon'],
  214.                 //         'hp'                            => $row['HP'],
  215.                 //         'email'                         => $row['E-Mail'],
  216.                 //         'kelengkapan_id'                => $siswaKelengkapan->id,
  217.                 //     ]);
  218.                 //
  219.                 //     \DB::table('kelas_siswa')->insert([
  220.                 //         'sekolah_id'    => $sekolah_id,
  221.                 //         'semester_id'   => $semester_id,
  222.                 //         'siswa_id'      => $siswa->id,
  223.                 //         'kelas_id'      => $kelas[str_ireplace('kelas ', '', $row['Rombel Saat Ini'])]
  224.                 //     ]);
  225.                 // }
  226.  
  227.                 $status_anak = '';
  228.  
  229.                 if($ortuwali->pekerjaan_ayah === 'Sudah Meninggal' && $ortuwali->pekerjaan_ibu === 'Sudah Meninggal') {
  230.                     $status_anak = 'yatim piatu';
  231.                 }
  232.                 elseif($ortuwali->pekerjaan_ayah === 'Sudah Meninggal') {
  233.                     $status_anak = 'yatim';
  234.                 }
  235.                 elseif ($ortuwali->pekerjaan_ibu === 'Sudah Meninggal') {
  236.                     $status_anak = 'piatu';
  237.                 }
  238.                 else {
  239.                     $status_anak = 'lengkap';
  240.                 }
  241.  
  242.                 //Kondisi berlangganan atau tidak
  243.                 if($is_subs == 1 && $countBayar > 0){
  244.                     $subs_stats = 0;
  245.  
  246.                     if(str_contains($row['Rombel Saat Ini'], 'VII') == 1 &&
  247.                        str_contains($row['Rombel Saat Ini'], 'VIII') == null){
  248.                         if(strpos($row['Rombel Saat Ini'], 'VII') != strlen($row['Rombel Saat Ini'])-3){
  249.                             $subs_stats = $semester_select;
  250.                         }elseif(strtoupper(trim($row['Rombel Saat Ini'])) == 'KELAS VII' ||
  251.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'KLS VII' ||
  252.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'VII'){
  253.                             $subs_stats = $semester_select;
  254.                         }
  255.                     }elseif(str_contains($row['Rombel Saat Ini'], 'I') == 1 &&
  256.                             str_contains($row['Rombel Saat Ini'], 'X') == null &&
  257.                             str_contains($row['Rombel Saat Ini'], 'II') == null &&
  258.                             str_contains($row['Rombel Saat Ini'], 'III') == null &&
  259.                             str_contains($row['Rombel Saat Ini'], 'V') == null){
  260.                         if(strpos($row['Rombel Saat Ini'], 'I') != strlen($row['Rombel Saat Ini'])-1){
  261.                             $subs_stats = $semester_select;
  262.                         }elseif(strtoupper(trim($row['Rombel Saat Ini'])) == 'KELAS I' ||
  263.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'KLS I' ||
  264.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'I'){
  265.                             $subs_stats = $semester_select;
  266.                         }
  267.                     }elseif(str_contains($row['Rombel Saat Ini'], '7')){
  268.                         if(strpos($row['Rombel Saat Ini'], '7') != strlen($row['Rombel Saat Ini'])-1){
  269.                             $subs_stats = $semester_select;
  270.                         }elseif(strtoupper(trim($row['Rombel Saat Ini'])) == 'KELAS 7' ||
  271.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'KLS 7' ||
  272.                                 strtoupper(trim($row['Rombel Saat Ini'])) == '7'){
  273.                             $subs_stats = $semester_select;
  274.                         }
  275.                     }elseif(str_contains($row['Rombel Saat Ini'], '1')){
  276.                         if(strpos($row['Rombel Saat Ini'], '1') != strlen($row['Rombel Saat Ini'])-1){
  277.                             $subs_stats = $semester_select;
  278.                         }elseif(strtoupper(trim($row['Rombel Saat Ini'])) == 'KELAS 1' ||
  279.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'KLS 1' ||
  280.                                 strtoupper(trim($row['Rombel Saat Ini'])) == '1'){
  281.                             $subs_stats = $semester_select;
  282.                         }
  283.                     }
  284.                    
  285.                     if($subs_stats != 0){
  286.                         $siswa = Siswa::updateOrCreate([
  287.                             'nisn_utama'        => $row['NISN'],
  288.                         ],
  289.                         [
  290.                             'sekolah_id'        => $sekolah_id,
  291.                             'nama'              => $row['Nama'],
  292.                             'nipd'              => $row['NIPD'],
  293.                             'jk'                => $row['JK'],
  294.                             'nisn_utama'        => $row['NISN'],
  295.                             'tempat_lahir'      => $row['Tempat Lahir'],
  296.                             'tanggal_lahir'     => $row['Tanggal Lahir'],
  297.                             'akta_lahir'        => $row['No Registrasi Akta Lahir'],
  298.                             'nik'               => $row['NIK'],
  299.                             'agama'             => $row['Agama'],
  300.                             'alamat'            => $row['Alamat'],
  301.                             'rt'                => $row['RT'],
  302.                             'rw'                => $row['RW'],
  303.                             'dusun'             => $row['Dusun'],
  304.                             'kelurahan'         => $row['Kelurahan'],
  305.                             'kecamatan'         => $row['Kecamatan'],
  306.                             'kode_pos'          => $row['Kode Pos'],
  307.                             'telepon'           => $row['Telepon'],
  308.                             'hp'                => $row['HP'],
  309.                             'email'             => $row['E-Mail'],
  310.                             'anak_ke'           => $row['Anak ke-berapa'],
  311.                             'kebutuhan_khusus'  => $row['Kebutuhan Khusus'],
  312.                             'status_anak'       => $status_anak,
  313.                             'ortuwali_id'       => $ortuwali->id,
  314.                             'subs_stat'         => $subs_stats,
  315.                         ]);
  316.                     }else{
  317.                         $siswa = Siswa::updateOrCreate([
  318.                             'nisn_utama'        => $row['NISN'],
  319.                         ],
  320.                         [
  321.                             'sekolah_id'        => $sekolah_id,
  322.                             'nama'              => $row['Nama'],
  323.                             'nipd'              => $row['NIPD'],
  324.                             'jk'                => $row['JK'],
  325.                             'nisn_utama'        => $row['NISN'],
  326.                             'tempat_lahir'      => $row['Tempat Lahir'],
  327.                             'tanggal_lahir'     => $row['Tanggal Lahir'],
  328.                             'akta_lahir'        => $row['No Registrasi Akta Lahir'],
  329.                             'nik'               => $row['NIK'],
  330.                             'agama'             => $row['Agama'],
  331.                             'alamat'            => $row['Alamat'],
  332.                             'rt'                => $row['RT'],
  333.                             'rw'                => $row['RW'],
  334.                             'dusun'             => $row['Dusun'],
  335.                             'kelurahan'         => $row['Kelurahan'],
  336.                             'kecamatan'         => $row['Kecamatan'],
  337.                             'kode_pos'          => $row['Kode Pos'],
  338.                             'telepon'           => $row['Telepon'],
  339.                             'hp'                => $row['HP'],
  340.                             'email'             => $row['E-Mail'],
  341.                             'anak_ke'           => $row['Anak ke-berapa'],
  342.                             'kebutuhan_khusus'  => $row['Kebutuhan Khusus'],
  343.                             'status_anak'       => $status_anak,
  344.                             'ortuwali_id'       => $ortuwali->id,
  345.                         ]);
  346.                     }
  347.                 }else{
  348.                     $siswa = Siswa::updateOrCreate([
  349.                         'nisn_utama'        => $row['NISN'],
  350.                     ],
  351.                     [
  352.                         'sekolah_id'        => $sekolah_id,
  353.                         'nama'              => $row['Nama'],
  354.                         'nipd'              => $row['NIPD'],
  355.                         'jk'                => $row['JK'],
  356.                         'nisn_utama'        => $row['NISN'],
  357.                         'tempat_lahir'      => $row['Tempat Lahir'],
  358.                         'tanggal_lahir'     => $row['Tanggal Lahir'],
  359.                         'akta_lahir'        => $row['No Registrasi Akta Lahir'],
  360.                         'nik'               => $row['NIK'],
  361.                         'agama'             => $row['Agama'],
  362.                         'alamat'            => $row['Alamat'],
  363.                         'rt'                => $row['RT'],
  364.                         'rw'                => $row['RW'],
  365.                         'dusun'             => $row['Dusun'],
  366.                         'kelurahan'         => $row['Kelurahan'],
  367.                         'kecamatan'         => $row['Kecamatan'],
  368.                         'kode_pos'          => $row['Kode Pos'],
  369.                         'telepon'           => $row['Telepon'],
  370.                         'hp'                => $row['HP'],
  371.                         'email'             => $row['E-Mail'],
  372.                         'anak_ke'           => $row['Anak ke-berapa'],
  373.                         'kebutuhan_khusus'  => $row['Kebutuhan Khusus'],
  374.                         'status_anak'       => $status_anak,
  375.                         'ortuwali_id'       => $ortuwali->id,
  376.                     ]);
  377.                 }
  378.  
  379.                 // Insert or Update Wali
  380.                 $wali = Wali::updateOrCreate([
  381.                     'sekolah_id'        => $sekolah_id,
  382.                     'siswa_id'          => $siswa->id,
  383.                 ],
  384.                 [
  385.                     'sekolah_id'        => $sekolah_id,
  386.                     'siswa_id'          => $siswa->id,
  387.                     'nama_wali'         => $row['Data Wali'],
  388.                     'tahun_lahir_wali'  => $row[10] == '0' ? NULL : $row[10],
  389.                     'pendidikan_wali'   => $row[11],
  390.                     'pekerjaan_wali'    => $row[12],
  391.                     'penghasilan_wali'  => $row[13],
  392.                     'nik_wali'          => $row[14],
  393.                 ]);
  394.  
  395.                 // Insert or Update Pribadi
  396.                 $pribadi = Pribadi::updateOrCreate([
  397.                     'sekolah_id'    => $sekolah_id,
  398.                     'siswa_id'      => $siswa->id,
  399.                 ],
  400.                 [
  401.                     'sekolah_id'        => $sekolah_id,
  402.                     'siswa_id'          => $siswa->id,
  403.                     'nipd'              => $row['NIPD'],
  404.                     'jenis_tinggal'     => $row['Jenis Tinggal'],
  405.                     'alat_transportasi' => $row['Alat Transportasi'],
  406.              
  407.              
  408.                 ]);
  409.  
  410.                 if(array_key_exists('Lintang', $row) && array_key_exists('Bujur', $row))
  411.                 {
  412.                     $pribadi = Pribadi::updateOrCreate([
  413.                         'sekolah_id'    => $sekolah_id,
  414.                         'siswa_id'      => $siswa->id,
  415.                         'lintang'           => $row['Lintang'],
  416.                         'bujur'             => $row['Bujur'],
  417.                     ],
  418.                     [
  419.                         'sekolah_id'        => $sekolah_id,
  420.                         'siswa_id'          => $siswa->id,
  421.                         'nipd'              => $row['NIPD'],
  422.                         'jenis_tinggal'     => $row['Jenis Tinggal'],
  423.                         'alat_transportasi' => $row['Alat Transportasi'],
  424.                         'lintang'           => $row['Lintang'],
  425.                         'bujur'             => $row['Bujur'],
  426.                      
  427.                     ]);
  428.                 }
  429.  
  430.                 // Insert or Update Riwayat Pendidikan
  431.                 $pendidikan = RiwayatPendidikan::updateOrCreate([
  432.                     'sekolah_id'    => $sekolah_id,
  433.                     'siswa_id'      => $siswa->id,
  434.                 ],
  435.                 [
  436.                     'sekolah_id'    => $sekolah_id,
  437.                     'siswa_id'      => $siswa->id,
  438.                     'skhun'         => $row['SKHUN'],
  439.                     'no_ijazah'     => $row['No Seri Ijazah'],
  440.                     'no_peserta_un' => $row['No Peserta Ujian Nasional'],
  441.                     'asal_sekolah'  => $row['Sekolah Asal'],
  442.                 ]);
  443.  
  444.                 // Insert or Update Bantuan
  445.                 $bantuan    = Bantuan::updateOrCreate([
  446.                     'sekolah_id'    => $sekolah_id,
  447.                     'siswa_id'      => $siswa->id,
  448.                 ],
  449.                 [
  450.                     'sekolah_id'            => $sekolah_id,
  451.                     'siswa_id'              => $siswa->id,
  452.                     'penerima_kps'          => $row['Penerima KPS'],
  453.                     'no_kps'                => $row['No. KPS'],
  454.                     'penerima_kip'          => $row['Penerima KIP'],
  455.                     'no_kip'                => $row['Nomor KIP'],
  456.                     'nama_di_kip'           => $row['Nama di KIP'],
  457.                     'no_kks'                => $row['Nomor KKS'],
  458.                     'layak_pip'             => $row['Layak PIP (usulan dari sekolah)'],
  459.                     'alasan_pip'            => $row['Alasan Layak PIP'],
  460.                     'nama_bank'             => $row['Bank'],
  461.                     'rekening_bank'         => $row['Nomor Rekening Bank'],
  462.                     'atasnama_bank'         => $row['Rekening Atas Nama'],
  463.                 ]);
  464.  
  465.                 $null_value = '' || NULL;
  466.                  if($row['Rombel Saat Ini'] == $null_value){
  467.                      continue;
  468.                  }
  469.  
  470.                 // Update siswa kelengkapan
  471.                 Kelengkapan::updateOrCreate([
  472.                     'sekolah_id'    => $sekolah_id,
  473.                     'semester_id'   => $semester_id,
  474.                     'siswa_id'      => $siswa->id,
  475.                 ],
  476.                 [
  477.                     'sekolah_id'        => $sekolah_id,
  478.                     'semester_id'       => $semester_id,
  479.                     'siswa_id'          => $siswa->id,
  480.                     'nipd'              => $row['NIPD'],
  481.                     'skhun'             => $row['SKHUN'],
  482.                     'penerima_kps'      => $row['Penerima KPS'],
  483.                     'no_kps'            => $row['No. KPS'],
  484.                     'rombel_saat_ini'   => $row['Rombel Saat Ini'],
  485.                     'no_kip'            => $row['Nomor KIP'],
  486.                     'nama_kip'          => $row['Nama di KIP'],
  487.                     'no_kks'            => $row['Nomor KKS'],
  488.                     'layak_pip'         => $row['Layak PIP (usulan dari sekolah)'],
  489.                     'alasan_layak_pip'  => $row['Alasan Layak PIP'],
  490.                     'nama_bank'         => $row['Bank'],
  491.                     'rekening_bank'     => $row['Nomor Rekening Bank'],
  492.                     'atasnama_bank'     => $row['Rekening Atas Nama'],
  493.                     'no_peserta_un'     => $row['No Peserta Ujian Nasional'],
  494.                     'no_ijazah'         => $row['No Seri Ijazah'],
  495.                     'jenis_tinggal'     => $row['Jenis Tinggal'],
  496.                     'alat_transportasi' => $row['Alat Transportasi'],
  497.                     'asal_sekolah'      => $row['Sekolah Asal'],
  498.                     'kelas_masuk'       => $row['Rombel Saat Ini'],
  499.                 ]);
  500.  
  501.                 // Check kelas_siswa
  502.                 $kelasExists = \DB::table('kelas_siswa')->where('sekolah_id', '=', $sekolah_id)
  503.                                     ->where('semester_id', '=', $semester_id)
  504.                                     ->where('siswa_id', '=', $siswa->id)
  505.                                     ->where('kelas_id', '=', $kelas[str_ireplace('kelas ', '', $row['Rombel Saat Ini'])])
  506.                                     ->first();
  507.  
  508.                 // Insert ketika tidak ada data kelas_siswa yang ada
  509.                 if( ! $kelasExists)
  510.                 {
  511.                     \DB::table('kelas_siswa')->insert([
  512.                         'sekolah_id'    => $sekolah_id,
  513.                         'semester_id'   => $semester_id,
  514.                         'siswa_id'      => $siswa->id,
  515.                         'kelas_id'      => $kelas[str_ireplace('kelas ', '', $row['Rombel Saat Ini'])]
  516.                     ]);
  517.                 }
  518.             }
  519.         }else{
  520.             foreach ($rows as $row)
  521.             {
  522.                 if($row['No'] == '' || $row['No'] == null)
  523.                 {
  524.                     continue;
  525.                 }
  526.  
  527.                 // Simpan NISN terbaru juga
  528.                 $baru[] = $row['NISN'];
  529.  
  530.                 $tempSiswa = TempSiswa::create(
  531.                 [
  532.                     'sekolah_id'        => $sekolah_id,
  533.                     'semester_id'       => $semester_id,
  534.                     'nama'              => $row['Nama'],
  535.                     'nipd'              => $row['NIPD'],
  536.                     'jk'                => $row['JK'],
  537.                     'nisn'              => $row['NISN'],
  538.                     'tempat_lahir'      => $row['Tempat Lahir'],
  539.                     'tanggal_lahir'     => $row['Tanggal Lahir'],
  540.                     'nik'               => $row['NIK'],
  541.                     'agama'             => $row['Agama'],
  542.                     'alamat'            => $row['Alamat'],
  543.                     'rt'                => $row['RT'],
  544.                     'rw'                => $row['RW'],
  545.                     'dusun'             => $row['Dusun'],
  546.                     'kelurahan'         => $row['Kelurahan'],
  547.                     'kecamatan'         => $row['Kecamatan'],
  548.                     'kode_pos'          => $row['Kode Pos'],
  549.                     'hp'                => $row['HP'],
  550.                     'email'             => $row['E-Mail'],
  551.                     'skhun'             => $row['SKHUN'],
  552.                     'nama_ayah'         => $row['Data Ayah'],
  553.                     'tahun_lahir_ayah'  => $row[0],
  554.                     'pendidikan_ayah'   => $row[1],
  555.                     'pekerjaan_ayah'    => $row[2],
  556.                     'penghasilan_ayah'  => $row[3],
  557.                     'nik_ayah'          => $row[4],
  558.                     'nama_ibu'          => $row['Data Ibu'],
  559.                     'tahun_lahir_ibu'   => $row[5],
  560.                     'pendidikan_ibu'    => $row[6],
  561.                     'pekerjaan_ibu'     => $row[7],
  562.                     'penghasilan_ibu'   => $row[8],
  563.                     'nik_ibu'           => $row[9],
  564.                     // 'kelengkapan_id'    => $siswaKelengkapan->id,
  565.                 ]);
  566.  
  567.                 // Insert or Update Ortuwali
  568.                 $ortuwali = OrtuWali::firstOrCreate([
  569.                     'nama_ayah'         => $row['Data Ayah'],
  570.                     'tahun_lahir_ayah'  => $row[0],
  571.                     'nama_ibu'          => $row['Data Ibu'],
  572.                     'tahun_lahir_ibu'   => $row[5],
  573.                 ],
  574.                 [
  575.                     'nama_ayah'         => $row['Data Ayah'],
  576.                     'tahun_lahir_ayah'  => $row[0],
  577.                     'pendidikan_ayah'   => $row[1],
  578.                     'pekerjaan_ayah'    => $row[2],
  579.                     'penghasilan_ayah'  => $row[3],
  580.                     'nik_ayah'          => $row[4],
  581.  
  582.                     'nama_ibu'          => $row['Data Ibu'],
  583.                     'tahun_lahir_ibu'   => $row[5],
  584.                     'pendidikan_ibu'    => $row[6],
  585.                     'pekerjaan_ibu'     => $row[7],
  586.                     'penghasilan_ibu'   => $row[8],
  587.                     'nik_ibu'           => $row[9],
  588.                 ]);
  589.  
  590.                 $status_anak = '';
  591.  
  592.                 if($ortuwali->pekerjaan_ayah === 'Sudah Meninggal' && $ortuwali->pekerjaan_ibu === 'Sudah Meninggal') {
  593.                     $status_anak = 'yatim piatu';
  594.                 }
  595.                 elseif($ortuwali->pekerjaan_ayah === 'Sudah Meninggal') {
  596.                     $status_anak = 'yatim';
  597.                 }
  598.                 elseif ($ortuwali->pekerjaan_ibu === 'Sudah Meninggal') {
  599.                     $status_anak = 'piatu';
  600.                 }
  601.                 else {
  602.                     $status_anak = 'lengkap';
  603.                 }
  604.  
  605.                 //Kondisi berlangganan atau tidak
  606.                 if($is_subs == 1 && $countBayar > 0){
  607.                     $subs_stats = 0;
  608.  
  609.                     if(str_contains($row['Rombel Saat Ini'], 'VII') == 1 &&
  610.                        str_contains($row['Rombel Saat Ini'], 'VIII') == null){
  611.                         if(strpos($row['Rombel Saat Ini'], 'VII') != strlen($row['Rombel Saat Ini'])-3){
  612.                             $subs_stats = $semester_select;
  613.                         }elseif(strtoupper(trim($row['Rombel Saat Ini'])) == 'KELAS VII' ||
  614.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'KLS VII' ||
  615.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'VII'){
  616.                             $subs_stats = $semester_select;
  617.                         }
  618.                     }elseif(str_contains($row['Rombel Saat Ini'], 'I') == 1 &&
  619.                             str_contains($row['Rombel Saat Ini'], 'X') == null &&
  620.                             str_contains($row['Rombel Saat Ini'], 'II') == null &&
  621.                             str_contains($row['Rombel Saat Ini'], 'III') == null &&
  622.                             str_contains($row['Rombel Saat Ini'], 'V') == null){
  623.                         if(strpos($row['Rombel Saat Ini'], 'I') != strlen($row['Rombel Saat Ini'])-1){
  624.                             $subs_stats = $semester_select;
  625.                         }elseif(strtoupper(trim($row['Rombel Saat Ini'])) == 'KELAS I' ||
  626.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'KLS I' ||
  627.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'I'){
  628.                             $subs_stats = $semester_select;
  629.                         }
  630.                     }elseif(str_contains($row['Rombel Saat Ini'], '7')){
  631.                         if(strpos($row['Rombel Saat Ini'], '7') != strlen($row['Rombel Saat Ini'])-1){
  632.                             $subs_stats = $semester_select;
  633.                         }elseif(strtoupper(trim($row['Rombel Saat Ini'])) == 'KELAS 7' ||
  634.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'KLS 7' ||
  635.                                 strtoupper(trim($row['Rombel Saat Ini'])) == '7'){
  636.                             $subs_stats = $semester_select;
  637.                         }
  638.                     }elseif(str_contains($row['Rombel Saat Ini'], '1')){
  639.                         if(strpos($row['Rombel Saat Ini'], '1') != strlen($row['Rombel Saat Ini'])-1){
  640.                             $subs_stats = $semester_select;
  641.                         }elseif(strtoupper(trim($row['Rombel Saat Ini'])) == 'KELAS 1' ||
  642.                                 strtoupper(trim($row['Rombel Saat Ini'])) == 'KLS 1' ||
  643.                                 strtoupper(trim($row['Rombel Saat Ini'])) == '1'){
  644.                             $subs_stats = $semester_select;
  645.                         }
  646.                     }
  647.                    
  648.                     if($subs_stats != 0){
  649.                         $siswa = Siswa::firstOrCreate([
  650.                             'nisn_utama'        => $row['NISN'],
  651.                         ],
  652.                         [
  653.                             'sekolah_id'        => $sekolah_id,
  654.                             'nama'              => $row['Nama'],
  655.                             'nipd'              => $row['NIPD'],
  656.                             'jk'                => $row['JK'],
  657.                             'nisn_utama'        => $row['NISN'],
  658.                             'tempat_lahir'      => $row['Tempat Lahir'],
  659.                             'tanggal_lahir'     => $row['Tanggal Lahir'],
  660.                             'akta_lahir'        => $row['No Registrasi Akta Lahir'],
  661.                             'nik'               => $row['NIK'],
  662.                             'agama'             => $row['Agama'],
  663.                             'alamat'            => $row['Alamat'],
  664.                             'rt'                => $row['RT'],
  665.                             'rw'                => $row['RW'],
  666.                             'dusun'             => $row['Dusun'],
  667.                             'kelurahan'         => $row['Kelurahan'],
  668.                             'kecamatan'         => $row['Kecamatan'],
  669.                             'kode_pos'          => $row['Kode Pos'],
  670.                             'telepon'           => $row['Telepon'],
  671.                             'hp'                => $row['HP'],
  672.                             'email'             => $row['E-Mail'],
  673.                             'anak_ke'           => $row['Anak ke-berapa'],
  674.                             'kebutuhan_khusus'  => $row['Kebutuhan Khusus'],
  675.                             'status_anak'       => $status_anak,
  676.                             'ortuwali_id'       => $ortuwali->id,
  677.                             'subs_stat'         => $subs_stats,
  678.                         ]);
  679.  
  680.                         $siswa = Siswa::updateOrCreate([
  681.                             'nisn_utama'        => $row['NISN'],
  682.                         ],
  683.                         [
  684.                             'subs_stat'         => $subs_stats,
  685.                         ]);
  686.                     }else{
  687.                         $siswa = Siswa::firstOrCreate([
  688.                             'nisn_utama'        => $row['NISN'],
  689.                         ],
  690.                         [
  691.                             'sekolah_id'        => $sekolah_id,
  692.                             'nama'              => $row['Nama'],
  693.                             'nipd'              => $row['NIPD'],
  694.                             'jk'                => $row['JK'],
  695.                             'nisn_utama'        => $row['NISN'],
  696.                             'tempat_lahir'      => $row['Tempat Lahir'],
  697.                             'tanggal_lahir'     => $row['Tanggal Lahir'],
  698.                             'akta_lahir'        => $row['No Registrasi Akta Lahir'],
  699.                             'nik'               => $row['NIK'],
  700.                             'agama'             => $row['Agama'],
  701.                             'alamat'            => $row['Alamat'],
  702.                             'rt'                => $row['RT'],
  703.                             'rw'                => $row['RW'],
  704.                             'dusun'             => $row['Dusun'],
  705.                             'kelurahan'         => $row['Kelurahan'],
  706.                             'kecamatan'         => $row['Kecamatan'],
  707.                             'kode_pos'          => $row['Kode Pos'],
  708.                             'telepon'           => $row['Telepon'],
  709.                             'hp'                => $row['HP'],
  710.                             'email'             => $row['E-Mail'],
  711.                             'anak_ke'           => $row['Anak ke-berapa'],
  712.                             'kebutuhan_khusus'  => $row['Kebutuhan Khusus'],
  713.                             'status_anak'       => $status_anak,
  714.                             'ortuwali_id'       => $ortuwali->id,
  715.                         ]);
  716.                     }
  717.                 }else{
  718.                     $siswa = Siswa::firstOrCreate([
  719.                         'nisn_utama'        => $row['NISN'],
  720.                     ],
  721.                     [
  722.                         'sekolah_id'        => $sekolah_id,
  723.                         'nama'              => $row['Nama'],
  724.                         'nipd'              => $row['NIPD'],
  725.                         'jk'                => $row['JK'],
  726.                         'nisn_utama'        => $row['NISN'],
  727.                         'tempat_lahir'      => $row['Tempat Lahir'],
  728.                         'tanggal_lahir'     => $row['Tanggal Lahir'],
  729.                         'akta_lahir'        => $row['No Registrasi Akta Lahir'],
  730.                         'nik'               => $row['NIK'],
  731.                         'agama'             => $row['Agama'],
  732.                         'alamat'            => $row['Alamat'],
  733.                         'rt'                => $row['RT'],
  734.                         'rw'                => $row['RW'],
  735.                         'dusun'             => $row['Dusun'],
  736.                         'kelurahan'         => $row['Kelurahan'],
  737.                         'kecamatan'         => $row['Kecamatan'],
  738.                         'kode_pos'          => $row['Kode Pos'],
  739.                         'telepon'           => $row['Telepon'],
  740.                         'hp'                => $row['HP'],
  741.                         'email'             => $row['E-Mail'],
  742.                         'anak_ke'           => $row['Anak ke-berapa'],
  743.                         'kebutuhan_khusus'  => $row['Kebutuhan Khusus'],
  744.                         'status_anak'       => $status_anak,
  745.                         'ortuwali_id'       => $ortuwali->id,
  746.                     ]);
  747.                 }
  748.  
  749.                 // Insert or Update Wali
  750.                 $wali = Wali::firstOrCreate([
  751.                     'sekolah_id'        => $sekolah_id,
  752.                     'siswa_id'          => $siswa->id,
  753.                 ],
  754.                 [
  755.                     'sekolah_id'        => $sekolah_id,
  756.                     'siswa_id'          => $siswa->id,
  757.                     'nama_wali'         => $row['Data Wali'],
  758.                     'tahun_lahir_wali'  => $row[10] == '0' ? NULL : $row[10],
  759.                     'pendidikan_wali'   => $row[11],
  760.                     'pekerjaan_wali'    => $row[12],
  761.                     'penghasilan_wali'  => $row[13],
  762.                     'nik_wali'          => $row[14],
  763.                 ]);
  764.  
  765.                 // Insert or Update Pribadi
  766.                   Pribadi::updateOrCreate([
  767.                     'sekolah_id'    => $sekolah_id,
  768.                     'siswa_id'      => $siswa->id,
  769.                 ],
  770.                 [
  771.                     'sekolah_id'        => $sekolah_id,
  772.                     'siswa_id'          => $siswa->id,
  773.                     'nipd'              => $row['NIPD'],
  774.                     'jenis_tinggal'     => $row['Jenis Tinggal'],
  775.                     'alat_transportasi' => $row['Alat Transportasi'],
  776.                     'lintang'           => $row['Lintang'],
  777.                     'bujur'             => $row['Bujur'],
  778.                 ]);
  779.              
  780.  
  781.  
  782.                 // Insert or Update Riwayat Pendidikan
  783.                 $pendidikan = RiwayatPendidikan::firstOrCreate([
  784.                     'sekolah_id'    => $sekolah_id,
  785.                     'siswa_id'      => $siswa->id,
  786.                 ],
  787.                 [
  788.                     'sekolah_id'    => $sekolah_id,
  789.                     'siswa_id'      => $siswa->id,
  790.                     'skhun'         => $row['SKHUN'],
  791.                     'no_ijazah'     => $row['No Seri Ijazah'],
  792.                     'no_peserta_un' => $row['No Peserta Ujian Nasional'],
  793.                     'asal_sekolah'  => $row['Sekolah Asal'],
  794.                 ]);
  795.  
  796.                 // Insert or Update Bantuan
  797.                 $bantuan    = Bantuan::firstOrCreate([
  798.                     'sekolah_id'    => $sekolah_id,
  799.                     'siswa_id'      => $siswa->id,
  800.                 ],
  801.                 [
  802.                     'sekolah_id'            => $sekolah_id,
  803.                     'siswa_id'              => $siswa->id,
  804.                     'penerima_kps'          => $row['Penerima KPS'],
  805.                     'no_kps'                => $row['No. KPS'],
  806.                     'penerima_kip'          => $row['Penerima KIP'],
  807.                     'no_kip'                => $row['Nomor KIP'],
  808.                     'nama_di_kip'           => $row['Nama di KIP'],
  809.                     'no_kks'                => $row['Nomor KKS'],
  810.                     'layak_pip'             => $row['Layak PIP (usulan dari sekolah)'],
  811.                     'alasan_pip'            => $row['Alasan Layak PIP'],
  812.                     'nama_bank'             => $row['Bank'],
  813.                     'rekening_bank'         => $row['Nomor Rekening Bank'],
  814.                     'atasnama_bank'         => $row['Rekening Atas Nama'],
  815.                 ]);
  816.  
  817.                 // Update siswa kelengkapan
  818.                 Kelengkapan::firstOrCreate([
  819.                     'sekolah_id'    => $sekolah_id,
  820.                     'semester_id'   => $semester_id,
  821.                     'siswa_id'      => $siswa->id,
  822.                 ],
  823.                 [
  824.                     'sekolah_id'        => $sekolah_id,
  825.                     'semester_id'       => $semester_id,
  826.                     'siswa_id'          => $siswa->id,
  827.                     'nipd'              => $row['NIPD'],
  828.                     'skhun'             => $row['SKHUN'],
  829.                     'penerima_kps'      => $row['Penerima KPS'],
  830.                     'no_kps'            => $row['No. KPS'],
  831.                     'rombel_saat_ini'   => $row['Rombel Saat Ini'],
  832.                     'no_kip'            => $row['Nomor KIP'],
  833.                     'nama_kip'          => $row['Nama di KIP'],
  834.                     'no_kks'            => $row['Nomor KKS'],
  835.                     'layak_pip'         => $row['Layak PIP (usulan dari sekolah)'],
  836.                     'alasan_layak_pip'  => $row['Alasan Layak PIP'],
  837.                     'nama_bank'         => $row['Bank'],
  838.                     'rekening_bank'     => $row['Nomor Rekening Bank'],
  839.                     'atasnama_bank'     => $row['Rekening Atas Nama'],
  840.                     'no_peserta_un'     => $row['No Peserta Ujian Nasional'],
  841.                     'no_ijazah'         => $row['No Seri Ijazah'],
  842.                     'jenis_tinggal'     => $row['Jenis Tinggal'],
  843.                     'alat_transportasi' => $row['Alat Transportasi'],
  844.                     'asal_sekolah'      => $row['Sekolah Asal'],
  845.                     'kelas_masuk'       => $row['Rombel Saat Ini'],
  846.                 ]);
  847.  
  848.                 // Check kelas_siswa
  849.                 $kelasExists = \DB::table('kelas_siswa')->where('sekolah_id', '=', $sekolah_id)
  850.                                     ->where('semester_id', '=', $semester_id)
  851.                                     ->where('siswa_id', '=', $siswa->id)
  852.                                     ->where('kelas_id', '=', $kelas[str_ireplace('kelas ', '', $row['Rombel Saat Ini'])])
  853.                                     ->first();
  854.  
  855.                 // Insert ketika tidak ada data kelas_siswa yang ada
  856.                 if( ! $kelasExists)
  857.                 {
  858.                     \DB::table('kelas_siswa')->insert([
  859.                         'sekolah_id'    => $sekolah_id,
  860.                         'semester_id'   => $semester_id,
  861.                         'siswa_id'      => $siswa->id,
  862.                         'kelas_id'      => $kelas[str_ireplace('kelas ', '', $row['Rombel Saat Ini'])]
  863.                     ]);
  864.                 }
  865.             }
  866.         }    
  867.        
  868.         // Hapus temp siswa yang lama
  869.         TempSiswa::destroy($idLama);
  870.  
  871.         $warning = array_diff($lama, $baru);
  872.  
  873.         if(count($warning) > 0)
  874.         {
  875.             $siswa_deleted = Siswa::select('id')->whereIn('nisn_utama', $warning)->get()->toArray();
  876.  
  877.             Kelengkapan::where('sekolah_id', '=', $sekolah_id)
  878.                         ->where('semester_id', '=', $semester_id)
  879.                         ->whereIn('siswa_id', $siswa_deleted)
  880.                         ->update(['warning' => '1']);
  881.         }
  882.     }
  883.  
  884.     /**
  885.      * Import dimulai dari rows keberapa
  886.      * disini Import dimulai dari rows header ke 5 ( excel)
  887.      * rows 1-4 untuk tulisan lain ( contoh:perkenalan, deskripsi dll)
  888.     */
  889.     public function headingRow(): int
  890.     {
  891.         return 5; // import dimulai dari rows ke 5 di excel
  892.     }
  893.  
  894.    
  895. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement