mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-09-21 15:13:47 -04:00
176 lines
5.0 KiB
PHP
176 lines
5.0 KiB
PHP
<?php
|
|
|
|
namespace Modules\Subscription\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\Subscription\Repositories\PaymentCodeRepository;
|
|
use Modules\Subscription\Entities\PaymentCode;
|
|
use Modules\Subscription\Entities\PaymentCodeAddon;
|
|
use Modules\Subscription\Entities\SubscriptionPlanPrice;
|
|
use Carbon\Carbon;
|
|
use Exception;
|
|
use Log;
|
|
|
|
class PaymentCodeController extends Controller
|
|
{
|
|
private $paymentCodeRepository;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->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('prepaid', 1)->where('status', 1);
|
|
})->get()->map(function($price, $key) {
|
|
return [
|
|
'id' => $price->id,
|
|
'label' => $price->plan->title.' - '.$price->total_credits.' Credits for '.$price->access_expire_duration.' '.$price->access_expire_duration_type.' ($'.number_format($price->price,2).')'
|
|
];
|
|
});
|
|
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',
|
|
'type' => 'required',
|
|
'addons' => 'nullable|array',
|
|
'addons.*.description' => 'required'
|
|
],
|
|
[
|
|
'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',
|
|
'type' => 'required',
|
|
'addons' => 'nullable|array',
|
|
'addons.*.description' => 'required'
|
|
],
|
|
[
|
|
'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->paymentCodeRepository->delete($request->id);
|
|
|
|
if ($ret === true) {
|
|
return response()->json([
|
|
'message' => 'Payment Code has been successfully deleted.'
|
|
]);
|
|
}
|
|
else {
|
|
if ($ret == 'in_use') {
|
|
return response()->json([
|
|
'message' => 'Unable to delete payment code. Payment Code is in use.'
|
|
], 403);
|
|
}
|
|
else {
|
|
return response()->json([
|
|
'message' => 'Failed to delete payment code. Payment Code not found.'
|
|
], 500);
|
|
}
|
|
}
|
|
}
|
|
catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function apply(Request $request) {
|
|
|
|
|
|
$request->validate([
|
|
'code' => 'required',
|
|
'user_id' => 'nullable'
|
|
]);
|
|
|
|
try {
|
|
|
|
return $this->paymentCodeRepository->apply($request->code);
|
|
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function validate(Request $request)
|
|
{
|
|
$request->validate([
|
|
'code' => 'required'
|
|
]);
|
|
|
|
try {
|
|
|
|
return $this->paymentCodeRepository->validate($request->code);
|
|
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
}
|