<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     * 테넌트별 영업 관리 테이블 (tenants 외래키 연결)
     */
    public function up(): void
    {
        Schema::create('sales_tenant_managements', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('tenant_id')->unique()->comment('테넌트 ID (1:1 관계)');
            $table->unsignedBigInteger('sales_partner_id')->nullable()->comment('영업 담당자 ID');
            $table->unsignedBigInteger('manager_user_id')->nullable()->comment('관리 매니저 사용자 ID');

            // 시나리오 진행 상태
            $table->unsignedTinyInteger('sales_scenario_step')->default(1)->comment('영업 시나리오 현재 단계 (1-6)');
            $table->unsignedTinyInteger('manager_scenario_step')->default(1)->comment('매니저 시나리오 현재 단계 (1-6)');

            // 영업 상태
            $table->enum('status', [
                'prospect',      // 잠재 고객
                'approach',      // 접근 중
                'negotiation',   // 협상 중
                'contracted',    // 계약 완료
                'onboarding',    // 온보딩 중
                'active',        // 활성 고객
                'churned',       // 이탈
            ])->default('prospect')->comment('영업 상태');

            // 계약 정보
            $table->timestamp('first_contact_at')->nullable()->comment('최초 접촉일');
            $table->timestamp('contracted_at')->nullable()->comment('계약 체결일');
            $table->timestamp('onboarding_completed_at')->nullable()->comment('온보딩 완료일');

            // 가입비 정보
            $table->decimal('membership_fee', 12, 2)->nullable()->comment('가입비');
            $table->timestamp('membership_paid_at')->nullable()->comment('가입비 입금일');
            $table->enum('membership_status', ['pending', 'partial', 'paid', 'refunded'])->nullable()->comment('가입비 상태');

            // 수당 정보
            $table->decimal('sales_commission', 12, 2)->nullable()->comment('영업 수당');
            $table->decimal('manager_commission', 12, 2)->nullable()->comment('관리 수당');
            $table->timestamp('commission_paid_at')->nullable()->comment('수당 지급일');
            $table->enum('commission_status', ['pending', 'approved', 'paid'])->nullable()->comment('수당 상태');

            // 진행률 캐시
            $table->unsignedTinyInteger('sales_progress')->default(0)->comment('영업 시나리오 진행률 (%)');
            $table->unsignedTinyInteger('manager_progress')->default(0)->comment('매니저 시나리오 진행률 (%)');

            $table->text('notes')->nullable()->comment('메모');
            $table->timestamps();
            $table->softDeletes();

            // 인덱스
            $table->index('sales_partner_id');
            $table->index('manager_user_id');
            $table->index('status');
            $table->index('contracted_at');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('sales_tenant_managements');
    }
};
