|
|
|
@ -15,6 +15,95 @@ use Maatwebsite\Excel\Events\AfterImport;
|
|
|
|
|
use Maatwebsite\Excel\Concerns\ToCollection; |
|
|
|
|
use Maatwebsite\Excel\Concerns\WithHeadingRow; |
|
|
|
|
|
|
|
|
|
// class PetiImport implements ToModel, WithHeadingRow |
|
|
|
|
// { |
|
|
|
|
// private $rowCount = 0; |
|
|
|
|
// private $errors; |
|
|
|
|
|
|
|
|
|
// public function model(array $row) |
|
|
|
|
// { |
|
|
|
|
// // Pemeriksaan apakah semua kolom yang dibutuhkan ada dalam format yang benar |
|
|
|
|
// $requiredColumns = ['tipe_peti_id', 'warna', 'customer_id', 'warehouse_id', 'kondisipeti_id', 'packing_no', 'fix_lot', 'status', 'status_isi_peti']; |
|
|
|
|
|
|
|
|
|
// foreach ($requiredColumns as $column) { |
|
|
|
|
// if (!array_key_exists($column, $row) || empty($row[$column])) { |
|
|
|
|
// $this->errors[] = 'Kolom ' . $column . ' pada baris ' . $this->rowCount . ' tidak boleh kosong.'; |
|
|
|
|
// return null; // Abaikan data dengan kolom yang tidak sesuai |
|
|
|
|
// } |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
// $user = Auth::user(); |
|
|
|
|
|
|
|
|
|
// $existingPeti = Peti::where('fix_lot', $row['fix_lot'])->first(); |
|
|
|
|
|
|
|
|
|
// if ($existingPeti) { |
|
|
|
|
// $this->errors[] = new MessageBag(['Row ' . $this->rowCount => 'Data Peti sudah ada dalam database.']); |
|
|
|
|
// return null; |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
// $tipePeti = Type_peti::firstOrCreate( |
|
|
|
|
// ['type' => $row['tipe_peti_id']], |
|
|
|
|
// ['size_peti' => 'Default Size', 'description' => 'Default Description'] |
|
|
|
|
// ); |
|
|
|
|
|
|
|
|
|
// $customer = Customer::firstOrCreate( |
|
|
|
|
// ['name' => $row['customer_id']], |
|
|
|
|
// ['code_customer' => 'Default Code', 'lot_no' => 'Default Lot No', 'no_tlp' => 'Default No Tlp', 'address' => 'Default Address'] |
|
|
|
|
// ); |
|
|
|
|
|
|
|
|
|
// $warehouse = m_warehouse::firstOrCreate( |
|
|
|
|
// ['name' => $row['warehouse_id']], |
|
|
|
|
// ['description' => 'Default Description', 'address' => 'Default Address'] |
|
|
|
|
// ); |
|
|
|
|
|
|
|
|
|
// $kondisiPeti = Kondisi_Peti::firstOrCreate( |
|
|
|
|
// ['nama_kondisi' => $row['kondisipeti_id']], |
|
|
|
|
// ['deskripsi_kondisi' => 'Default Deskripsi'] |
|
|
|
|
// ); |
|
|
|
|
|
|
|
|
|
// $this->rowCount++; |
|
|
|
|
|
|
|
|
|
// return new Peti([ |
|
|
|
|
// 'created_by' => $user->fullname, |
|
|
|
|
// 'updated_by' => $user->fullname, |
|
|
|
|
// 'tipe_peti_id' => $tipePeti->id, |
|
|
|
|
// 'warna' => $row['warna'], |
|
|
|
|
// 'customer_id' => $customer->id, |
|
|
|
|
// 'warehouse_id' => $warehouse->id, |
|
|
|
|
// 't_warehouse_id' => $warehouse->id, |
|
|
|
|
// 'date_pembuatan' => now(), |
|
|
|
|
// 'kondisipeti_id' => $kondisiPeti->id, |
|
|
|
|
// 'packing_no' => $row['packing_no'], |
|
|
|
|
// 'fix_lot' => $row['fix_lot'], |
|
|
|
|
// 'status' => $row['status'], |
|
|
|
|
// 'status_isi' => $row['status_isi_peti'], |
|
|
|
|
// ]); |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
// public function registerEvents(): array |
|
|
|
|
// { |
|
|
|
|
// return [ |
|
|
|
|
// AfterImport::class => function (AfterImport $event) { |
|
|
|
|
// $importedData = $event->getReader()->getDelegate()->getActiveSheet()->toArray(); |
|
|
|
|
// $filteredData = array_filter($importedData, function ($row) { |
|
|
|
|
// return $row[0] !== null; |
|
|
|
|
// }); |
|
|
|
|
|
|
|
|
|
// $event->getReader()->getDelegate()->getActiveSheet()->fromArray($filteredData); |
|
|
|
|
// }, |
|
|
|
|
// ]; |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
// public function getErrors() |
|
|
|
|
// { |
|
|
|
|
// return $this->errors; |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
// public function getRowCount() |
|
|
|
|
// { |
|
|
|
|
// return $this->rowCount; |
|
|
|
|
// } |
|
|
|
|
// } |
|
|
|
|
class PetiImport implements ToModel, WithHeadingRow |
|
|
|
|
{ |
|
|
|
|
private $rowCount = 0; |
|
|
|
@ -22,8 +111,9 @@ class PetiImport implements ToModel, WithHeadingRow
|
|
|
|
|
|
|
|
|
|
public function model(array $row) |
|
|
|
|
{ |
|
|
|
|
// dd($row); |
|
|
|
|
// Pemeriksaan apakah semua kolom yang dibutuhkan ada dalam format yang benar |
|
|
|
|
$requiredColumns = ['tipe_peti_id', 'warna', 'customer_id', 'warehouse_id', 'kondisipeti_id', 'packing_no', 'fix_lot', 'status']; |
|
|
|
|
$requiredColumns = ['tipe_peti', 'warna', 'nama_customer', 'nama_gudang', 'kondisi_peti', 'packing_no', 'fix_lot', 'status', 'status_isi_peti']; |
|
|
|
|
|
|
|
|
|
foreach ($requiredColumns as $column) { |
|
|
|
|
if (!array_key_exists($column, $row) || empty($row[$column])) { |
|
|
|
@ -32,6 +122,18 @@ class PetiImport implements ToModel, WithHeadingRow
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Validasi untuk kolom 'status_isi_peti' |
|
|
|
|
$validStatusIsiPeti = ['Ada', 'Tidak Ada']; |
|
|
|
|
$statusIsiPeti = ucwords(strtolower(trim($row['status_isi_peti']))); // Ubah kapitalisasi |
|
|
|
|
|
|
|
|
|
if (!in_array($statusIsiPeti, $validStatusIsiPeti)) { |
|
|
|
|
$this->errors[] = 'Nilai pada kolom status_isi_peti pada baris ' . $this->rowCount . ' tidak valid.'; |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Set nilai status_isi berdasarkan 'Ada Isinya' atau 'Tidak Ada Isinya' |
|
|
|
|
$statusIsi = ($statusIsiPeti === 'Ada') ? 1 : 0; |
|
|
|
|
|
|
|
|
|
$user = Auth::user(); |
|
|
|
|
|
|
|
|
|
$existingPeti = Peti::where('fix_lot', $row['fix_lot'])->first(); |
|
|
|
@ -42,22 +144,22 @@ class PetiImport implements ToModel, WithHeadingRow
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$tipePeti = Type_peti::firstOrCreate( |
|
|
|
|
['type' => $row['tipe_peti_id']], |
|
|
|
|
['type' => $row['tipe_peti']], |
|
|
|
|
['size_peti' => 'Default Size', 'description' => 'Default Description'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$customer = Customer::firstOrCreate( |
|
|
|
|
['name' => $row['customer_id']], |
|
|
|
|
['name' => $row['nama_customer']], |
|
|
|
|
['code_customer' => 'Default Code', 'lot_no' => 'Default Lot No', 'no_tlp' => 'Default No Tlp', 'address' => 'Default Address'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$warehouse = m_warehouse::firstOrCreate( |
|
|
|
|
['name' => $row['warehouse_id']], |
|
|
|
|
['name' => $row['nama_gudang']], |
|
|
|
|
['description' => 'Default Description', 'address' => 'Default Address'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$kondisiPeti = Kondisi_Peti::firstOrCreate( |
|
|
|
|
['nama_kondisi' => $row['kondisipeti_id']], |
|
|
|
|
['nama_kondisi' => $row['kondisi_peti']], |
|
|
|
|
['deskripsi_kondisi' => 'Default Deskripsi'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
@ -65,15 +167,18 @@ class PetiImport implements ToModel, WithHeadingRow
|
|
|
|
|
|
|
|
|
|
return new Peti([ |
|
|
|
|
'created_by' => $user->fullname, |
|
|
|
|
'updated_by' => $user->fullname, |
|
|
|
|
'tipe_peti_id' => $tipePeti->id, |
|
|
|
|
'warna' => $row['warna'], |
|
|
|
|
'warna' => strtoupper($row['warna']), |
|
|
|
|
'customer_id' => $customer->id, |
|
|
|
|
'warehouse_id' => $warehouse->id, |
|
|
|
|
't_warehouse_id' => $warehouse->id, |
|
|
|
|
'date_pembuatan' => now(), |
|
|
|
|
'kondisipeti_id' => $kondisiPeti->id, |
|
|
|
|
'packing_no' => $row['packing_no'], |
|
|
|
|
'fix_lot' => $row['fix_lot'], |
|
|
|
|
'status' => $row['status'], |
|
|
|
|
'packing_no' => strtoupper($row['packing_no']), |
|
|
|
|
'fix_lot' => strtoupper($row['fix_lot']), |
|
|
|
|
'status' => strtoupper($row['status']), |
|
|
|
|
'status_isi' => $statusIsi, |
|
|
|
|
]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|