From d5bcebb79abd92536ecc070d1d9a7adaa5987922 Mon Sep 17 00:00:00 2001 From: Hritikkk9 Date: Fri, 5 Jul 2024 19:32:58 +0530 Subject: [PATCH] subscription with referral updated --- .../Customer_API/SubscriptionController.php | 137 +++++----- .../APIs/CustomerAPIs/AuthServices.php | 16 +- .../subscriptions/list-of-products.blade.php | 153 ++++++++++- .../subscriptions/my-subscription.blade.php | 253 +++++++++++------- routes/web.php | 5 + 5 files changed, 386 insertions(+), 178 deletions(-) diff --git a/app/Http/Controllers/APIs/Customer_API/SubscriptionController.php b/app/Http/Controllers/APIs/Customer_API/SubscriptionController.php index f10f21e..f88684c 100644 --- a/app/Http/Controllers/APIs/Customer_API/SubscriptionController.php +++ b/app/Http/Controllers/APIs/Customer_API/SubscriptionController.php @@ -97,7 +97,7 @@ class SubscriptionController extends Controller public function createStripeProduct(Request $request) { - + try { DB::beginTransaction(); @@ -260,98 +260,83 @@ class SubscriptionController extends Controller public function cancelSubscription(Request $request) { try { - Log::info("Razorpay Cancel subscriptions Begin: "); DB::beginTransaction(); + $stripeSecret = (config('constants.subscription.stripe_secret_key')); + // $stripeSecret = env('STRIPE_SECRET'); - $validator = $this->validateCancelSubscriptionForm($request); + $stripe = new \Stripe\StripeClient($stripeSecret); + $userId = $request->iam_principal_xid; - if ($validator->fails()) { - $validationErrors = $validator->errors()->all(); - Log::error("Razorpay Cancel subscriptions validation error: " . implode(", ", $validationErrors)); - return jsonResponseWithErrorMessageApi($validationErrors, 203); - } + // dd($request->all(),$stripeSecret); - $iamPrincipalId = $request->iam_principal_xid; - $razorpaySubscriptionId = $request->subscription_id; - $subscriptionXid = $request->subscription_xid; + $getSubscriptionData = Subscriptions::where('iam_principal_xid', $userId)->where('subscription_status', 'active')->first(); - $getSubscriptionData = RazorpaySubscriptions::where(['id' => $subscriptionXid, 'iam_principal_xid' => $iamPrincipalId, 'subscription_id' => $razorpaySubscriptionId, 'isCancelledSubscription' => 0])->first(); + $subscriptionId = $getSubscriptionData->subscription_id; + + $cancelledSubscription = $stripe->subscriptions->update( + $subscriptionId, + ['cancel_at_period_end' => true] + ); - if (!$getSubscriptionData) { - return response()->json(['status' => 502, 'message' => 'Something went wrong while cancelling Subscription']); - } - $api = new Api(config('constants.razorpay.key_id'), config('constants.razorpay.key_secret')); - $options = ['cancel_at_cycle_end' => 1]; - // Call the subscription create method with request parameters - $response = $api->subscription->fetch($razorpaySubscriptionId)->cancel($options); + $subscriptionFromDatabase = Subscriptions::where('subscription_id', $subscriptionId)->first(); + $subscriptionFromDatabase->cancelled_at = date('Y-m-d H:i:s', $cancelledSubscription->canceled_at); + + $subscriptionFromDatabase->subscription_status = $cancelledSubscription->status; + $subscriptionFromDatabase->is_cancelled_subscription = 1; //2 for cancelled + $subscriptionFromDatabase->status = "cancelled"; + + $subscriptionFromDatabase->save(); + + + $getSubscription = $stripe->subscriptions->retrieve($subscriptionFromDatabase->subscription_id, []); + + + $getSubscribeCustomer = $stripe->customers->retrieve( + $subscriptionFromDatabase->stripe_customer_id, + [] + ); - $endAt = date('Y-m-d H:i:s', $response->end_at); - $dateTime = now(); - $currentDateTime = $dateTime->format('Y-m-d H:i:s'); - $getSubscriptionData->isCancelledSubscription = 1; - $getSubscriptionData->cancelled_at = $currentDateTime; - $getSubscriptionData->save(); DB::commit(); - Log::info("Razorpay Cancel subscriptions end: "); + return redirect()->back()->with(['success' => "Your Subscription Cancelled Successfully!"]); - return response()->json(['status' => 200, 'end_date' => $endAt]); - // return response()->json(['status' => 200, 'message' => 'Your Subscription has been cancelled Sucessfully']); - - - } catch (Exception $e) { + } catch (\Exception $e) { DB::rollBack(); - Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage(), ['exception' => $e]); - return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500); + + return redirect()->back()->with(['error' => "Something went wrong while cancelling subscription!" . $e->getMessage()]); } } - public function validateCancelSubscriptionForm(Request $request) + + /** + * Created By : Hritik + * Created at : 05 Jult 2024 + * Use : To Apply Referral Code and return the User Id. + */ + + + + + public function applyReferralCode(Request $request) { - return Validator::make( - $request->all(), - [ - 'iam_principal_xid' => 'required', - 'subscription_id' => 'required', - 'subscription_xid' => 'required', - ] - ); + try { + + $referralCode = $request->input('referral_code'); + $currentUserId = $request->input('current_iam_principal_xid'); + $code = IamPrincipal::where('referral_code', $referralCode)->where('id', '!=', $currentUserId)->where('principal_type_xid', 3)->first(); + + if ($code) { + return response()->json(['success' => true, 'message' => 'Referral code applied successfully.', 'referralUserId' => $code->id]); + } else { + return response()->json(['success' => false, 'message' => 'Invalid referral code.']); + } + + } catch (\Exception $e) { + Log::error("An error occurred in " . __METHOD__ . ": " . $e->getMessage(), ['exception' => $e]); + return jsonResponseWithErrorMessage(__('auth.something_went_wrong')); + } } - - // public function subscriptionUpgrade(Request $request) - // { - // // dd($request->all()); - - // $razorPaysubscriptionProductXid = $request->razorpay_plan_id; - // $productTypeId = $request->product_type_xid; - // $productTierId = $request->product_tier_xid; - // $iamId = $request->iam_principal_xid; - - // $user_id = 12; // Change this to dynamic user ID - - // // Retrieve the current monthly subscription - // $currentSubscription = RazorpaySubscriptions::where('iam_principal_xid', $user_id)->first(); - - // if (!$currentSubscription) { - // return response()->json(['status' => 502, 'message' => 'Something went wrong current user Subscription not found']); - // } - - // $products = Products::where('product_type_xid', $productTypeId) - // ->where('product_tier_xid', $productTierId) - // ->where('razorpay_plan_id', $razorPaysubscriptionProductXid) - // ->where('is_active', '1')->first(); - - // if (!$products) { - // return response()->json(['status' => 502, 'message' => 'Something went wrong current product not found']); - // } - - // $api = new Api(config('constants.razorpay.key_id'), config('constants.razorpay.key_secret')); - // $plan_id = $products->razorpay_plan_id; - - // // Call the subscription create method with request parameters - - // } } diff --git a/app/Services/APIs/CustomerAPIs/AuthServices.php b/app/Services/APIs/CustomerAPIs/AuthServices.php index d68626b..6cea0a9 100644 --- a/app/Services/APIs/CustomerAPIs/AuthServices.php +++ b/app/Services/APIs/CustomerAPIs/AuthServices.php @@ -56,9 +56,14 @@ class AuthServices do { $referral_code = \Str::random(10); } while (IamPrincipal::where('referral_code', $referral_code)->exists()); - + + if ($request->one_signal_player_id == "null") { + $playerId = null; + } else { + $playerId = $request->one_signal_player_id; + } $user = IamPrincipal::create([ - 'one_signal_player_id' => $request->one_signal_player_id, + 'one_signal_player_id' => $playerId, 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'email_address' => $request->email_address, @@ -118,8 +123,13 @@ class AuthServices Log::error('Customer Login Failed'); return jsonResponseWithErrorMessageApi(__('auth.authentication_failed'), 403); } + if ($request->one_signal_player_id == "null") { + $playerId = null; + } else { + $playerId = $request->one_signal_player_id; + } - $isExistEmail->one_signal_player_id = $request->one_signal_player_id; + $isExistEmail->one_signal_player_id = $playerId ; $isExistEmail->save(); $response = [ 'iam_principal_xid' => $isExistEmail->id, diff --git a/resources/views/Admin/pages/subscriptions/list-of-products.blade.php b/resources/views/Admin/pages/subscriptions/list-of-products.blade.php index dc486c9..a2d6ef0 100644 --- a/resources/views/Admin/pages/subscriptions/list-of-products.blade.php +++ b/resources/views/Admin/pages/subscriptions/list-of-products.blade.php @@ -3,11 +3,32 @@ - + + + {{-- + + --}} + + + + + + + + List Of Products @@ -62,15 +83,26 @@
-
+
- +
- + + +
- + + + + +
+
+ +
{{--
@@ -87,6 +119,7 @@ @csrf +

Total Payment

@@ -96,10 +129,11 @@

${{ $productList->product_value }}

- + {{-- --}} -

You will be charged ${{ $productList->product_value }} every month +

You will be charged ${{ $productList->product_value }} every + month after your free trial period ends.

Subscription will be renewed monthly until cancelled.

@@ -175,9 +209,15 @@ + + + + + + + + diff --git a/resources/views/Admin/pages/subscriptions/my-subscription.blade.php b/resources/views/Admin/pages/subscriptions/my-subscription.blade.php index e51e73f..2dfb63b 100644 --- a/resources/views/Admin/pages/subscriptions/my-subscription.blade.php +++ b/resources/views/Admin/pages/subscriptions/my-subscription.blade.php @@ -2,47 +2,82 @@ - - - + + + - My Subscription + My Subscription -
-
-

- - {{-- --}} - - My Active Plan -

-
-
- - -
-
- - -
-
- - -
-
- -
+
+
+
+ @if (session('success')) +
+ {{ session('success') }} +
+ @endif - - {{--
+ {{--

Subscription FAQs

- @foreach($faqs as $faq) + @foreach ($faqs as $faq)
first ? '' : 'hidden' }}> @@ -97,72 +132,106 @@
--}} - - + +
+ + -
- + - + - + + + + diff --git a/routes/web.php b/routes/web.php index 3f38421..cd93e8b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -234,6 +234,11 @@ Route::group(['middleware' => ['customer.jwt.verify']], function () { // }); Route::post('subscribe-to-plan', [SubscriptionController::class, 'subscriptionToPlan'])->name('subscribe-to-plan'); Route::get('thank-you', [SubscriptionController::class, 'thankyou'])->name('thankyou'); + Route::post('cancel-subscription',[SubscriptionController::class,'cancelSubscription'])->name('cancel-subscription'); + Route::post('apply-referral-code', [SubscriptionController::class, 'applyReferralCode'])->name('apply-referral-code'); + + + // Route::post('subscribe-to-product', [SubscriptionController::class, 'subscribeToProduct'])->name('subscribe-to-product'); // Route::post('cancel-subscription', [SubscriptionController::class, 'cancelSubscription'])->name('cancel-subscription'); // Route::get('cancel-thank-you', [SubscriptionController::class, 'cancelThankYou'])->name('cancel-thank-you');