using NeonSprawl.Server.Game.Factions; using NeonSprawl.Server.Game.PositionState; using NeonSprawl.Server.Game.Rewards; namespace NeonSprawl.Server.Game.Quests; /// Dev-only route to seed quest progress for Bruno and manual QA (NEO-137). public static class QuestFixtureApi { public static WebApplication MapQuestFixtureApi(this WebApplication app) { app.MapPost( "/game/players/{id}/__dev/quest-fixture", (string id, QuestFixtureRequest? body, IPositionStateStore positions, IQuestDefinitionRegistry questRegistry, IFactionDefinitionRegistry factionRegistry, IPlayerQuestStateStore progressStore, IFactionStandingStore standingStore, IRewardDeliveryStore deliveryStore, IReputationDeltaStore auditStore, TimeProvider timeProvider) => { if (body is null || body.SchemaVersion != QuestFixtureRequest.CurrentSchemaVersion) { return Results.BadRequest(); } var trimmedId = id.Trim(); if (trimmedId.Length == 0 || !positions.TryGetPosition(trimmedId, out _)) { return Results.NotFound(); } if (!QuestFixtureOperations.TryApply( trimmedId, body, questRegistry, factionRegistry, progressStore, standingStore, deliveryStore, auditStore, timeProvider)) { return Results.NotFound(); } return Results.Json(new QuestFixtureResponse { Applied = true }); }); return app; } }