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