from django.db import models
from django.contrib.auth.models import User
class Inquiry(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
name = models.CharField(max_length=255)
email = models.EmailField()
subject = models.CharField(max_length=255)
message = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Inquiry from {self.name} - {self.subject}"
class LiveChat(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
admin_user = models.ForeignKey(User, related_name='admin_chats', null=True, blank=True, on_delete=models.SET_NULL)
active = models.BooleanField(default=True)
last_message = models.DateTimeField(auto_now=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Live Chat with {self.user.username}"
def get_last_message(self):
last_message = self.messages.order_by('-timestamp').first()
return last_message.message if last_message else "No messages yet"
class ChatMessage(models.Model):
chat = models.ForeignKey(LiveChat, related_name='messages', on_delete=models.CASCADE)
sender = models.ForeignKey(User, on_delete=models.CASCADE)
message = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
is_read = models.BooleanField(default=False)
def __str__(self):
return f"Message from {self.sender.username} at {self.timestamp}"
def mark_as_read(self):
self.is_read = True
self.save()
class Notification(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='notifications', default=1)
chat = models.ForeignKey(LiveChat, on_delete=models.CASCADE, related_name='notifications', null=True, blank=True)
message = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
read = models.BooleanField(default=False)
def __str__(self):
return self.message
def mark_as_read(self):
self.read = True
self.save()