# -*- coding: utf-8 -*-
"""
Сервис для работы со складами.
"""
from inventory.models import Warehouse


class WarehouseService:
    """Сервис управления складами"""

    # Константы для склада по умолчанию
    DEFAULT_NAME = 'Основной склад'
    DEFAULT_DESCRIPTION = 'Склад по умолчанию, созданный автоматически при регистрации'

    @classmethod
    def get_default(cls) -> Warehouse | None:
        """
        Получить склад по умолчанию.

        Returns:
            Warehouse или None если не найден
        """
        return Warehouse.objects.filter(is_default=True, is_active=True).first()

    @classmethod
    def get_or_create_default(cls) -> tuple[Warehouse, bool]:
        """
        Получить или создать склад по умолчанию.

        Returns:
            tuple (Warehouse, created: bool)
        """
        return Warehouse.objects.get_or_create(
            is_default=True,
            defaults={
                'name': cls.DEFAULT_NAME,
                'description': cls.DEFAULT_DESCRIPTION,
                'is_active': True,
                'is_pickup_point': True,
            }
        )

    @classmethod
    def reset_default(cls) -> Warehouse:
        """
        Удалить и пересоздать склад по умолчанию.
        Используется при --reset в init_tenant_data.

        Returns:
            Новый Warehouse
        """
        Warehouse.objects.filter(is_default=True).delete()
        warehouse, _ = cls.get_or_create_default()
        return warehouse
