dealhub/app/Http/Controllers/Auth/RegisteredUserController.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.');
}
}
}