Update routes/subscription.py
Browse files- routes/subscription.py +33 -2
routes/subscription.py
CHANGED
@@ -509,9 +509,11 @@ def check_subscription(
|
|
509 |
if not subscriptions or "data" not in subscriptions or not subscriptions["data"]:
|
510 |
return {"status": "inactive", "message": "No subscriptions found for this user."}
|
511 |
|
512 |
-
# 🔹
|
|
|
513 |
for subscription in subscriptions["data"]:
|
514 |
if subscription["metadata"].get("stylist_id") == data.stylist_id:
|
|
|
515 |
subscription_id = subscription["id"]
|
516 |
price_id = subscription["items"]["data"][0]["price"]["id"]
|
517 |
status = subscription.get("status")
|
@@ -562,7 +564,36 @@ def check_subscription(
|
|
562 |
"expiration_date": expiration_date
|
563 |
}
|
564 |
|
565 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
566 |
|
567 |
except stripe.error.StripeError as e:
|
568 |
logger.error(f"Stripe error: {str(e)}")
|
|
|
509 |
if not subscriptions or "data" not in subscriptions or not subscriptions["data"]:
|
510 |
return {"status": "inactive", "message": "No subscriptions found for this user."}
|
511 |
|
512 |
+
# 🔹 Verifica se existe uma assinatura ativa para o estilista
|
513 |
+
stylist_found = False
|
514 |
for subscription in subscriptions["data"]:
|
515 |
if subscription["metadata"].get("stylist_id") == data.stylist_id:
|
516 |
+
stylist_found = True
|
517 |
subscription_id = subscription["id"]
|
518 |
price_id = subscription["items"]["data"][0]["price"]["id"]
|
519 |
status = subscription.get("status")
|
|
|
564 |
"expiration_date": expiration_date
|
565 |
}
|
566 |
|
567 |
+
# 🔹 Caso não tenha encontrado assinatura ativa para o estilista, desativa todas as assinaturas no banco de dados
|
568 |
+
if not stylist_found:
|
569 |
+
logger.info(f"No active subscription found for stylist {data.stylist_id}. Deactivating all subscriptions for this user.")
|
570 |
+
|
571 |
+
# 🔹 Buscar todas as assinaturas do cliente no banco de dados
|
572 |
+
response_subscriptions = requests.get(
|
573 |
+
f"{SUPABASE_URL}/rest/v1/Subscriptions?customer_id=eq.{user_id}",
|
574 |
+
headers=SUPABASE_HEADERS
|
575 |
+
)
|
576 |
+
if response_subscriptions.status_code == 200:
|
577 |
+
subscriptions_data = response_subscriptions.json()
|
578 |
+
for sub in subscriptions_data:
|
579 |
+
# 🔹 Atualiza para "active = false" para todas as assinaturas do cliente no banco
|
580 |
+
update_data = {
|
581 |
+
"active": False
|
582 |
+
}
|
583 |
+
subscription_url = f"{SUPABASE_URL}/rest/v1/Subscriptions?id=eq.{sub['id']}"
|
584 |
+
update_response = requests.patch(
|
585 |
+
subscription_url,
|
586 |
+
headers=SUPABASE_HEADERS,
|
587 |
+
json=update_data
|
588 |
+
)
|
589 |
+
if update_response.status_code == 200:
|
590 |
+
logger.info(f"✅ Subscription {sub['id']} deactivated successfully for user {user_id}.")
|
591 |
+
else:
|
592 |
+
logger.error(f"❌ Failed to deactivate subscription {sub['id']} for user {user_id}.")
|
593 |
+
else:
|
594 |
+
logger.error(f"❌ Failed to fetch subscriptions from Supabase for user {user_id}.")
|
595 |
+
|
596 |
+
return {"status": "inactive", "message": "No active subscription found for stylist."}
|
597 |
|
598 |
except stripe.error.StripeError as e:
|
599 |
logger.error(f"Stripe error: {str(e)}")
|