from django.db import models
from phonenumber_field.modelfields import PhoneNumberField


class Recipient(models.Model):
    """
    Модель получателя заказа.
    Один получатель может получать доставки по разным адресам.
    """
    name = models.CharField(
        max_length=200,
        verbose_name="Имя получателя",
        help_text="ФИО или название организации получателя"
    )

    phone = PhoneNumberField(
        region=None,
        verbose_name="Телефон получателя",
        help_text="Контактный телефон для связи с получателем. Введите в любом формате, будет автоматически преобразован"
    )

    notes = models.CharField(
        max_length=200,
        blank=True,
        null=True,
        verbose_name="Дополнительная информация",
        help_text="Мессенджер, соцсеть или другая информация о получателе (необязательно)"
    )

    # Временные метки
    created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания")
    updated_at = models.DateTimeField(auto_now=True, verbose_name="Дата обновления")

    class Meta:
        verbose_name = "Получатель"
        verbose_name_plural = "Получатели"
        indexes = [
            models.Index(fields=['phone']),
            models.Index(fields=['name']),
            models.Index(fields=['created_at']),
        ]
        ordering = ['-created_at']

    def __str__(self):
        return f"{self.name} ({self.phone})"

    @property
    def display_name(self):
        """Форматированное имя для отображения"""
        return f"Получатель{self.name} - {self.phone}"
