habulaj commited on
Commit
9b46162
·
verified ·
1 Parent(s): dba3e83

Update routes/subscription.py

Browse files
Files changed (1) hide show
  1. routes/subscription.py +36 -1
routes/subscription.py CHANGED
@@ -168,4 +168,39 @@ def cancel_subscription(data: CancelSubscriptionRequest):
168
  )
169
  return {"status": "Subscription will be canceled at period end"}
170
  except Exception as e:
171
- raise HTTPException(status_code=500, detail=str(e))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  )
169
  return {"status": "Subscription will be canceled at period end"}
170
  except Exception as e:
171
+ raise HTTPException(status_code=500, detail=str(e))
172
+
173
+ # 🚀 Verificação de Assinatura
174
+ @router.post("/check_subscription")
175
+ def check_subscription(user_id: str, stylist_id: str):
176
+ try:
177
+ # Buscar todas as assinaturas ativas para o usuário (cliente)
178
+ subscriptions = stripe.Subscription.list(
179
+ customer=user_id, # ID do cliente
180
+ status="active", # Assinaturas ativas
181
+ expand=["data.items"] # Expande os dados para pegar os itens e o metadata
182
+ )
183
+
184
+ # Verificar se existe uma assinatura ativa para o estilista
185
+ for subscription in subscriptions["data"]:
186
+ # Verifica se o stylist_id está presente no metadata da assinatura
187
+ if subscription.metadata.get("stylist_id") == stylist_id:
188
+ return {
189
+ "status": "active",
190
+ "subscription_id": subscription.id,
191
+ "consultations_per_month": subscription.metadata.get("consultations_per_month")
192
+ }
193
+
194
+ # Caso não tenha encontrado assinatura ativa para o estilista
195
+ return {
196
+ "status": "inactive",
197
+ "message": "No active subscription found for this stylist."
198
+ }
199
+
200
+ except stripe.error.StripeError as e:
201
+ # Captura erros específicos do Stripe
202
+ raise HTTPException(status_code=500, detail=f"Stripe error: {str(e)}")
203
+ except Exception as e:
204
+ # Captura outros erros genéricos
205
+ logger.error(f"Error checking subscription: {e}")
206
+ raise HTTPException(status_code=500, detail="Error checking subscription.")