Fix
This commit is contained in:
@@ -10,6 +10,7 @@ from app.core.config import settings
|
||||
from app.models import Marathon, MarathonStatus, GameProposalMode, Game, GameStatus, Challenge, Activity, ActivityType
|
||||
from app.schemas import GameCreate, GameUpdate, GameResponse, MessageResponse, UserPublic
|
||||
from app.services.storage import storage_service
|
||||
from app.services.telegram_notifier import telegram_notifier
|
||||
|
||||
router = APIRouter(tags=["games"])
|
||||
|
||||
@@ -268,6 +269,13 @@ async def approve_game(game_id: int, current_user: CurrentUser, db: DbSession):
|
||||
if game.status != GameStatus.PENDING.value:
|
||||
raise HTTPException(status_code=400, detail="Game is not pending")
|
||||
|
||||
# Get marathon title for notification
|
||||
marathon_result = await db.execute(select(Marathon).where(Marathon.id == game.marathon_id))
|
||||
marathon = marathon_result.scalar_one()
|
||||
|
||||
# Save proposer id before status change
|
||||
proposer_id = game.proposed_by_id
|
||||
|
||||
game.status = GameStatus.APPROVED.value
|
||||
game.approved_by_id = current_user.id
|
||||
|
||||
@@ -283,6 +291,12 @@ async def approve_game(game_id: int, current_user: CurrentUser, db: DbSession):
|
||||
await db.commit()
|
||||
await db.refresh(game)
|
||||
|
||||
# Notify proposer (if not self-approving)
|
||||
if proposer_id and proposer_id != current_user.id:
|
||||
await telegram_notifier.notify_game_approved(
|
||||
db, proposer_id, marathon.title, game.title
|
||||
)
|
||||
|
||||
# Need to reload relationships
|
||||
game = await get_game_or_404(db, game_id)
|
||||
challenges_count = await db.scalar(
|
||||
@@ -302,6 +316,14 @@ async def reject_game(game_id: int, current_user: CurrentUser, db: DbSession):
|
||||
if game.status != GameStatus.PENDING.value:
|
||||
raise HTTPException(status_code=400, detail="Game is not pending")
|
||||
|
||||
# Get marathon title for notification
|
||||
marathon_result = await db.execute(select(Marathon).where(Marathon.id == game.marathon_id))
|
||||
marathon = marathon_result.scalar_one()
|
||||
|
||||
# Save proposer id and game title before changes
|
||||
proposer_id = game.proposed_by_id
|
||||
game_title = game.title
|
||||
|
||||
game.status = GameStatus.REJECTED.value
|
||||
|
||||
# Log activity
|
||||
@@ -316,6 +338,12 @@ async def reject_game(game_id: int, current_user: CurrentUser, db: DbSession):
|
||||
await db.commit()
|
||||
await db.refresh(game)
|
||||
|
||||
# Notify proposer
|
||||
if proposer_id and proposer_id != current_user.id:
|
||||
await telegram_notifier.notify_game_rejected(
|
||||
db, proposer_id, marathon.title, game_title
|
||||
)
|
||||
|
||||
# Need to reload relationships
|
||||
game = await get_game_or_404(db, game_id)
|
||||
challenges_count = await db.scalar(
|
||||
|
||||
Reference in New Issue
Block a user