Skip to content

Commit

Permalink
feat: add subscription check and info (#603)
Browse files Browse the repository at this point in the history
  • Loading branch information
vncsna authored May 20, 2024
1 parent de6fdcc commit e7fb014
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
17 changes: 17 additions & 0 deletions bd_api/apps/account/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,23 @@ def __str__(self):
def admin_email(self):
return self.admin.email or "[email protected]"

@property
def subscribers_info(self) -> list[dict]:
info = [
{
"email": self.admin.email,
"role": "admin",
}
]
for subscriber in self.subscribers.all():
info.append(
{
"email": subscriber.email,
"role": "subscriber",
}
)
return info

@property
def stripe_subscription(self):
return self.subscription.plan.product.metadata.get("code", "")
Expand Down
16 changes: 16 additions & 0 deletions bd_api/apps/account_payment/graphql.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,14 @@ class Arguments:
def mutate(cls, root, info, price_id):
try:
admin = info.context.user

for s in [
*admin.subscription_set.all(),
*admin.internal_subscription.all(),
]:
if s.is_active:
return cls(errors=["Conta possui inscrição ativa"])

price = DJStripePrice.objects.get(djstripe_id=price_id)
subscription: DJStripeSubscription = admin.customer.subscribe(
price=price.id,
Expand Down Expand Up @@ -226,6 +234,14 @@ def mutate(cls, root, info, account_id, subscription_id):
try:
admin = info.context.user
account = Account.objects.get(id=account_id)

for s in [
*account.subscription_set.all(),
*account.internal_subscription.all(),
]:
if s.is_active:
return cls(errors=["Conta possui inscrição ativa"])

subscription = Subscription.objects.get(id=subscription_id)
assert admin.id == subscription.admin.id
add_user(account.email)
Expand Down

0 comments on commit e7fb014

Please sign in to comment.