from django.db import models

# Create your models here.
from django.contrib.auth import get_user_model
User = get_user_model()

class NotificationType(models.Model):
    key = models.CharField(max_length=50, unique=True)  # e.g. recharge_success
    label = models.CharField(max_length=100)
    enabled_inapp = models.BooleanField(default=True)
    enabled_email = models.BooleanField(default=True)
    enabled_sms = models.BooleanField(default=False)
    enabled_whatsapp = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)

    email_template = models.CharField(max_length=255, null=True, blank=True)
    sms_template = models.CharField(max_length=255, null=True, blank=True)
    whatsapp_template = models.CharField(max_length=255, null=True, blank=True)

    def __str__(self):
        return self.label

class UserNotificationPreference(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    notification_type = models.ForeignKey(NotificationType, on_delete=models.CASCADE)
    inapp = models.BooleanField(default=True)
    email = models.BooleanField(default=True)
    sms = models.BooleanField(default=True)
    whatsapp = models.BooleanField(default=True)

    class Meta:
        unique_together = ('user', 'notification_type')


class Notification(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    type = models.ForeignKey(NotificationType, on_delete=models.SET_NULL, null=True)
    message = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    is_read = models.BooleanField(default=False)

    def __str__(self):
        name = self.user.first_name or self.user.mobile_number or self.user.email or "User"
        return f"{name} - {self.type.key}"
