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; private $errors; public function model(array $row) { // dd($row); // Pemeriksaan apakah semua kolom yang dibutuhkan ada dalam format yang benar $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])) { $this->errors[] = 'Kolom ' . $column . ' pada baris ' . $this->rowCount . ' tidak boleh kosong.'; return null; // Abaikan data dengan kolom yang tidak sesuai } } // 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(); 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']], ['size_peti' => 'Default Size', 'description' => 'Default Description'] ); $customer = Customer::firstOrCreate( ['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['nama_gudang']], ['description' => 'Default Description', 'address' => 'Default Address'] ); $kondisiPeti = Kondisi_Peti::firstOrCreate( ['nama_kondisi' => $row['kondisi_peti']], ['deskripsi_kondisi' => 'Default Deskripsi'] ); $this->rowCount++; return new Peti([ 'created_by' => $user->fullname, 'updated_by' => $user->fullname, 'tipe_peti_id' => $tipePeti->id, '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' => strtoupper($row['packing_no']), 'fix_lot' => strtoupper($row['fix_lot']), 'status' => strtoupper($row['status']), 'status_isi' => $statusIsi, ]); } 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; } }