user(); if ($event->status === EventStatus::Cancelled) { abort(403); } if (!$event->type->hasCatering()) { abort(403); } if (!$user->canAccessAdminPanel()) { if ($event->status === EventStatus::Draft) { abort(403); } if (!$user->accessibleTeamIds()->contains($event->team_id)) { abort(403); } } $request->validate([ 'status' => 'required|in:yes,no,unknown', 'note' => 'nullable|string|max:255', ]); $existing = EventCatering::where('event_id', $event->id)->where('user_id', auth()->id())->first(); $oldStatus = $existing?->status?->value ?? 'unknown'; $catering = EventCatering::where('event_id', $event->id)->where('user_id', auth()->id())->first(); if (!$catering) { $catering = new EventCatering(['event_id' => $event->id]); $catering->user_id = auth()->id(); } $catering->status = CateringStatus::from($request->status); $catering->note = $request->note; $catering->save(); ActivityLog::logWithChanges('status_changed', __('admin.log_catering_changed', ['event' => $event->title, 'status' => $request->status]), 'Event', $event->id, ['status' => $oldStatus, 'user_id' => auth()->id(), 'source' => 'catering'], ['status' => $request->status, 'user_id' => auth()->id(), 'source' => 'catering']); return redirect(route('events.show', $event) . '#catering'); } }