<?php

namespace Database\Seeders;

use App\Enums\CoachStatus;
use App\Enums\UserRole;
use App\Models\Athlete;
use App\Models\Coach;
use App\Models\Goal;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;

/**
 * Seeder نهایی و تجمیعی — نسخه‌ی نهایی که تمام seederهای پراکنده‌ی فازهای
 * مختلف (Phase 1, 2, 3, 6) را یک‌جا و به ترتیب صحیح اجرا می‌کند.
 */
class DatabaseSeeder extends Seeder
{
    public function run(): void
    {
        // --- Admin تستی ---
        $admin = User::create([
            'first_name' => 'مدیر',
            'last_name' => 'سیستم',
            'mobile' => '09120000001',
            'email' => 'admin@abtinsport.test',
            'password' => Hash::make('Admin@12345'),
            'role' => UserRole::Admin,
            'is_active' => true,
        ]);

        // --- مربی تستی — Approved ---
        $coachUser = User::create([
            'first_name' => 'علی',
            'last_name' => 'رضایی',
            'mobile' => '09120000002',
            'email' => 'coach@abtinsport.test',
            'password' => Hash::make('Coach@12345'),
            'role' => UserRole::Coach,
            'is_active' => true,
        ]);

        $demoCoach = Coach::create([
            'user_id' => $coachUser->id,
            'bio' => 'مربی نمونه برای تست سیستم — دارای ۵ سال سابقه بدنسازی و پاورلیفتینگ.',
            'experience_years' => 5,
            'status' => CoachStatus::Approved,
            'approved_at' => now(),
            'approved_by' => $admin->id,
            'program_price' => 1500000,
        ]);

        // --- ورزشکار تستی ---
        $athleteUser = User::create([
            'first_name' => 'سارا',
            'last_name' => 'محمدی',
            'mobile' => '09120000003',
            'email' => 'athlete@abtinsport.test',
            'password' => Hash::make('Athlete@12345'),
            'role' => UserRole::Athlete,
            'is_active' => true,
        ]);

        Athlete::create([
            'user_id' => $athleteUser->id,
            'height_cm' => 165,
            'weight_kg' => 62.5,
        ]);

        // --- Phase 2: اهداف ورزشی ---
        $this->call(GoalSeeder::class);

        // --- Phase 3: اتصال مربی دمو به چند هدف/تخصص نمونه ---
        $sampleGoals = Goal::query()->limit(2)->pluck('id');
        if ($sampleGoals->isNotEmpty()) {
            $demoCoach->goals()->sync($sampleGoals);
        }

        // --- Phase 6: بانک حرکات ورزشی نمونه ---
        $this->call(ExerciseLibrarySeeder::class);

        $this->command->info('Seed کامل شد. اطلاعات ورود Demo در README.md مستند شده.');
    }
}
