<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Category;
use App\Models\UserPreference;

class OnboardingController extends Controller
{
    public function show()
    {
        $user = auth()->user();
        
        // Check if user has already completed onboarding
        $preferences = $user->preferences;
        if ($preferences && $preferences->onboarding_completed) {
            return redirect()->route('dashboard');
        }

        $categories = Category::where('is_active', true)
            ->orderBy('sort_order')
            ->orderBy('name')
            ->get();

        return view('onboarding.preferences', compact('categories', 'preferences'));
    }

    public function store(Request $request)
    {
        $validated = $request->validate([
            'preferred_categories' => 'array',
            'preferred_categories.*' => 'exists:categories,id',
            'preferred_price_ranges' => 'array',
            'preferred_listing_types' => 'array',
            'preferred_listing_types.*' => 'in:sale,trade',
            'preferred_conditions' => 'array',
            'preferred_conditions.*' => 'in:excellent,good,fair,poor',
            'preferred_locations' => 'array',
        ]);

        $user = auth()->user();

        // Create or update preferences
        UserPreference::updateOrCreate(
            ['user_id' => $user->id],
            array_merge($validated, [
                'onboarding_completed' => true,
            ])
        );

        return redirect()->route('dashboard')
            ->with('success', 'Your preferences have been saved! You\'ll now see more personalized recommendations.');
    }

    public function skip()
    {
        $user = auth()->user();

        // Create default preferences
        UserPreference::updateOrCreate(
            ['user_id' => $user->id],
            array_merge(UserPreference::getDefaultPreferences(), [
                'onboarding_completed' => true,
            ])
        );

        return redirect()->route('dashboard')
            ->with('info', 'Onboarding skipped. You can update your preferences anytime from your profile.');
    }
}