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); } }