"""
Команда для инициализации уровней реферальной программы.
"""
from django.core.management.base import BaseCommand
from apps.referrals.models import ReferralLevel


class Command(BaseCommand):
    """Создать начальные уровни реферальной программы."""
    
    help = 'Создать начальные уровни реферальной программы'
    
    def handle(self, *args, **options):
        levels_data = [
            {
                'level': 1,
                'name': 'Новичок',
                'points_required': 0,
                'bonus_payment_percent': 60,
                'icon': '🌱'
            },
            {
                'level': 2,
                'name': 'Активный',
                'points_required': 50,
                'bonus_payment_percent': 70,
                'icon': '🌿'
            },
            {
                'level': 3,
                'name': 'Продвинутый',
                'points_required': 110,  # 50 + 60
                'bonus_payment_percent': 80,
                'icon': '🌳'
            },
            {
                'level': 4,
                'name': 'Эксперт',
                'points_required': 180,  # 50 + 60 + 70
                'bonus_payment_percent': 90,
                'icon': '⭐'
            },
            {
                'level': 5,
                'name': 'Мастер',
                'points_required': 270,  # 50 + 60 + 70 + 90
                'bonus_payment_percent': 95,
                'icon': '👑'
            },
        ]
        
        created_count = 0
        updated_count = 0
        
        for data in levels_data:
            level, created = ReferralLevel.objects.update_or_create(
                level=data['level'],
                defaults={
                    'name': data['name'],
                    'points_required': data['points_required'],
                    'bonus_payment_percent': data['bonus_payment_percent'],
                    'icon': data['icon']
                }
            )
            
            if created:
                created_count += 1
                self.stdout.write(
                    self.style.SUCCESS(
                        f'✅ Создан уровень {level.level}: {level.name}'
                    )
                )
            else:
                updated_count += 1
                self.stdout.write(
                    self.style.WARNING(
                        f'🔄 Обновлен уровень {level.level}: {level.name}'
                    )
                )
        
        self.stdout.write(
            self.style.SUCCESS(
                f'\n✅ Готово! Создано: {created_count}, Обновлено: {updated_count}'
            )
        )

