<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\GeneratedReport;
use App\Services\Ai\ReportAiInsightGenerator;
use App\Services\Reports\ReportGenerator;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;

class ReportAiInsightController extends Controller
{
    public function generate(Request $request, GeneratedReport $report, ReportAiInsightGenerator $insightGenerator, ReportGenerator $reportGenerator): RedirectResponse
    {
        $data = $request->validate([
            'force_local' => ['nullable', 'boolean'],
            'regenerate_files' => ['nullable', 'boolean'],
        ]);

        if ($report->status !== 'completed') {
            return back()->with('error', 'AI yorumu oluşturmak için raporun tamamlanmış olması gerekiyor.');
        }

        $report = $insightGenerator->generate($report, ! empty($data['force_local']));

        if ($report->ai_status === 'completed' && ! empty($data['regenerate_files'])) {
            $reportGenerator->generate($report);
        }

        if ($report->ai_status === 'failed') {
            return back()->with('error', 'AI yorumu oluşturulamadı: ' . $report->ai_error_message);
        }

        $message = $report->ai_provider === 'local_rules_fallback'
            ? 'Harici AI çalışmadı; yerel kural motoru ile yorum üretildi.'
            : 'AI yorumu oluşturuldu.';

        return back()->with('success', $message);
    }

    public function clear(GeneratedReport $report): RedirectResponse
    {
        $report->update([
            'ai_status' => 'pending',
            'ai_provider' => null,
            'ai_executive_summary' => null,
            'ai_customer_note' => null,
            'ai_technical_note' => null,
            'ai_risks' => null,
            'ai_opportunities' => null,
            'ai_actions' => null,
            'ai_raw_response' => null,
            'ai_error_message' => null,
            'ai_generated_at' => null,
        ]);

        return back()->with('success', 'AI yorumları temizlendi.');
    }
}
