Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/astra.aplikasipos.info/laravel_backend/app/Imports/
Upload File :
Current File : /home/aplikasiposinfo/www/astra.aplikasipos.info/laravel_backend/app/Imports/TransaksiImport.php

<?php

namespace App\Imports;

use App\Models\Transaksi;
use App\Models\DetailTransaksi;
use App\Models\Motor;
use App\Models\User;
use App\Models\Armada;
use App\Models\Dealer;
use App\Models\Gudang;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class TransaksiImport implements ToCollection
{
    
    public $error = [];
    public $dealer = NULL;
    public $reference = NULL; //Reference Transaksi (Kode Transaksi)

    public function collection(Collection $rows)
    {   
        foreach ($rows as $key => $row) {
            if ( $key >= 1 && $row[0] && $row[6] && $row[3] ) {
                // Nentukan Validasi
                $find_motor = Motor::where('kode_type' ,$row[0])->first();
                // $find_armada = Armada::where('nomor_armada', $row[1])->first();
                $find_dealer = Dealer::where('cust_number', $row[6])->first();
                // $find_user = User::where(['kd_user' => strtoupper($row[2]), 'posisi' => 'Ekspedisi'])->first();

                $find_gudang = Gudang::where('nama', $row[3])->first();

                $baris = $key + 1;

                // Pesan Error
                if (!$find_motor) {
                    array_push($this->error, 'Motor Dengan Kode Type ' . $row[0] . ' Tidak Ditemukan di Master Data <b> (Excel Baris ' . $baris . ' Gagal di Import) </b>');
                }

                if (!$find_dealer) {
                    array_push($this->error, 'Dealer Dengan Nomor ' . $row[6] . ' Tidak Ditemukan di Master Data <b> (Excel Baris ' . $baris . ' Gagal di Import) </b>');
                }


                // if (!$find_user) {
                //     array_push($this->error, 'Driver dengan Kode '.$row[2].' Tidak Ditemukan di Master Data <b> (Excel Baris ' . $baris . ' Gagal di Import) </b>');
                // }

                // if ($find_user) {
                //     $find_user = $users = User::where(['posisi' => 'Ekspedisi', 'status_kerja' => 'no', 'kd_user' => $row[2]])->whereHas('absen', function($q){
                //         $q->where('tanggal', date('Y-m-d'));
                //     })->first();

                //     if (!$find_user) {
                //         array_push($this->error, 'Driver dengan Kode <b> '.$row[2].' </b>  Belum Absen Kehadiran Atau Driver Sedang Dalam Expedisi Ke Dealer, Untuk Melihat Daftar Driver Yang Tersedia Silahkan Kembali ke <b> Dashboard </b> <b> (Excel Baris ' . $baris . ' Gagal di Import) </b>');
                //     }
                // }

                // if (!$find_armada) {
                //     $find_armada = Armada::where('nomor_armada', str_replace(' ', '', $row[1]))->first();

                //     if (!$find_armada) {
                //         array_push($this->error, 'Armada Dengan ' . $row[1] . ' Tidak Ditemukan di Master Data <b> (Excel Baris ' . $baris . ' Gagal di Import) </b>');
                //     }
                // }               



        // Jika Validasi Ada Error, Hentikan

        if (!empty($this->error)) {
            return;
        }

        if(!$find_gudang){
            $gudang_id = Gudang::create([
                'nama'=>$row[3]
            ])->id;
        }else{
            $gudang_id = $find_gudang->id;
        }

        
            if ( $key >= 1) {
                // Cek Reference Yang Sama (Perpecahan Transaksi)
                // Pembuatan Transaksi Pertama Kali
                if ($this->reference == NULL ) {
                    $this->reference = $row[5];

                    $transaksi = Transaksi::create([
                        'kd_transaksi' => \Helper::kodeTransaksi(),
                        'tgl_transaksi' => date('Y-m-d H:i:s'),
                        'penerima' => $row[7],
                        'no_hp' => $row[8],
                        'mat_doc' => $gudang_id,
                        'reference' => $row[5],
                        'dealer_id' => $find_dealer->id
                    ]);

                    $detailTransaksi = DetailTransaksi::create([
                        'transaksi_id' => $transaksi->id,
                        'user_id' => NULL,
                        'armada_id' => NULL,
                        'motor_id' => $find_motor->id,
                        'batch' => $row[1],
                        'serial_number' => $row[2],
                        'pstg_date' => \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[4]),
                        'jml_motor' => 1,
                    ]);                
                }else{
                    // Cek Jika Masih di Reference Yang Sama Tambah Detail Saja
                    if ($this->reference == $row[5] ) {
                        $detailTransaksi = DetailTransaksi::create([
                            'transaksi_id' => $transaksi->id,
                            'user_id' => NULL,
                            'armada_id' => NULL,
                            'motor_id' => $find_motor->id,
                            'batch' => $row[1],
                            'serial_number' => $row[2],
                            'pstg_date' => \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[4]),
                            'jml_motor' => 1,
                        ]);
                    // Cek Jika Reference beda, buat transaksi baru + Detailnya
                    }else if ($this->reference != $row[5] ){
                        $this->reference = $row[5];

                        $transaksi = Transaksi::create([
                            'kd_transaksi' => \Helper::kodeTransaksi(),
                            'tgl_transaksi' => date('Y-m-d H:i:s'),
                            'penerima' => $row[7],
                            'no_hp' => $row[8],
                            'mat_doc' => $gudang_id,
                            'reference' => $row[5],
                            'dealer_id' => $find_dealer->id
                        ]);

                        $detailTransaksi = DetailTransaksi::create([
                            'transaksi_id' => $transaksi->id,
                            'user_id' => NULL,
                            'armada_id' => NULL,
                            'motor_id' => $find_motor->id,
                            'batch' => $row[1],
                            'serial_number' => $row[2],
                            'pstg_date' => \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[4]),
                            'jml_motor' => 1,
                        ]);
                    }
                }

            }
        
        }
    }
    }

    // public function getError()
    // {
    //     return $this->error;
    // }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]