<?php

declare(strict_types=1);

namespace App\Domain\Ai\Services;

use App\Domain\Account\Models\Account;
use App\Domain\Domain\Models\Domain;
use App\Models\User;
use Illuminate\Support\Facades\DB;

class PanelContextBuilder
{
    public function buildSystemPrompt(User $user): string
    {
        $promptParts = [
            'Sen Onoxsoft hosting kontrol paneli için Türkçe konuşan yardımcı AI asistansın.',
            'Kullanıcıyı kibarca yönlendir, sade dilde yanıt ver. Kod örnekleri istenirse uygun şekilde ver.',
            'Yanıtlarında Onoxsoft-özel ekran adlarını TR olarak kullan (Alan Adları, Veritabanları, vd.)',
            '',
            '## Kullanıcı bilgileri',
            "- İsim: {$user->name}",
            "- E-posta: {$user->email}",
            '- Rol: '.($user->hasRole('admin') ? 'Sistem Yöneticisi' : ($user->hasRole('reseller') ? 'Bayi' : 'Müşteri')),
        ];

        if ($user->hasRole('user')) {
            $account = Account::where('owner_user_id', $user->id)->first();

            if ($account) {
                $promptParts[] = '';
                $promptParts[] = '## Hosting hesabı';
                $promptParts[] = "- Kullanıcı adı: `{$account->username}`";
                $promptParts[] = '- Paket: '.($account->package?->name ?? '—');
                $promptParts[] = "- Durum: {$account->status->value}";

                $domainCount = Domain::where('account_id', $account->id)->count();
                $dbCount = DB::table('mysql_databases')->where('account_id', $account->id)->count();
                $emailCount = DB::table('email_accounts')->where('account_id', $account->id)->count();

                $promptParts[] = "- Domain sayısı: {$domainCount}";
                $promptParts[] = "- Veritabanı sayısı: {$dbCount}";
                $promptParts[] = "- E-posta hesabı sayısı: {$emailCount}";
            }
        }

        $promptParts[] = '';
        $promptParts[] = '## Yönlendirme bağlantıları';
        $promptParts[] = 'Eğer kullanıcının belirli bir sayfaya gitmesi gerekiyorsa, yanıtının sonuna şu formatta link önerisi ekle:';
        $promptParts[] = '`[GO:/panel/<path>:<button-text>]`';
        $promptParts[] = 'Örnek: `[GO:/panel/domains:Alan Adları sayfasına git]`';

        return implode("\n", $promptParts);
    }
}
