requiredMapping() ->exampleHeader('Plant Name') ->example('Ransar Industries-I') ->label('Plant Name') ->relationship(resolveUsing:'name') ->rules(['required']), ImportColumn::make('item') ->requiredMapping() ->exampleHeader('Item Code') ->example('123456') ->label('Item Code') ->relationship(resolveUsing: 'code') ->rules(['required']), ImportColumn::make('process_order') ->exampleHeader('Process Order') ->example('200000166843') ->label('Process Order') ->rules(['required']), ImportColumn::make('coil_number') ->exampleHeader('Coil Number') ->example('1') ->label('Coil Number'), ImportColumn::make('order_quantity') ->numeric() ->exampleHeader('Order Quantity') ->example('10') ->label('Order Quantity') ->rules(['integer']), ImportColumn::make('received_quantity') ->numeric() ->exampleHeader('Received Quantity') ->example('5') ->label('Received Quantity') ->rules(['integer']), ImportColumn::make('created_by') ->exampleHeader('Created By') ->example('Admin') ->label('Created By'), ]; } public function resolveRecord(): ?ProcessOrder { $warnMsg = []; $plant = Plant::where('name', $this->data['plant'])->first(); $itemCode = Item::where('code', $this->data['item'])->first(); $iCode = trim($this->data['item']); if (!$plant) { $warnMsg[] = "Plant not found"; } else if (Str::length($iCode) < 6 || !ctype_alnum($iCode)) { $warnMsg[] = "Invalid item code found"; } else if(!$itemCode) { $warnMsg[] = "Item Code not found"; } $processOrder = trim($this->data['process_order'] ?? ''); if ($processOrder == '') { $warnMsg[] = "Process Order cannot be empty"; } $coilNo = trim($this->data['coil_number'] ?? ''); if ($coilNo == '') { $warnMsg[] = "Coil Number cannot be empty"; } $ordQuan = trim($this->data['order_quantity'] ?? ''); if ($ordQuan == '') { $warnMsg[] = "Order Quantity cannot be empty"; } $recQuan = trim($this->data['received_quantity'] ?? ''); if ($recQuan == '') { $warnMsg[] = "Received Quantity cannot be empty"; } $user = User::where('name', $this->data['created_by'])->first(); if (!$user) { $warnMsg[] = "User not found"; } if (!empty($warnMsg)) { throw new RowImportFailedException(implode(', ', $warnMsg)); } return ProcessOrder::create([ 'plant_id' => $plant->id, 'item_id' => $itemCode->id, 'process_order' => trim($this->data['process_order']), 'coil_number' => $this->data['coil_number'] ?? null, 'order_quantity' => $this->data['order_quantity'], 'received_quantity' => trim($this->data['received_quantity']), 'created_by' => $user->name, ]); //return new ProcessOrder(); } public static function getCompletedNotificationBody(Import $import): string { $body = 'Your process order import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.'; if ($failedRowsCount = $import->getFailedRowsCount()) { $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.'; } return $body; } }