<?php

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

class AddIdentityVerificationToUsersTable extends Migration
{
    /**
     * Run the migrations.
     * Thêm các fields cho chức năng xác minh danh tính (Identity Verification)
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            // Identity verification status
            $table->enum('identity_status', ['not_submitted', 'pending', 'approved', 'rejected'])
                  ->default('not_submitted')
                  ->after('payjp_customer_id')
                  ->comment('Trạng thái xác minh danh tính');

            // Timestamps for identity verification
            $table->timestamp('identity_submitted_at')->nullable()->after('identity_status')
                  ->comment('Thời điểm nộp giấy tờ');
            $table->timestamp('identity_approved_at')->nullable()->after('identity_submitted_at')
                  ->comment('Thời điểm được duyệt');
            $table->timestamp('identity_rejected_at')->nullable()->after('identity_approved_at')
                  ->comment('Thời điểm bị từ chối');

            // Rejection tracking
            $table->unsignedTinyInteger('identity_rejection_count')->default(0)->after('identity_rejected_at')
                  ->comment('Số lần bị từ chối');
            $table->text('identity_rejection_reason')->nullable()->after('identity_rejection_count')
                  ->comment('Lý do từ chối');

            // Document images - Driver License (front + back)
            $table->string('driver_license_front', 500)->nullable()->after('identity_rejection_reason')
                  ->comment('Ảnh mặt trước bằng lái xe');
            $table->string('driver_license_back', 500)->nullable()->after('driver_license_front')
                  ->comment('Ảnh mặt sau bằng lái xe');

            // Document images - My Number Card (front only)
            $table->string('my_number_card_front', 500)->nullable()->after('driver_license_back')
                  ->comment('Ảnh mặt trước thẻ My Number');

            // Document type used for verification
            $table->enum('identity_document_type', ['driver_license', 'my_number_card'])->nullable()->after('my_number_card_front')
                  ->comment('Loại giấy tờ sử dụng để xác minh');

            // Index for faster queries
            $table->index('identity_status');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropIndex(['identity_status']);

            $table->dropColumn([
                'identity_status',
                'identity_submitted_at',
                'identity_approved_at',
                'identity_rejected_at',
                'identity_rejection_count',
                'identity_rejection_reason',
                'driver_license_front',
                'driver_license_back',
                'my_number_card_front',
                'identity_document_type',
            ]);
        });
    }
}
