middleware('admin');
}
public function index(): View
{
return view('admin.withdrawal.index');
}
public function detail(int $id): View
{
$withdrawal = OrderWithdrawal::with('shopping_order.shopping_user', 'user_shop')->findOrFail($id);
return view('admin.withdrawal.detail', [
'withdrawal' => $withdrawal,
'statuses' => OrderWithdrawal::statuses(),
]);
}
public function update(Request $request, int $id): RedirectResponse
{
$withdrawal = OrderWithdrawal::findOrFail($id);
$validator = Validator::make($request->all(), [
'status' => ['required', 'in:'.implode(',', OrderWithdrawal::statuses())],
'admin_note' => ['nullable', 'string', 'max:5000'],
]);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
}
$withdrawal->update([
'status' => $request->input('status'),
'admin_note' => $request->input('admin_note'),
]);
\Session()->flash('alert-success', __('Gespeichert!'));
return back();
}
public function datatable()
{
$query = OrderWithdrawal::query()->select('order_withdrawals.*');
return \DataTables::eloquent($query)
->addColumn('id', function (OrderWithdrawal $w): string {
return ' '.$w->id;
})
->addColumn('declared_at', function (OrderWithdrawal $w): string {
return $w->declared_at ? $w->declared_at->format('d.m.Y H:i') : '';
})
->addColumn('order_reference', function (OrderWithdrawal $w): string {
return '#'.e($w->order_reference);
})
->addColumn('customer', function (OrderWithdrawal $w): string {
return e($w->customer_name).'
'.e($w->customer_email).'';
})
->addColumn('type', function (OrderWithdrawal $w): string {
$label = $w->isFullWithdrawal() ? __('withdrawal.scope_full') : __('withdrawal.scope_partial');
$color = $w->isFullWithdrawal() ? 'dark' : 'info';
return ''.e($label).'';
})
->addColumn('status', function (OrderWithdrawal $w): string {
$colors = [
OrderWithdrawal::STATUS_RECEIVED => 'warning',
OrderWithdrawal::STATUS_PROCESSING => 'info',
OrderWithdrawal::STATUS_DONE => 'success',
OrderWithdrawal::STATUS_REJECTED => 'danger',
];
$color = $colors[$w->status] ?? 'default';
return ''.e($w->status).'';
})
->addColumn('action', function (OrderWithdrawal $w): string {
return '';
})
->filterColumn('customer', function ($query, $keyword): void {
$query->where('customer_email', 'LIKE', '%'.$keyword.'%')
->orWhere('customer_name', 'LIKE', '%'.$keyword.'%');
})
->orderColumn('declared_at', 'declared_at $1')
->rawColumns(['id', 'customer', 'type', 'status', 'action'])
->make(true);
}
}