"""
Команда для создания скидок за длительность для ежемесячных тарифов.
"""
from django.core.management.base import BaseCommand
from apps.subscriptions.models import SubscriptionPlan, DurationDiscount
from decimal import Decimal


class Command(BaseCommand):
    help = 'Создает скидки за длительность для ежемесячных тарифов'

    def handle(self, *args, **options):
        self.stdout.write('Создание скидок за длительность...')
        
        # Получаем все ежемесячные тарифы
        monthly_plans = SubscriptionPlan.objects.filter(
            subscription_type='monthly',
            is_active=True
        )
        
        if not monthly_plans.exists():
            self.stdout.write(self.style.WARNING('Не найдено активных ежемесячных тарифов'))
            return
        
        # Стандартные скидки
        discounts_data = [
            {'duration_days': 90, 'discount_percent': Decimal('7.00')},   # 3 месяца - 7%
            {'duration_days': 180, 'discount_percent': Decimal('12.00')},  # 6 месяцев - 12%
            {'duration_days': 365, 'discount_percent': Decimal('18.00')},  # 12 месяцев - 18%
        ]
        
        created_count = 0
        updated_count = 0
        
        for plan in monthly_plans:
            self.stdout.write(f'\nТариф: {plan.name}')
            
            for discount_data in discounts_data:
                discount, created = DurationDiscount.objects.update_or_create(
                    plan=plan,
                    duration_days=discount_data['duration_days'],
                    defaults={
                        'discount_percent': discount_data['discount_percent']
                    }
                )
                
                if created:
                    created_count += 1
                    self.stdout.write(
                        self.style.SUCCESS(
                            f'  ✓ Создана скидка: {discount_data["duration_days"]} дней ({discount_data["duration_days"]/30:.0f} мес) - {discount_data["discount_percent"]}%'
                        )
                    )
                else:
                    updated_count += 1
                    self.stdout.write(
                        self.style.WARNING(
                            f'  ⚠ Обновлена скидка: {discount_data["duration_days"]} дней ({discount_data["duration_days"]/30:.0f} мес) - {discount_data["discount_percent"]}%'
                        )
                    )
        
        self.stdout.write(self.style.SUCCESS(f'\n✓ Готово! Создано: {created_count}, Обновлено: {updated_count}'))

