from django.db import models
from django.utils.html import linebreaks
class EmailTemplate(models.Model):
    """
    Store editable email templates in the database.
    Placeholders use the syntax ##KEY## (e.g. ##Name##, ##phone##).
    """
    name = models.SlugField(
        max_length=50,
        unique=True,
        help_text="Unique identifier, e.g. 'welcome_email'",
        default='welcome_email'
    )
    subject = models.CharField(
        max_length=150,
        default='Subject here'
    )
    body_text = models.TextField(
        blank=True,
        help_text="Plain-text; use ##PLACEHOLDERS## here",
        default='Hello ##Name##,\n\nThis is your message body.'
    )
    body_html = models.TextField(
        blank=True,
        help_text="HTML version; use ##PLACEHOLDERS## here",
        default='<p>Hello ##Name##,</p><p>This is your message body.</p>'
    )
    updated_at = models.DateTimeField(
        auto_now=True
    )
    def save(self, *args, **kwargs):
        if self.body_text and not self.body_html:
            # Converts line breaks to <br> and wraps in <p>
            self.body_html = linebreaks(self.body_text)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.name
    

class EmailLog(models.Model):
    template_name = models.CharField(max_length=255, blank=True, null=True)
    to_email = models.EmailField()
    subject = models.CharField(max_length=255)
    body_text = models.TextField()
    body_html = models.TextField(blank=True, null=True)
    status = models.CharField(max_length=10)  # 'Success' or 'Failed'
    error_message = models.TextField(blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"Email to {self.to_email} - {self.status}"