from django.db import models

from accounts.models import Workspace


class TimestampedModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True


class Campaign(TimestampedModel):
    STATUS_CHOICES = [
        ("draft", "Draft"),
        ("scheduled", "Scheduled"),
        ("sent", "Sent"),
    ]
    CHANNEL_CHOICES = [
        ("announcement", "Announcement"),
        ("email", "Email"),
    ]

    workspace = models.ForeignKey(Workspace, on_delete=models.CASCADE, related_name="campaigns")
    name = models.CharField(max_length=200)
    status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="draft")
    channel = models.CharField(max_length=20, choices=CHANNEL_CHOICES, default="announcement")
    send_at = models.DateTimeField(null=True, blank=True)

    def __str__(self) -> str:
        return self.name
