paymentCodeRepository = new PaymentCodeRepository(); } public function index() { return view('subscription::payment_codes.index'); } public function data() { try { $paymentCodes = $this->paymentCodeRepository->all(); $subscription_plans = SubscriptionPlanPrice::with('plan')->where('payment','upfront')->where('payment_method','prepaid')->whereHas('plan', function ($query) { $query->where('status', 1); })->get()->map(function($price, $key) { return [ 'id' => $price->id, 'label' => $price->plan->title.' - $'. number_format($price->price,2).' for '.$price->access_expire_duration.' Months' ]; }); return response()->json([ 'payment_codes' => $paymentCodes, 'subscription_plans' => $subscription_plans ]); } catch (\Exception $e) { return response()->json([ 'message' => 'An error occurred.' ], 500); } } public function store(Request $request) { $request->validate([ 'subscription_plan_price_id' => 'required|exists:subscription_plan_prices,id', 'start_date' => 'required', 'end_date' => 'required', 'addons' => 'nullable|array', 'addons.*.description' => 'required', 'addons.*.price' => 'required|numeric', ], [ 'subscription_plan_price_id.required' => 'The subscription plan field is required.' ] ); try { $this->paymentCodeRepository->create($request); return response()->json([ 'message' => 'Payment Code has been successfully generated.' ]); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function update(Request $request) { $request->validate([ 'subscription_plan_price_id' => 'required|exists:subscription_plan_prices,id', 'start_date' => 'required', 'end_date' => 'required', 'addons' => 'nullable|array', 'addons.*.description' => 'required', 'addons.*.price' => 'required|numeric', ], [ 'subscription_plan_price_id.required' => 'The subscription plan field is required.' ] ); try { $this->paymentCodeRepository->update($request); return response()->json([ 'message' => 'Payment Code has been successfully updated.' ]); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function delete(Request $request) { try { $ret = $this->subscriptionCouponsRepository->delete($request->id); if ($ret === true) { return response()->json([ 'message' => 'Coupon has been successfully deleted.' ]); } else { if ($ret == 'in_use') { return response()->json([ 'message' => 'Unable to delete coupon. Coupon is in use.' ], 403); } else { return response()->json([ 'message' => 'Failed to delete coupon. Coupon not found.' ], 500); } } } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } }