@@ -418,6 +418,41 @@ def mutate(cls, root, info, account_id, subscription_id):
418418 return cls (errors = [str (e )])
419419
420420
421+ class StripeSubscriptionCustomerAllMembersDeleteMutation (Mutation ):
422+ """Remove all members from subscription"""
423+
424+ ok = Boolean ()
425+ errors = List (String )
426+
427+ class Arguments :
428+ subscription_id = ID (required = True )
429+
430+ @classmethod
431+ @login_required
432+ def mutate (cls , root , info , subscription_id ):
433+ try :
434+ admin = info .context .user
435+ subscription = Subscription .objects .get (id = subscription_id )
436+ assert admin .id == subscription .admin .id
437+
438+ errors = []
439+ for account in subscription .subscribers .all ():
440+ try :
441+ remove_user (account .gcp_email or account .email )
442+ except Exception as e :
443+ errors .append (f"Erro ao remover { account .email } : { str (e )} " )
444+ logger .error (f"Falha ao remover usuário { account .email } : { e } " )
445+
446+ subscription .subscribers .clear ()
447+
448+ if errors :
449+ return cls (ok = False , errors = errors )
450+ return cls (ok = True )
451+ except Exception as e :
452+ logger .error (e )
453+ return cls (errors = [str (e )])
454+
455+
421456class ChangeUserGCPEmail (Mutation ):
422457 """Change user GCP email"""
423458
@@ -520,6 +555,7 @@ class Mutation(ObjectType):
520555 delete_stripe_subscription = StripeSubscriptionDeleteMutation .Field ()
521556 create_stripe_customer_subscription = StripeSubscriptionCustomerCreateMutation .Field ()
522557 update_stripe_customer_subscription = StripeSubscriptionCustomerDeleteMutation .Field ()
558+ delete_stripe_customer_all_members = StripeSubscriptionCustomerAllMembersDeleteMutation .Field ()
523559 validate_stripe_coupon = StripeCouponValidationMutation .Field ()
524560 change_user_gcp_email = ChangeUserGCPEmail .Field ()
525561
0 commit comments