feat: Implement order management with datatable display and updated forms

This commit is contained in:
pbao9
2026-02-14 18:00:15 +07:00
parent d683afc901
commit 5252f9142c
21 changed files with 490 additions and 541 deletions
+44 -6
View File
@@ -34,6 +34,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Yajra\DataTables\Facades\DataTables;
class OrderController extends Controller
@@ -55,11 +56,9 @@ class OrderController extends Controller
) {}
public function index(Request $request)
{
$orders = $this->orderRepository->filter($request->merge(['page' => $request->get('page', 1)])->all(), ['payment', 'customer', 'invoice']);
$title = 'List all orders';
return view('administrator.pages.order.index', compact('title', 'orders'));
return view('administrator.pages.order.index', compact('title'));
}
// Tính billing
@@ -261,12 +260,12 @@ class OrderController extends Controller
public function create()
{
$title = 'Add new Order for Customer';
$customer = Customer::select('id', 'firstname', 'lastname')->where('status', 1)->get();
$customer = Customer::select('id', 'fullname')->where('status', 1)->get();
$payment = Payment::select('id', 'name')->where('status', 1)->get();
$discount = Discount::select('id', 'code', 'save', 'type')->where('status', 1)->get();
$type = Type::select('id', 'name')->where('status', 1)->get();
// $type = Type::select('id', 'name')->where('status', 1)->get();
return view('administrator.pages.order.add', compact('title', 'customer', 'payment', 'discount', 'type'));
return view('administrator.pages.order.add', compact('title', 'customer', 'payment', 'discount'));
}
public function edit(int $id = 0)
@@ -407,4 +406,43 @@ class OrderController extends Controller
return back()->with('success', 'Delete Success');
}
public function datatable(Request $request)
{
$query = $this->orderRepository->filter(
$request->all(),
['payment', 'customer', 'invoice'],
[],
['*'],
true
);
return DataTables::eloquent($query)
->addColumn('order_num', function ($d) {
return view('administrator.pages.order.datatable.order_num', ['row' => $d])->render();
})
->addColumn('date', function ($d) {
return view('administrator.pages.order.datatable.date', ['row' => $d])->render();
})
->addColumn('customer', function ($d) {
return view('administrator.pages.order.datatable.customer', ['row' => $d])->render();
})
->addColumn('payment', function ($d) {
return view('administrator.pages.order.datatable.payment', ['row' => $d])->render();
})
->addColumn('amount', function ($d) {
return view('administrator.pages.order.datatable.amount', ['row' => $d])->render();
})
->addColumn('invoice_status', function ($d) {
return view('administrator.pages.order.datatable.invoice_status', ['row' => $d])->render();
})
->addColumn('status', function ($d) {
return view('administrator.pages.order.datatable.status', ['row' => $d])->render();
})
->addColumn('action', function ($d) {
return view('administrator.pages.order.datatable.action', ['row' => $d])->render();
})
->rawColumns(['order_num', 'date', 'customer', 'payment', 'amount', 'invoice_status', 'status', 'action'])
->make(true);
}
}