validate([ 'form_id' => 'required|integer|exists:forms,id', 'usuarioRegistro' => 'required|string|exists:usuarios,idUsuario', // 👈 validación correcta para varchar 'contenido_json' => 'required|json', ]); $usuarioLogueado = $validated['usuarioRegistro']; $formId = DB::table('respuestas_formulario')->insertGetId([ 'form_id' => $validated['form_id'], 'id_usuario' => $usuarioLogueado, 'contenido_json' => $validated['contenido_json'], 'created_at' => now() ]); return response()->json([ 'success' => true, 'message' => 'Respuesta guardada correctamente', 'id' => $formId ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Error interno del servidor', 'error' => $e->getMessage() ], 500); } } public function tieneRespuesta(Request $request) { $request->validate([ 'form_id' => 'required|integer|exists:forms,id', 'usuario_id' => 'required|string', ]); $formId = $request->input('form_id'); $usuarioId = $request->input('usuario_id'); $existe = DB::table('respuestas_formulario') ->where('form_id', $formId) ->where('id_usuario', $usuarioId) ->exists(); return response()->json([ 'success' => true, 'hasRespuesta' => $existe ]); } public function generarPDF($id_usuario) { try { $respuesta = DB::table('respuestas_formulario') ->where('id_usuario', $id_usuario) ->first(); if (!$respuesta) { return response()->json(['error' => 'No hay respuesta registrada'], 404); } $contenido = json_decode($respuesta->contenido_json, true); $tabs = $contenido['tabs']; // Formatear las claves $tabsFormateados = []; foreach ($tabs as $tituloTab => $campos) { $camposFormateados = []; foreach ($campos as $clave => $valor) { $claveFormateada = ucwords(str_replace('_', ' ', $clave)); $camposFormateados[$claveFormateada] = $valor; } $tabsFormateados[$tituloTab] = $camposFormateados; } $pdf = PDF::loadView('respuesta', [ 'respuesta' => $tabsFormateados, 'usuario' => $respuesta->id_usuario, 'fecha' => $respuesta->created_at ]); return $pdf->download("respuesta_{$id_usuario}.pdf"); } catch (\Exception $e) { Log::error('Error generando PDF para usuario ' . $id_usuario . ': ' . $e->getMessage(), [ 'exception' => $e, ]); return response()->json([ 'error' => 'Error al generar el PDF', 'message' => $e->getMessage() ], 500); } } }