from django.db import models


class ContactMessage(models.Model):
    name = models.CharField("Nama", max_length=100)
    email = models.EmailField("Email")
    subject = models.CharField("Subjek", max_length=180, blank=True)
    message = models.TextField("Pesan")
    is_read = models.BooleanField("Sudah dibaca", default=False)
    is_starred = models.BooleanField("Penting", default=False)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ["-created_at"]
        verbose_name = "Pesan Masuk"
        verbose_name_plural = "Pesan Masuk"

    def __str__(self):
        return f"{self.name} - {self.subject or 'Tanpa subjek'}"

    @property
    def initial(self):
        return self.name[:1].upper()


class SiteSetting(models.Model):
    """Pengaturan global website. Single-row, pakai SiteSetting.get_solo()."""

    site_name = models.CharField("Nama website", max_length=120, default="Personal Web")
    site_tagline = models.CharField("Tagline", max_length=200, blank=True)
    favicon = models.ImageField("Favicon", upload_to="site/", blank=True, null=True)
    og_image = models.ImageField("Gambar share (OG)", upload_to="site/", blank=True, null=True)
    footer_text = models.CharField("Teks footer", max_length=200, blank=True)
    google_analytics_id = models.CharField("Google Analytics ID", max_length=40, blank=True)
    show_blog = models.BooleanField("Aktifkan halaman blog", default=True)
    show_projects = models.BooleanField("Aktifkan halaman proyek", default=True)

    class Meta:
        verbose_name = "Pengaturan Situs"
        verbose_name_plural = "Pengaturan Situs"

    def __str__(self):
        return self.site_name

    @classmethod
    def get_solo(cls):
        setting = cls.objects.first()
        if setting is None:
            setting = cls.objects.create()
        return setting
