habulaj commited on
Commit
39e10b6
·
verified ·
1 Parent(s): 602fe8a

Update routes/subscription.py

Browse files
Files changed (1) hide show
  1. 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
- # 🔹 Sincronização de assinaturas para o estilista
 
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
- return {"status": "inactive", "message": "No subscription found for this stylist."}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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)}")