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()