# models.py
from django.db import models
from django.utils import timezone

class WhatsAppMessage(models.Model):
    STATUS_CHOICES = [
        ('pending', 'pending'),
        ('processing', 'processing'),
        ('sent', 'sent'),
        ('failed', 'failed'),
    ]
    PRIORITY_CHOICES = [
        (1, 'low'),
        (2, 'medium'),
        (3, 'lot'),
        (4, 'immediate'),
    ]
    
    phone = models.CharField(max_length=20)
    message = models.TextField()
    status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending')
    priority = models.IntegerField(choices=PRIORITY_CHOICES, default=2)
    
    # ردیابی و گزارش
    sender_module = models.CharField(max_length=50, default='unknown')
    reference_id = models.CharField(max_length=100, null=True, blank=True)
    
    # زمان‌بندی
    created_at = models.DateTimeField(auto_now_add=True)
    scheduled_at = models.DateTimeField(null=True, blank=True)
    sent_at = models.DateTimeField(null=True, blank=True)
    
    # خطا و retry
    error_message = models.TextField(null=True, blank=True)
    retry_count = models.IntegerField(default=0)
    max_retry = models.IntegerField(default=3)
    
    class Meta:
        ordering = ['-priority', 'created_at']
        indexes = [
            models.Index(fields=['status', 'priority']),
            models.Index(fields=['created_at']),
        ]
    
    def __str__(self):
        return f"{self.phone} - {self.sender_module} - {self.status}"