public function getPackagesInfo(Subscription $subscription)
 {
     $isCommercialAccount = $subscription->getGroup() && $subscription->getGroup()->isCommercial();
     $memberCount = 0;
     if ($subscription->getGroup()) {
         $memberCount = $this->em->getRepository(Group::class)->getTotalMembers($subscription->getGroup());
     }
     return [Subscription::PACKAGE_TYPE_FREE => ['title' => Subscription::$labels[Subscription::PACKAGE_TYPE_FREE], 'price' => $this->prices[Subscription::PACKAGE_TYPE_FREE], 'isBuyAvailable' => false], Subscription::PACKAGE_TYPE_SILVER => ['title' => Subscription::$labels[Subscription::PACKAGE_TYPE_SILVER], 'price' => $this->prices[Subscription::PACKAGE_TYPE_SILVER], 'isBuyAvailable' => $subscription->getPackageType() <= Subscription::PACKAGE_TYPE_SILVER && !$isCommercialAccount && $memberCount < $this->createPackageObject($subscription::PACKAGE_TYPE_SILVER)->getGroupSizeLimitation()], Subscription::PACKAGE_TYPE_GOLD => ['title' => Subscription::$labels[Subscription::PACKAGE_TYPE_GOLD], 'price' => $this->prices[Subscription::PACKAGE_TYPE_GOLD], 'isBuyAvailable' => $subscription->getPackageType() <= Subscription::PACKAGE_TYPE_GOLD && $memberCount < $this->createPackageObject($subscription::PACKAGE_TYPE_GOLD)->getGroupSizeLimitation()], Subscription::PACKAGE_TYPE_PLATINUM => ['title' => Subscription::$labels[Subscription::PACKAGE_TYPE_PLATINUM], 'price' => $this->prices[Subscription::PACKAGE_TYPE_PLATINUM], 'isBuyAvailable' => $subscription->getPackageType() <= Subscription::PACKAGE_TYPE_PLATINUM && !$isCommercialAccount], Subscription::PACKAGE_TYPE_COMMERCIAL => ['title' => Subscription::$labels[Subscription::PACKAGE_TYPE_COMMERCIAL], 'price' => $this->prices[Subscription::PACKAGE_TYPE_COMMERCIAL], 'isBuyAvailable' => false]];
 }
Ejemplo n.º 2
0
 public function syncSubscription(Subscription $subscription)
 {
     $user = $subscription->getUserEntity();
     $customer = $this->em->getRepository(Customer::getEntityClassByUser($user))->findOneBy(['user' => $user]);
     $stripeCustomer = $this->getStripeCustomer($customer);
     try {
         $ss = $stripeCustomer->subscriptions->retrieve($subscription->getStripeId());
         $subscription->syncStripeData($ss);
     } catch (Error\InvalidRequest $e) {
         if (404 === $e->getHttpStatus()) {
             $subscription->stripeReset();
         }
     }
     $this->em->flush($subscription);
     return $subscription;
 }
 public function getPlanId()
 {
     $this->__load();
     return parent::getPlanId();
 }