from django.db import models
from users.models import *

# Create your models here.

class NotificationTypes(models.Model):
    title         = models.CharField(max_length=255)
    key           = models.CharField(max_length=255, null=True,blank=True)
    date_added    = models.DateTimeField(default=timezone.now)
    last_updated  = models.DateTimeField(default=timezone.now)

    class Meta:
        db_table     = 'public\".\"notification_types'

class NotificationSubscribers(models.Model):
    type                 = models.ForeignKey(NotificationTypes, on_delete=models.CASCADE, related_name='notification_types',null=False, blank=False)
    user                 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_notification',null=False, blank=False)
    is_subscribed        = models.BooleanField(null=False, blank=False, default=False)
    sub_added_by         = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_sub_added_by', blank=False, null=False)
    sub_last_updated_by  = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_sub_last_updated_by', blank=False, null=False)
    date_added           = models.DateTimeField(default=timezone.now)
    last_updated         = models.DateTimeField(default=timezone.now)

    class Meta:
        db_table     = 'public\".\"notifications_subscribers'

class Notifications(models.Model):
    message         = models.TextField(null=False, blank=False)
    heading         = models.CharField(max_length=100,blank=False, null=True)
    date_added      = models.DateTimeField(default=timezone.now)
    last_updated    = models.DateTimeField(default=timezone.now)
    branch          = models.ForeignKey(OrganisationBranch, on_delete=models.CASCADE, related_name='org_branch_notification')
    branch_name     = models.CharField(max_length=100,blank=False, null=True)
    added_by        = models.ForeignKey(User, on_delete=models.CASCADE, related_name='notification_added_by', blank=True, null=True)
    last_updated_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='notification_updated_by', blank=True, null=True)

    class Meta:
        db_table     = 'public\".\"notifications'

class UserNotifications(models.Model):
    MESSAGE_STATUS = (
        ('read','Read'),
        ('un-read','Un Read'),
    )
    subscriber   = models.ForeignKey(NotificationSubscribers, on_delete=models.CASCADE, related_name='notification_subscriber',null=False, blank=False)
    notification = models.ForeignKey(Notifications,on_delete=models.CASCADE, related_name='user_notification',null=False, blank=False)
    status       = models.CharField(max_length=255, choices=MESSAGE_STATUS,default='un-read')
    date_added   = models.DateTimeField(default=timezone.now)
    last_updated = models.DateTimeField(default=timezone.now)

    class Meta:
        db_table     = 'public\".\"user_notifications'



     
