<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        // جدول العروض
        Schema::create('offers', function (Blueprint $table) {
            $table->id();
            $table->string('title'); // عنوان العرض
            $table->string('title_ar')->nullable(); // العنوان بالعربية
            $table->text('description')->nullable(); // وصف العرض
            $table->text('description_ar')->nullable(); // الوصف بالعربية
            $table->string('image')->nullable(); // صورة العرض
            $table->string('link_type')->default('none'); // نوع الرابط: 'none', 'restaurant', 'gas_office', 'external'
            $table->unsignedBigInteger('link_id')->nullable(); // معرف الرابط (إذا كان مطعم أو مكتب غاز)
            $table->string('external_link')->nullable(); // رابط خارجي
            $table->decimal('discount_percentage', 5, 2)->nullable(); // نسبة الخصم
            $table->decimal('discount_amount', 10, 2)->nullable(); // مبلغ الخصم
            $table->enum('offer_type', ['food', 'gas', 'taxi', 'general'])->default('general'); // نوع العرض
            $table->dateTime('start_date'); // تاريخ البدء
            $table->dateTime('end_date'); // تاريخ الانتهاء
            $table->integer('display_order')->default(0); // ترتيب العرض
            $table->boolean('is_active')->default(true); // حالة العرض
            $table->integer('views_count')->default(0); // عدد المشاهدات
            $table->integer('clicks_count')->default(0); // عدد النقرات
            $table->timestamps();
            
            $table->index(['is_active', 'start_date', 'end_date']);
            $table->index('offer_type');
            $table->index('display_order');
        });

        // جدول الإعلانات
        Schema::create('ads', function (Blueprint $table) {
            $table->id();
            $table->string('title'); // عنوان الإعلان
            $table->string('title_ar')->nullable(); // العنوان بالعربية
            $table->text('description')->nullable(); // وصف الإعلان
            $table->text('description_ar')->nullable(); // الوصف بالعربية
            $table->string('image')->nullable(); // صورة الإعلان
            $table->string('video_url')->nullable(); // رابط فيديو
            $table->string('link_type')->default('none'); // نوع الرابط: 'none', 'restaurant', 'gas_office', 'external'
            $table->unsignedBigInteger('link_id')->nullable(); // معرف الرابط
            $table->string('external_link')->nullable(); // رابط خارجي
            $table->enum('ad_type', ['banner', 'slider', 'popup'])->default('slider'); // نوع الإعلان
            $table->dateTime('start_date'); // تاريخ البدء
            $table->dateTime('end_date'); // تاريخ الانتهاء
            $table->integer('display_order')->default(0); // ترتيب الإعلان
            $table->boolean('is_active')->default(true); // حالة الإعلان
            $table->integer('views_count')->default(0); // عدد المشاهدات
            $table->integer('clicks_count')->default(0); // عدد النقرات
            $table->decimal('cost_per_view', 10, 2)->default(0); // تكلفة المشاهدة
            $table->decimal('cost_per_click', 10, 2)->default(0); // تكلفة النقرة
            $table->decimal('total_cost', 10, 2)->default(0); // التكلفة الإجمالية
            $table->timestamps();
            
            $table->index(['is_active', 'start_date', 'end_date']);
            $table->index('ad_type');
            $table->index('display_order');
        });

        // جدول تفاعلات المستخدمين مع العروض
        Schema::create('offer_interactions', function (Blueprint $table) {
            $table->id();
            $table->foreignId('offer_id')->constrained('offers')->onDelete('cascade');
            $table->foreignId('user_id')->nullable()->constrained('users')->onDelete('cascade');
            $table->enum('interaction_type', ['view', 'click', 'share'])->default('view');
            $table->string('device_info')->nullable(); // معلومات الجهاز
            $table->string('ip_address')->nullable(); // عنوان IP
            $table->timestamps();
            
            $table->index(['offer_id', 'interaction_type']);
            $table->index(['user_id', 'created_at']);
        });

        // جدول تفاعلات المستخدمين مع الإعلانات
        Schema::create('ad_interactions', function (Blueprint $table) {
            $table->id();
            $table->foreignId('ad_id')->constrained('ads')->onDelete('cascade');
            $table->foreignId('user_id')->nullable()->constrained('users')->onDelete('cascade');
            $table->enum('interaction_type', ['view', 'click', 'share'])->default('view');
            $table->string('device_info')->nullable();
            $table->string('ip_address')->nullable();
            $table->timestamps();
            
            $table->index(['ad_id', 'interaction_type']);
            $table->index(['user_id', 'created_at']);
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('ad_interactions');
        Schema::dropIfExists('offer_interactions');
        Schema::dropIfExists('ads');
        Schema::dropIfExists('offers');
    }
};
