from django.core.management.base import BaseCommand
from core.models import GameProject
from core.views import generate_game_script
from core.pexels import fetch_first
import time

class Command(BaseCommand):
    help = 'Atualiza todos os jogos existentes usando IA para gerar script, história e banners.'

    def handle(self, *args, **options):
        games = GameProject.objects.all()
        total = games.count()
        self.stdout.write(self.style.SUCCESS(f'Iniciando atualização de {total} jogos...'))

        for i, game in enumerate(games):
            self.stdout.write(f'[{i+1}/{total}] Atualizando: {game.title}')
            
            # 1. Gerar Script e História via IA
            # O prompt original do jogo é usado como base
            new_script = generate_game_script(game.title, game.prompt, game.genre)
            if new_script:
                game.script_code = new_script
                # Se o prompt estiver vazio, podemos pedir para a IA gerar uma descrição/história também
                # Mas o generate_game_script já coloca a história no código HTML.
                # Vamos garantir que o is_active esteja True
                game.is_active = True
                self.stdout.write(self.style.SUCCESS(f'  - Script gerado com sucesso.'))
            else:
                self.stdout.write(self.style.ERROR(f'  - Erro ao gerar script.'))

            # 2. Gerar Banner via Pexels (IA baseada no título)
            if not game.image_reference or "pexels" not in str(game.image_reference):
                pexels_data = fetch_first(f"{game.title} game wallpaper background")
                if pexels_data:
                    game.image_reference = pexels_data['local_path'].replace('media/', '')
                    self.stdout.write(self.style.SUCCESS(f'  - Banner gerado: {game.image_reference}'))
                else:
                    self.stdout.write(self.style.WARNING(f'  - Não foi possível gerar banner.'))
            
            game.save()
            # Pequeno delay para evitar hitting limits se houver muitos
            time.sleep(1)

        self.stdout.write(self.style.SUCCESS('Todos os jogos foram atualizados, ativados e integrados com IA!'))
