59 lines
1.6 KiB
PHP
59 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Auth;
|
|
|
|
use App\Enums\UserStatus;
|
|
use App\Enums\UserTypes;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\StoreRegisterdUser;
|
|
use App\Models\Broker;
|
|
use App\Models\Customer;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class RegisteredUserController extends Controller
|
|
{
|
|
public function create()
|
|
{
|
|
return view('auth.register');
|
|
}
|
|
|
|
public function store(StoreRegisterdUser $request)
|
|
{
|
|
$data = $request->validated();
|
|
try {
|
|
DB::transaction(function () use ($data) {
|
|
switch ($data['role']) {
|
|
case UserTypes::Broker->value:
|
|
|
|
$data['status'] = UserStatus::Pending->value;
|
|
|
|
// Create Broker first, then link the user
|
|
$broker = Broker::create();
|
|
$broker->user()->create($data);
|
|
break;
|
|
|
|
case UserTypes::User->value:
|
|
|
|
$data['status'] = UserStatus::Active->value;
|
|
|
|
$customer = Customer::create();
|
|
$customer->user()->create($data);
|
|
break;
|
|
|
|
}
|
|
});
|
|
|
|
return to_route('login.create')
|
|
->with('success', 'User registered successfully.');
|
|
|
|
} catch (\Throwable $e) {
|
|
Log::error('Registration Failed: '.$e->getMessage());
|
|
|
|
return back()
|
|
->withInput()
|
|
->with('error', 'Something went wrong during registration.');
|
|
}
|
|
}
|
|
}
|