<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up(): void
    {
        Schema::create('athlete_assessments', function (Blueprint $table) {
            $table->id();
            $table->foreignId('athlete_id')->constrained('athletes')->cascadeOnDelete();

            // در ارزیابی اولیه معمولاً null است (بند ۹ + دلیل در docs/architecture-addendum.md)
            $table->foreignId('coach_id')->nullable()->constrained('coaches')->nullOnDelete();

            $table->date('assessment_date');

            $table->decimal('weight_kg', 5, 2);
            $table->unsignedSmallInteger('height_cm');
            $table->decimal('bmi', 4, 1); // محاسبه و ذخیره‌شده در لحظه ثبت — بند ۴۴
            $table->decimal('body_fat_percentage', 4, 1)->nullable(); // توسط مربی، بند ۹

            $table->enum('athlete_level', ['beginner', 'intermediate', 'advanced'])->nullable();
            $table->text('training_history')->nullable();
            $table->foreignId('goal_id')->nullable()->constrained('goals')->nullOnDelete();

            $table->text('coach_notes')->nullable();

            // اولین ارزیابی هر ورزشکار (برای تمایز از ارزیابی‌های هفته ۴/۸/۱۲ در Phase 9)
            $table->boolean('is_initial')->default(false);

            $table->foreignId('created_by')->constrained('users')->cascadeOnDelete();

            $table->timestamps();
            $table->softDeletes();

            $table->index(['athlete_id', 'assessment_date']);
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('athlete_assessments');
    }
};
