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 @@
-
+
- Enter coupon code
+ Enter Referral code
- Apply
+
+
+ Apply
-
+
+
+
+
+
+
+
Loading...
+
{{--
@@ -87,6 +119,7 @@
@csrf
+
Total Payment
@@ -96,10 +129,11 @@
${{ $productList->product_value }}
-
SUBSCRIBE NOW
+
SUBSCRIBE NOW
{{--
SUBSCRIBE NOW --}}
-
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 @@
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+ @if (session('success'))
+
+ {{ session('success') }}
+
+ @endif
-
- {{--
+ {{--
Subscription FAQs
- @foreach($faqs as $faq)
+ @foreach ($faqs as $faq)
first ? '' : 'hidden' }}>
@@ -97,72 +132,106 @@
--}}
-
-
-
-
-
+
+
If you cancel now, you can still access your subscription until
+ {{ \Carbon\Carbon::now()->format('M d ,Y') }} After this date, you will no longer be able
+ to redeem cocktails.
+
+
Are you sure you want to cancel?
+
+
+
-
-
+
-
+
-
+
+
+
+
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 @@
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');