37622-vm/core/models.py
Flatlogic Bot 2a479c82a7 2.2
2026-01-20 17:13:37 +00:00

67 lines
2.6 KiB
Python

from django.db import models
class Business(models.Model):
INDUSTRY_CHOICES = [
('real_estate', 'Real Estate'),
('clinic_dental', 'Clinic / Dental'),
('salon_spa', 'Salon / Spa'),
('coaching_consulting', 'Coaching / Consulting'),
('custom', 'Custom (Other)'),
]
business_name = models.CharField(max_length=255)
industry = models.CharField(max_length=50, choices=INDUSTRY_CHOICES, default='custom')
phone_number = models.CharField(max_length=20, help_text="Twilio or other provider's phone number")
agent_name = models.CharField(max_length=100, default='AI Assistant')
status = models.BooleanField(default=True, help_text="Active or inactive status")
def __str__(self):
return self.business_name
class Meta:
verbose_name_plural = "Businesses"
class Service(models.Model):
business = models.ForeignKey(Business, on_delete=models.CASCADE, related_name='services')
name = models.CharField(max_length=255)
description = models.TextField(blank=True)
duration = models.IntegerField(help_text="Duration in minutes")
price = models.DecimalField(max_digits=10, decimal_places=2)
def __str__(self):
return self.name
class Contact(models.Model):
phone_number = models.CharField(max_length=20, unique=True)
name = models.CharField(max_length=255, blank=True)
def __str__(self):
return self.name or self.phone_number
class Call(models.Model):
business = models.ForeignKey(Business, on_delete=models.CASCADE, related_name='calls')
contact = models.ForeignKey(Contact, on_delete=models.CASCADE, related_name='calls')
start_time = models.DateTimeField(auto_now_add=True)
end_time = models.DateTimeField(null=True, blank=True)
summary = models.TextField(blank=True)
transcript = models.TextField(blank=True)
conversation_history = models.JSONField(default=list)
def __str__(self):
return f"Call with {self.contact} at {self.start_time}"
class Booking(models.Model):
STATUS_CHOICES = [
('scheduled', 'Scheduled'),
('completed', 'Completed'),
('canceled', 'Canceled'),
]
service = models.ForeignKey(Service, on_delete=models.CASCADE, related_name='bookings')
contact = models.ForeignKey(Contact, on_delete=models.CASCADE, related_name='bookings')
start_time = models.DateTimeField()
end_time = models.DateTimeField()
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='scheduled')
def __str__(self):
return f"{self.service} booking for {self.contact} at {self.start_time}"