authorize('submit', $collection); $data = $request->validate([ 'artwork_id' => ['required', 'integer', 'min:1'], 'message' => ['nullable', 'string', 'max:1000'], ]); $artwork = Artwork::query()->findOrFail((int) $data['artwork_id']); $submission = $this->submissions->submit($collection, $request->user(), $artwork, $data['message'] ?? null); return response()->json([ 'ok' => true, 'submission' => $submission, 'submissions' => $this->submissions->mapSubmissions($collection, $request->user()), ]); } public function approve(Request $request, CollectionSubmission $submission): JsonResponse { $submission = $this->submissions->approve($submission, $request->user()); return response()->json([ 'ok' => true, 'submissions' => $this->submissions->mapSubmissions($submission->collection, $request->user()), ]); } public function reject(Request $request, CollectionSubmission $submission): JsonResponse { $submission = $this->submissions->reject($submission, $request->user()); return response()->json([ 'ok' => true, 'submissions' => $this->submissions->mapSubmissions($submission->collection, $request->user()), ]); } public function destroy(Request $request, CollectionSubmission $submission): JsonResponse { $collection = $submission->collection; $this->submissions->withdraw($submission, $request->user()); return response()->json([ 'ok' => true, 'submissions' => $this->submissions->mapSubmissions($collection, $request->user()), ]); } }