from django.db import models
from django.contrib.auth.models import User

class Notification(models.Model):
    TYPE_CHOICES = [
        ('info', 'Informativo'),
        ('alert', 'Alerta'),
        ('error', 'Atenção'),
    ]

    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='notifications')
    message = models.TextField()
    notification_type = models.CharField(max_length=10, choices=TYPE_CHOICES, default='info')
    is_read = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    recipient = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
    sender = models.ForeignKey(User, related_name='sent_notifications', null=True, blank=True, on_delete=models.SET_NULL)
    send_to_all = models.BooleanField(default=False)

    def __str__(self):
        return self.message

    @property
    def icon(self):
        return {
            'info': 'fa-info-circle text-info',
            'alert': 'fa-exclamation-circle text-warning',
            'error': 'fa-times-circle text-danger'
        }.get(self.notification_type, 'fa-info-circle')
    
    @property
    def css_class(self):
        return {
            'info': 'notification-info',
            'alert': 'notification-alert',
            'error': 'notification-error'
        }.get(self.notification_type, '')
