namespace App\Http\Controllers;
use App\Models\User;
use Shopper\Core\Models\Address;
use Shopper\Core\Enum\GenderType;
use Shopper\Core\Enum\AddressType;
use Illuminate\Support\Facades\Hash;
class AccountController extends Controller
{
public function show()
{
$customer = auth()->user();
return view('account.show', [
'customer' => $customer,
'orders' => $customer->orders()->latest()->paginate(10),
'addresses' => $customer->addresses,
]);
}
public function updateProfile(Request $request)
{
$validated = $request->validate([
'first_name' => 'required|string|max:255',
'last_name' => 'required|string|max:255',
'phone_number' => 'nullable|string|max:20',
'birth_date' => 'nullable|date',
'opt_in' => 'boolean',
]);
auth()->user()->update($validated);
return back()->with('success', 'Profile updated successfully');
}
public function storeAddress(Request $request)
{
$validated = $request->validate([
'first_name' => 'required|string',
'last_name' => 'required|string',
'street_address' => 'required|string',
'city' => 'required|string',
'postal_code' => 'required|string',
'country_id' => 'required|exists:countries,id',
'type' => 'required|in:billing,shipping',
]);
auth()->user()->addresses()->create([
...$validated,
'type' => AddressType::from($validated['type']),
]);
return back()->with('success', 'Address added successfully');
}
}