diff --git a/goodtimes/services.py b/goodtimes/services.py index 915e8f9..21aa9e6 100644 --- a/goodtimes/services.py +++ b/goodtimes/services.py @@ -208,6 +208,7 @@ class PaymentProcessingService: self.customer_id = self._get_customer_id() self.transaction = self._get_transaction_by_id() self.principal = self.transaction.principal + self.principal_subscription = None def _get_customer_id(self): # Access the customer ID from the charge object @@ -235,7 +236,7 @@ class PaymentProcessingService: logger.error(f"Subscription ID {subscription_id} not found.") return None - def _get_principal_subscription_by_id(self): + def _create_principal_subscription(self): order_id = self.charge_data["metadata"]["order_id"] try: subscription = self._get_subscription() @@ -253,6 +254,7 @@ class PaymentProcessingService: end_date=last_date, grace_period_end_date=last_date + timedelta(days=15), ) + self.principal_subscription = principal_subscription return principal_subscription except Subscription.DoesNotExist: logger.error("SOmething Went Wrong inside _get_principal_subscription_by_id().") @@ -267,7 +269,7 @@ class PaymentProcessingService: def _handle_success(self): with transaction.atomic(): - self._update_principal_subscription() + self._create_principal_subscription() self._update_transaction_success() self._credit_referral_reward_if_applicable() @@ -317,7 +319,7 @@ class PaymentProcessingService: self._update_reward( referral_record=referral_record, active_subscription=active_subscription, - create_subscription_method=self._update_principal_subscription(), + create_subscription_method=self.principal_subscription, has_active_subscription=True, ) else: @@ -325,7 +327,7 @@ class PaymentProcessingService: self._update_reward( referral_record=referral_record, active_subscription=None, - create_subscription_method=self._update_principal_subscription(), + create_subscription_method=self.principal_subscription, has_active_subscription=False, ) @@ -348,20 +350,20 @@ class PaymentProcessingService: # Implement any necessary logic to handle a failed payment self._update_transaction_failure() - def _update_principal_subscription(self): - # Fetch the subscription object once and use it - print("Inside _update_principal_subscription") - principal_subscription = self._get_principal_subscription_by_id() + # def _update_principal_subscription(self): + # # Fetch the subscription object once and use it + # print("Inside _update_principal_subscription") + # principal_subscription = self._get_principal_subscription_by_id() - # Update IS_PAID PrincipalSubscription instance - referred_principal_subscription = PrincipalSubscription.objects.get( - id=principal_subscription.id - ) - referred_principal_subscription.stripe_customer_id = self.customer_id - referred_principal_subscription.is_paid = True - referred_principal_subscription.save() + # # Update IS_PAID PrincipalSubscription instance + # referred_principal_subscription = PrincipalSubscription.objects.get( + # id=principal_subscription.id + # ) + # referred_principal_subscription.stripe_customer_id = self.customer_id + # referred_principal_subscription.is_paid = True + # referred_principal_subscription.save() - return referred_principal_subscription.id + # return referred_principal_subscription.id def _update_reward( self, @@ -376,7 +378,7 @@ class PaymentProcessingService: ) # Create a new subscription for the referred principal - referred_subscription_id = self._update_principal_subscription() + referred_subscription_id = self.principal_subscription # Create or update the ReferralTracking record ReferralTracking.objects.create(