# -*- coding: utf-8 -*-
"""
Management команда для инициализации всех системных данных тенанта.

Создаёт:
- Системного клиента (анонимный покупатель для POS)
- Системные статусы заказов
- Системные способы оплаты
- Склад по умолчанию
- Витрину по умолчанию
- Единицы измерения

Использование:
    # Инициализация для конкретного тенанта
    python manage.py init_tenant_data --schema=anatol

    # С флагом --reset для пересоздания данных
    python manage.py init_tenant_data --schema=anatol --reset
"""
from django.core.management.base import BaseCommand
from django_tenants.utils import get_tenant_model, schema_context


class Command(BaseCommand):
    help = 'Инициализация всех системных данных тенанта (клиент, статусы, способы оплаты, склад, витрина, единицы измерения)'

    def add_arguments(self, parser):
        parser.add_argument(
            '--schema',
            type=str,
            required=True,
            help='Имя схемы БД тенанта (пример: anatol)'
        )
        parser.add_argument(
            '--reset',
            action='store_true',
            help='Удалить и пересоздать все системные данные'
        )

    def handle(self, *args, **options):
        schema_name = options.get('schema')
        reset = options.get('reset', False)

        # Проверяем что тенант существует
        Tenant = get_tenant_model()
        try:
            tenant = Tenant.objects.get(schema_name=schema_name)
        except Tenant.DoesNotExist:
            self.stdout.write(self.style.ERROR(f'\nОШИБКА: Тенант со схемой "{schema_name}" не найден\n'))
            return

        self.stdout.write(self.style.SUCCESS('\n=== Инициализация системных данных тенанта ===\n'))
        self.stdout.write(f'Тенант: {tenant.name} ({schema_name})')
        if reset:
            self.stdout.write(self.style.WARNING('Режим: RESET (пересоздание данных)\n'))
        else:
            self.stdout.write('')

        # Переключаемся на схему тенанта и вызываем сервис
        with schema_context(schema_name):
            from tenants.services import TenantOnboardingService
            TenantOnboardingService.init_tenant_data(reset=reset)

        # Итоговое сообщение
        self.stdout.write('\n' + '='*70)
        self.stdout.write(self.style.SUCCESS('УСПЕХ: Инициализация системных данных завершена!'))
        self.stdout.write('='*70)
        self.stdout.write('\nТенант готов к работе.\n')
