from django.db import models


class ContactEnquiry(models.Model):
    CATEGORY_GENERAL     = 'general'
    CATEGORY_SALES       = 'sales'
    CATEGORY_SUPPORT     = 'support'
    CATEGORY_PARTNERSHIP = 'partnership'
    CATEGORY_CAREERS     = 'careers'

    CATEGORY_CHOICES = [
        (CATEGORY_GENERAL,     'General Enquiry'),
        (CATEGORY_SALES,       'Sales'),
        (CATEGORY_SUPPORT,     'Support'),
        (CATEGORY_PARTNERSHIP, 'Partnership'),
        (CATEGORY_CAREERS,     'Careers'),
    ]

    tenant    = models.ForeignKey(
        'tenants.Tenant', on_delete=models.CASCADE,
        null=True, blank=True, related_name='contact_enquiries'
    )
    name      = models.CharField(max_length=150)
    email     = models.EmailField()
    phone     = models.CharField(max_length=30, blank=True)
    company   = models.CharField(max_length=150, blank=True)
    category  = models.CharField(max_length=30, choices=CATEGORY_CHOICES, default=CATEGORY_GENERAL)
    subject   = models.CharField(max_length=300)
    message   = models.TextField()
    recaptcha_score = models.FloatField(null=True, blank=True)
    ip_address = models.GenericIPAddressField(null=True, blank=True)
    ticket    = models.OneToOneField(
        'tickets.Ticket', on_delete=models.SET_NULL, null=True, blank=True,
        related_name='contact_enquiry'
    )
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-created_at']
        verbose_name = 'Contact Enquiry'
        verbose_name_plural = 'Contact Enquiries'

    def __str__(self):
        return f'{self.name} — {self.subject}'
