user(); assert($user !== null); $validated = $request->validate([ 'columns' => ['required', 'integer', 'between:1,4'], 'widgets' => ['required', 'array'], 'widgets.*.widget_key' => ['required', 'string', Rule::in(self::WIDGET_KEYS)], 'widgets.*.enabled' => ['required', 'boolean'], 'widgets.*.column_index' => ['required', 'integer', 'between:0,3'], 'widgets.*.position' => ['required', 'integer', 'min:0'], ]); foreach ($validated['widgets'] as $widget) { DashboardWidgetPreference::query()->updateOrCreate( ['user_id' => $user->id, 'widget_key' => $widget['widget_key']], [ 'enabled' => $widget['enabled'], 'column_index' => $widget['column_index'], 'position' => $widget['position'], ], ); } $user->update(['dashboard_columns' => $validated['columns']]); return back(); } }