<?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('msg_templates', function (Blueprint $t) {
            $t->id();
            $t->foreignId('company_id')->constrained()->cascadeOnDelete();
            $t->string('name');
            $t->string('channel');                       // telegram / whatsapp / sms / email / viber
            $t->string('subject')->nullable();
            $t->text('body');                            // poate avea {name}, {car}, {date} ...
            $t->json('variables')->nullable();           // [['key'=>'name','label'=>'Nume client']]
            $t->boolean('is_active')->default(true);
            $t->timestamps();
            $t->softDeletes();

            $t->index(['company_id', 'channel']);
            $t->index(['company_id', 'is_active']);
        });

        Schema::create('marketing_channels', function (Blueprint $t) {
            $t->id();
            $t->foreignId('company_id')->constrained()->cascadeOnDelete();
            $t->string('name');                          // Google Ads, FB, IG, Telegram, ...
            $t->string('icon', 16)->nullable();          // emoji
            $t->string('color', 16)->nullable();
            $t->decimal('budget_monthly', 12, 2)->default(0);
            $t->decimal('spent_monthly', 12, 2)->default(0);
            $t->unsignedInteger('leads_count')->default(0);
            $t->unsignedInteger('converted_count')->default(0);
            $t->decimal('revenue', 12, 2)->default(0);
            $t->boolean('is_active')->default(true);
            $t->text('notes')->nullable();
            $t->timestamps();
            $t->softDeletes();

            $t->index(['company_id', 'is_active']);
        });

        Schema::create('calls', function (Blueprint $t) {
            $t->id();
            $t->foreignId('company_id')->constrained()->cascadeOnDelete();
            $t->foreignId('client_id')->nullable()->constrained()->nullOnDelete();
            $t->foreignId('lead_id')->nullable()->constrained()->nullOnDelete();
            $t->foreignId('user_id')->nullable()->constrained()->nullOnDelete();

            $t->string('direction');                     // incoming / outgoing / missed
            $t->string('phone');
            $t->timestamp('called_at');
            $t->unsignedInteger('duration_sec')->default(0);
            $t->string('status')->default('answered');   // answered / missed / busy / no_answer
            $t->string('recording_url')->nullable();
            $t->text('notes')->nullable();
            $t->boolean('lead_created')->default(false);
            $t->timestamps();
            $t->softDeletes();

            $t->index(['company_id', 'called_at']);
            $t->index(['company_id', 'direction']);
            $t->index(['company_id', 'phone']);
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('calls');
        Schema::dropIfExists('marketing_channels');
        Schema::dropIfExists('msg_templates');
    }
};
