excel import
This commit is contained in:
@@ -13,6 +13,11 @@ use App\Models\User;
|
||||
use PDF;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use App\Exports\OrdersExport;
|
||||
use App\Imports\OrderItemsPreviewImport;
|
||||
|
||||
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
|
||||
class AdminOrderController extends Controller
|
||||
{
|
||||
@@ -36,44 +41,6 @@ class AdminOrderController extends Controller
|
||||
return view('admin.orders_create', compact('markList'));
|
||||
}
|
||||
|
||||
// public function store(Request $request)
|
||||
// {
|
||||
// $data = $request->validate([
|
||||
// 'mark_no' => 'required|string',
|
||||
// 'origin' => 'nullable|string',
|
||||
// 'destination' => 'nullable|string',
|
||||
// 'ctn' => 'nullable|numeric',
|
||||
// 'qty' => 'nullable|numeric',
|
||||
// 'ttl_qty' => 'nullable|numeric',
|
||||
// 'ttl_amount' => 'nullable|numeric',
|
||||
// 'cbm' => 'nullable|numeric',
|
||||
// 'ttl_cbm' => 'nullable|numeric',
|
||||
// 'kg' => 'nullable|numeric',
|
||||
// 'ttl_kg' => 'nullable|numeric',
|
||||
// ]);
|
||||
|
||||
// $order = Order::create([
|
||||
// 'order_id' => $this->generateOrderId(),
|
||||
// 'mark_no' => $data['mark_no'],
|
||||
// 'origin' => $data['origin'] ?? null,
|
||||
// 'destination'=> $data['destination'] ?? null,
|
||||
// 'ctn' => $data['ctn'] ?? 0,
|
||||
// 'qty' => $data['qty'] ?? 0,
|
||||
// 'ttl_qty' => $data['ttl_qty'] ?? 0,
|
||||
// 'ttl_amount' => $data['ttl_amount'] ?? 0,
|
||||
// 'cbm' => $data['cbm'] ?? 0,
|
||||
// 'ttl_cbm' => $data['ttl_cbm'] ?? 0,
|
||||
// 'kg' => $data['kg'] ?? 0,
|
||||
// 'ttl_kg' => $data['ttl_kg'] ?? 0,
|
||||
// 'status' => 'pending',
|
||||
// ]);
|
||||
|
||||
// $this->createInvoice($order);
|
||||
|
||||
// return redirect()->route('admin.orders.show', $order->id)
|
||||
// ->with('success', 'Order created successfully.');
|
||||
// }
|
||||
|
||||
/* ---------------------------
|
||||
* SHOW / POPUP
|
||||
* ---------------------------*/
|
||||
@@ -723,4 +690,36 @@ class AdminOrderController extends Controller
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function uploadExcelPreview(Request $request)
|
||||
{
|
||||
try {
|
||||
$request->validate([
|
||||
'excel' => 'required|file|mimes:xlsx,xls'
|
||||
]);
|
||||
|
||||
$import = new OrderItemsPreviewImport();
|
||||
Excel::import($import, $request->file('excel'));
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'items' => $import->rows
|
||||
]);
|
||||
} catch (ValidationException $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Invalid Excel file format'
|
||||
], 422);
|
||||
} catch (\Throwable $e) {
|
||||
\Log::error($e);
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Server error'
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
26
app/Imports/OrderItemsPreviewImport.php
Normal file
26
app/Imports/OrderItemsPreviewImport.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace App\Imports;
|
||||
|
||||
use Maatwebsite\Excel\Concerns\ToCollection;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class OrderItemsPreviewImport implements ToCollection
|
||||
{
|
||||
public array $rows = [];
|
||||
|
||||
public function collection(Collection $collection)
|
||||
{
|
||||
$header = $collection->first()->map(fn ($h) => strtolower(trim($h)))->toArray();
|
||||
|
||||
foreach ($collection->skip(1) as $row) {
|
||||
$item = [];
|
||||
foreach ($header as $i => $key) {
|
||||
$item[$key] = $row[$i] ?? null;
|
||||
}
|
||||
|
||||
if (!empty($item['description'])) {
|
||||
$this->rows[] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user