| Conditions | 6 | 
| Paths | 10 | 
| Total Lines | 40 | 
| Code Lines | 25 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 1 | ||
| Bugs | 0 | Features | 0 | 
| 1 | <?php | ||
| 16 | public function __invoke(Request $request) | ||
| 17 |     { | ||
| 18 | $user = auth()->user(); | ||
| 19 |         \Stripe\Stripe::setApiKey(config('cashier.secret')); | ||
| 20 | |||
| 21 |         try { | ||
| 22 | $user->createAsStripeCustomer(); | ||
|  | |||
| 23 |         } catch(\Exception) { | ||
| 24 | } | ||
| 25 | |||
| 26 |         $plan_id = $request->input('plan_id'); | ||
| 27 | |||
| 28 |         if ($request->has('payment_method')) { | ||
| 29 | $paymentMethod = $request->payment_method; | ||
| 30 | |||
| 31 |             $subscription = $user->newSubscription('default', $plan_id) | ||
| 32 | ->trialDays(14); | ||
| 33 | |||
| 34 |             if ($couponId = $request->input('coupon_id')) { | ||
| 35 | $subscription->withCoupon($couponId); | ||
| 36 | } | ||
| 37 | |||
| 38 | $subscription->create($paymentMethod); | ||
| 39 | |||
| 40 | $user->notify(new SubscribeSuccessfully($plan_id)); | ||
| 41 |         } else { | ||
| 42 |             if ($user->subscribed('default')) { | ||
| 43 | $subscription = $user->subscription(); | ||
| 44 |                 if ($subscription->stripe_status == 'canceled') { | ||
| 45 |                     $user->newSubscription('default', $plan_id)->create(); | ||
| 46 | $user->notify(new SubscribeSuccessfully($plan_id)); | ||
| 47 |                 } else { | ||
| 48 |                     $user->subscription('default')->swap($plan_id); | ||
| 49 | } | ||
| 50 |             } else { | ||
| 51 |                 $user->subscription('default')->swap($plan_id); | ||
| 52 | } | ||
| 53 | } | ||
| 54 | |||
| 55 | return ['success' => true]; | ||
| 56 | } | ||
| 58 |