subscriptionPlansRepository = new SubscriptionPlansRepository(); $this->subscriptionPlanPricesRepository = new SubscriptionPlanPricesRepository(); $credential = getPaymentInfoViaSellerId(1, 4); $this->stripePayment = new \Stripe\StripeClient([ "api_key" => @$credential->perameter_3, "stripe_version" => "2022-11-15" ]); } public function index() { new AugmentationService(); return view('subscription::plan.index'); } public function data() { try { $setting = SubscriptionSetting::getData(); $plans = $this->subscriptionPlansRepository->getAll(); return response()->json([ 'plans' => $plans->load('prices'), 'setting' => $setting ]); } catch (\Exception $e) { return response()->json([ 'message' => 'An error occurred.' ], 500); } } public function store(Request $request) { $request->validate([ 'title' => 'required', 'image' => 'required|image', 'discount' => 'required' ]); try { $this->subscriptionPlansRepository->create($request); return response()->json([ 'message' => 'Plan has been successfully saved.' ]); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function update(Request $request) { $request->validate([ 'discount' => 'required' ]); try { $ret = $this->subscriptionPlansRepository->update($request); if ($ret) { return response()->json([ 'message' => "Plan has been successfully updated." ]); } else { return response()->json([ 'message' => 'Failed to update plan. Plan not found.' ], 500); } } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function popular(Request $request) { try { $plan = SubscriptionPlan::find($request->id); if ($plan) { SubscriptionPlan::query()->update(['popular' => 0]); $plan->popular = 1; $plan->save(); return response()->json([ 'message' => "Plan has been set as popular." ]); } return response()->json([ 'message' => 'Failed to set as popular. Plan not found.' ], 500); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function delete(Request $request) { try { $ret = $this->subscriptionPlansRepository->delete($request); if ($ret === true) { return response()->json([ 'message' => 'Plan has been successfully deleted.' ]); } else { if ($ret == 'in_use') { return response()->json([ 'message' => 'Unable to delete plan. Plan is in use.' ], 403); } else { return response()->json([ 'message' => 'Failed to delete plan. Plan not found.' ], 500); } } } catch (\Exception $e) { return response()->json([ 'message' => 'An error occurred. Failed to delete plan.' ], 500); } } public function changePlanPosition(Request $request) { $ids = $request->get('ids'); if (count($ids) != 0) { foreach ($ids as $key => $id) { $plan = SubscriptionPlan::find($id); if ($plan) { $plan->order = $key + 1; $plan->save(); } } } return true; } public function priceStore(Request $request) { $request->validate([ 'subscription_plan_id' => 'required|exists:subscription_plans,id', 'price' => 'required', 'total_credits' => 'required', 'per_month_credits' => 'required', 'payment' => 'required', 'billing_type' => 'required' ]); try { $plan = SubscriptionPlan::find($request->subscription_plan_id); if($plan){ $this->subscriptionPlanPricesRepository->create($plan,$request); return response()->json([ 'message' => 'Price has been successfully saved.' ]); } else { return response()->json([ 'message' => 'Subscription Plan not found.' ], 404); } } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function priceUpdate(Request $request) { $request->validate([ 'price' => 'required', 'total_credits' => 'required', 'per_month_credits' => 'required', 'payment' => 'required', 'billing_type' => 'required' ]); try { $response = $this->subscriptionPlanPricesRepository->update($request); if ($response) { return response()->json([ 'message' => "Plan has been successfully updated." ]); } else { return response()->json([ 'message' => 'Failed to update plan. Plan not found.' ], 500); } } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function priceDelete(Request $request) { try { $response = $this->subscriptionPlanPricesRepository->delete($request->id); if ($response === true) { return response()->json([ 'message' => 'Price has been successfully deleted.' ]); } else { return response()->json([ 'message' => 'Failed to delete price. Price not found.' ], 500); } } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } private function getCredential(){ $url = explode('?',url()->previous()); if(isset($url[0]) && $url[0] == url('/checkout')){ $is_checkout = true; }else{ $is_checkout = false; } if(session()->has('order_payment') && app('general_setting')->seller_wise_payment && session()->has('seller_for_checkout') && $is_checkout){ $credential = getPaymentInfoViaSellerId(session()->get('seller_for_checkout'), 4); }else{ $credential = getPaymentInfoViaSellerId(1, 4); } return $credential; } }