header('Idempotency-Key'); abort_unless(is_string($key) && strlen($key) >= 16 && strlen($key) <= 128, 428, 'Idempotency-Key é obrigatório.'); $result = $drafts->create($request->validated(), $request, $key); $draft = $result['draft']; return response()->json(['data' => ['id' => $draft->id, 'version_no' => $draft->version_no, 'replayed' => $result['replayed']]], $result['replayed'] ? 200 : 201) ->header('ETag', $drafts->etag($draft))->header('Cache-Control', 'no-store, private'); } public function current(Request $request, SimulationFormDrafts $drafts): JsonResponse { $draft = $drafts->current($request); if (! $draft) { return response()->json(['data' => null], 200)->header('Cache-Control', 'no-store, private'); } return response()->json(['data' => $drafts->present($draft)])->header('ETag', $drafts->etag($draft))->header('Cache-Control', 'no-store, private'); } public function show(Request $request, string $id, SimulationFormDrafts $drafts): JsonResponse { abort_unless(Str::isUuid($id), 404); $draft = $drafts->find($id, $request); return response()->json(['data' => $drafts->present($draft)])->header('ETag', $drafts->etag($draft))->header('Cache-Control', 'no-store, private'); } public function update(StoreSimulationFormDraftRequest $request, string $id, SimulationFormDrafts $drafts): JsonResponse { abort_unless(Str::isUuid($id), 404); $draft = $drafts->update($id, $request->validated(), $request); return response()->json(['data' => ['id' => $draft->id, 'version_no' => $draft->version_no]]) ->header('ETag', $drafts->etag($draft))->header('Cache-Control', 'no-store, private'); } public function destroy(Request $request, string $id, SimulationFormDrafts $drafts): JsonResponse { abort_unless(Str::isUuid($id), 404); $drafts->delete($id, $request); return response()->json([], 204)->header('Cache-Control', 'no-store, private'); } }