37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from sqlmodel import Session, select
|
|
from uuid import UUID
|
|
import uuid
|
|
from datetime import timedelta
|
|
import models
|
|
|
|
def generate_referral_link(user_id: UUID) -> str:
|
|
"""Generates a unique shortcode for the user to share."""
|
|
# Using a simple deterministic slice for the local sandbox
|
|
shortcode = str(user_id).split("-")[0]
|
|
return f"https://pragativeer.com/join/{shortcode}"
|
|
|
|
def process_referral_reward(referrer_id: UUID, new_user_id: UUID, session: Session):
|
|
"""
|
|
Grants both users 7 days of AI Coach access for free as per PRD Section 3.2.
|
|
"""
|
|
referrer = session.get(models.User, referrer_id)
|
|
new_user = session.get(models.User, new_user_id)
|
|
|
|
if referrer and new_user:
|
|
# Upgrade both to AI Coach
|
|
referrer.tier = models.TierEnum.AI_COACH
|
|
new_user.tier = models.TierEnum.AI_COACH
|
|
|
|
# Add 7 days to their trial/subscription end dates
|
|
from datetime import datetime
|
|
now = datetime.utcnow()
|
|
|
|
referrer.subscription_end = (referrer.subscription_end or now) + timedelta(days=7)
|
|
new_user.trial_end = now + timedelta(days=7)
|
|
|
|
session.add(referrer)
|
|
session.add(new_user)
|
|
session.commit()
|
|
return True
|
|
return False
|