- redirect after sign in/up to payment page

- extended /api/oasis/subscribe function
- setup:dev extended data
This commit is contained in:
Peter Papp
2021-03-24 11:38:15 +01:00
parent 1bb3ca4fb5
commit af79a28361
17 changed files with 1542 additions and 314 deletions
+31 -1
View File
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Oasis;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\CreateUserByAdmin;
use App\Http\Resources\UserResource;
use App\Models\User;
use App\Models\UserSettings;
@@ -45,7 +46,7 @@ class AdminController extends Controller
* @param Request $request
* @return Application|ResponseFactory|Response
*/
public function register_new_client(Request $request)
public function create_order(Request $request)
{
// Create user
$newbie = User::create([
@@ -91,4 +92,33 @@ class AdminController extends Controller
new UserResource($newbie), 201
);
}
/**
* Create new user by admin
*
* @param CreateUserByAdmin $request
* @return UserResource|Application|ResponseFactory|Response
*/
public function create_user(CreateUserByAdmin $request)
{
// Create user
$user = User::forceCreate([
'role' => $request->role,
'email' => $request->email,
'password' => \Illuminate\Support\Facades\Hash::make($request->password),
]);
UserSettings::unguard();
$user
->settings()
->create([
'name' => $request->name,
'avatar' => store_avatar($request, 'avatar'),
'storage_capacity' => $request->storage_capacity,
'payment_activation' => 1,
]);
return response(new UserResource($user), 201);
}
}
@@ -60,24 +60,43 @@ class SubscriptionController extends Controller
*/
public function subscribe(Request $request, SubscriptionRequest $order)
{
// Create subscription
$order->user
->newSubscription('main', $order->requested_plan)
->create(
$this->stripe->getOrSetDefaultPaymentMethod($request, $order->user)
);
// Make subscription from subscription request
if ($order->exists) {
// Get requested plan
$plan = $this->stripe
->getPlan($order->requested_plan);
// Create subscription
$order->user
->newSubscription('main', $order->requested_plan)
->create(
$this->stripe->getOrSetDefaultPaymentMethod($request, $order->user)
);
// Update Subscription request
$order->update([
'status' => 'payed'
]);
// Update Subscription request
$order->update(['status' => 'payed']);
$user = $order->user;
}
// Make subscription after user sign up and pay for the plan
if (!$order->exists) {
$user = Auth::user();
// Set user billing
$user->setBilling($request->billing);
// Update stripe customer billing info
$this->stripe->updateCustomerDetails($user);
// Make subscription
$this->stripe->createOrReplaceSubscription($request, $user);
}
// Get plan
$plan = $this->stripe->getPlan(
$order->requested_plan ?? $request->input('plan.data.id')
);
// Update user storage limit
$order->user
$user
->settings()
->update([
'storage_capacity' => $plan['product']['metadata']['capacity'],