validate([ 'plannable_item_id' => 'required|exists:plannable_items,id', 'calendar_slot_id' => 'required|exists:calendar_slots,id', 'sort_order' => 'nullable|integer', ]); $plannedItem = PlannedItem::updateOrCreate( [ 'plannable_item_id' => $validated['plannable_item_id'], 'calendar_slot_id' => $validated['calendar_slot_id'], ], [ 'sort_order' => $validated['sort_order'] ?? 0, ] ); return response()->json($plannedItem->load(['plannableItem', 'calendarSlot']), 201); } public function update(Request $request, PlannedItem $plannedItem): JsonResponse { $validated = $request->validate([ 'calendar_slot_id' => 'sometimes|required|exists:calendar_slots,id', 'sort_order' => 'nullable|integer', ]); $plannedItem->update($validated); return response()->json($plannedItem->load(['plannableItem', 'calendarSlot'])); } public function destroy(PlannedItem $plannedItem): JsonResponse { $plannedItem->delete(); return response()->json(null, 204); } }