nexus-5/core/models/enums.py
2026-01-26 11:09:40 -05:00

270 lines
13 KiB
Python

from django.db import models
class StatusChoices(models.TextChoices):
"""Status choices for a Customer, Account, or a future model"""
ACTIVE = 'ACTIVE', 'Active'
INACTIVE = 'INACTIVE', 'Inactive'
PENDING = 'PENDING', 'Pending'
class ServiceChoices(models.TextChoices):
"""Status choices for a service workflow"""
SCHEDULED = 'SCHEDULED', 'Scheduled'
IN_PROGRESS = 'IN_PROGRESS', 'In Progress'
COMPLETED = 'COMPLETED', 'Completed'
CANCELLED = 'CANCELLED', 'Cancelled'
class AddressChoices(models.TextChoices):
"""Address choices for a customer"""
BILLING = 'BILLING', 'Billing'
SHIPPING = 'SHIPPING', 'Shipping'
OFFICE = 'OFFICE', 'Office Location'
OTHER = 'OTHER', 'Other Address'
class InvoiceChoices(models.TextChoices):
"""Status choices for an invoice"""
DRAFT = 'DRAFT', 'Draft'
SENT = 'SENT', 'Sent'
PAID = 'PAID', 'Paid'
OVERDUE = 'OVERDUE', 'Overdue'
CANCELLED = 'CANCELLED', 'Cancelled'
class PaymentChoices(models.TextChoices):
"""Payment choices for a transaction"""
CHECK = 'CHECK', 'Check'
CREDIT_CARD = 'CREDIT_CARD', 'Credit Card'
BANK_TRANSFER = 'BANK_TRANSFER', 'Bank Transfer'
CASH = 'CASH', 'Cash'
class TaskFrequencyChoices(models.TextChoices):
DAILY = 'daily', 'Daily'
WEEKLY = 'weekly', 'Weekly'
MONTHLY = 'monthly', 'Monthly'
QUARTERLY = 'quarterly', 'Quarterly'
TRIANNUAL = 'triannual', 'Tri-annual'
ANNUAL = 'annual', 'Annual'
AS_NEEDED = 'as_needed', 'As Needed'
class RoleChoices(models.TextChoices):
"""Role choices for a user"""
ADMIN = 'ADMIN', 'Admin'
TEAM_LEADER = 'TEAM_LEADER', 'Team Leader'
TEAM_MEMBER = 'TEAM_MEMBER', 'Team Member'
class EventTypeChoices(models.TextChoices):
"""Event types for the event management system"""
# Customer events
CUSTOMER_CREATED = 'CUSTOMER_CREATED', 'Customer Created'
CUSTOMER_UPDATED = 'CUSTOMER_UPDATED', 'Customer Updated'
CUSTOMER_DELETED = 'CUSTOMER_DELETED', 'Customer Deleted'
CUSTOMER_STATUS_CHANGED = 'CUSTOMER_STATUS_CHANGED', 'Customer Status Changed'
CUSTOMER_ADDRESS_CREATED = 'CUSTOMER_ADDRESS_CREATED', 'Customer Address Created'
CUSTOMER_ADDRESS_UPDATED = 'CUSTOMER_ADDRESS_UPDATED', 'Customer Address Updated'
CUSTOMER_ADDRESS_DELETED = 'CUSTOMER_ADDRESS_DELETED', 'Customer Address Deleted'
CUSTOMER_CONTACT_CREATED = 'CUSTOMER_CONTACT_CREATED', 'Customer Contact Created'
CUSTOMER_CONTACT_UPDATED = 'CUSTOMER_CONTACT_UPDATED', 'Customer Contact Updated'
CUSTOMER_CONTACT_DELETED = 'CUSTOMER_CONTACT_DELETED', 'Customer Contact Deleted'
# Account events
ACCOUNT_CREATED = 'ACCOUNT_CREATED', 'Account Created'
ACCOUNT_UPDATED = 'ACCOUNT_UPDATED', 'Account Updated'
ACCOUNT_DELETED = 'ACCOUNT_DELETED', 'Account Deleted'
ACCOUNT_STATUS_CHANGED = 'ACCOUNT_STATUS_CHANGED', 'Account Status Changed'
ACCOUNT_ADDRESS_CREATED = 'ACCOUNT_ADDRESS_CREATED', 'Account Address Created'
ACCOUNT_ADDRESS_UPDATED = 'ACCOUNT_ADDRESS_UPDATED', 'Account Address Updated'
ACCOUNT_ADDRESS_DELETED = 'ACCOUNT_ADDRESS_DELETED', 'Account Address Deleted'
ACCOUNT_CONTACT_CREATED = 'ACCOUNT_CONTACT_CREATED', 'Account Contact Created'
ACCOUNT_CONTACT_UPDATED = 'ACCOUNT_CONTACT_UPDATED', 'Account Contact Updated'
ACCOUNT_CONTACT_DELETED = 'ACCOUNT_CONTACT_DELETED', 'Account Contact Deleted'
# Service events
SERVICE_CREATED = 'SERVICE_CREATED', 'Service Created'
SERVICE_UPDATED = 'SERVICE_UPDATED', 'Service Updated'
SERVICE_DELETED = 'SERVICE_DELETED', 'Service Deleted'
SERVICE_STATUS_CHANGED = 'SERVICE_STATUS_CHANGED', 'Service Status Changed'
SERVICE_COMPLETED = 'SERVICE_COMPLETED', 'Service Completed'
SERVICE_CANCELLED = 'SERVICE_CANCELLED', 'Service Cancelled'
SERVICE_TEAM_ASSIGNED = 'SERVICE_TEAM_ASSIGNED', 'Team Assigned to Service'
SERVICE_TEAM_UNASSIGNED = 'SERVICE_TEAM_UNASSIGNED', 'Team Unassigned from Service'
SERVICE_DISPATCHED = 'SERVICE_DISPATCHED', 'Service Dispatched'
SERVICES_BULK_GENERATED = 'SERVICES_BULK_GENERATED', 'Services Bulk Generated'
# Service session events
SERVICE_SESSION_OPENED = 'SERVICE_SESSION_OPENED', 'Service Session Opened'
SERVICE_SESSION_CLOSED = 'SERVICE_SESSION_CLOSED', 'Service Session Closed'
SERVICE_SESSION_REVERTED = 'SERVICE_SESSION_REVERTED', 'Service Session Reverted'
SERVICE_TASK_COMPLETED = 'SERVICE_TASK_COMPLETED', 'Service Task Completed'
SERVICE_TASK_UNCOMPLETED = 'SERVICE_TASK_UNCOMPLETED', 'Service Task Uncompleted'
# Schedule events
SCHEDULE_CREATED = 'SCHEDULE_CREATED', 'Schedule Created'
SCHEDULE_UPDATED = 'SCHEDULE_UPDATED', 'Schedule Updated'
SCHEDULE_DELETED = 'SCHEDULE_DELETED', 'Schedule Deleted'
SCHEDULE_FREQUENCY_CHANGED = 'SCHEDULE_FREQUENCY_CHANGED', 'Schedule Frequency Changed'
# Project events
PROJECT_CREATED = 'PROJECT_CREATED', 'Project Created'
PROJECT_UPDATED = 'PROJECT_UPDATED', 'Project Updated'
PROJECT_STATUS_CHANGED = 'PROJECT_STATUS_CHANGED', 'Project Status Changed'
PROJECT_COMPLETED = 'PROJECT_COMPLETED', 'Project Completed'
PROJECT_CANCELLED = 'PROJECT_CANCELLED', 'Project Cancelled'
PROJECT_DISPATCHED = 'PROJECT_DISPATCHED', 'Project Dispatched'
PROJECT_DELETED = 'PROJECT_DELETED', 'Project Deleted'
# Project session events
PROJECT_SESSION_OPENED = 'PROJECT_SESSION_OPENED', 'Project Session Opened'
PROJECT_SESSION_CLOSED = 'PROJECT_SESSION_CLOSED', 'Project Session Closed'
PROJECT_SESSION_REVERTED = 'PROJECT_SESSION_REVERTED', 'Project Session Reverted'
PROJECT_TASK_COMPLETED = 'PROJECT_TASK_COMPLETED', 'Project Task Completed'
PROJECT_TASK_UNCOMPLETED = 'PROJECT_TASK_UNCOMPLETED', 'Project Task Uncompleted'
# Project scope events
PROJECT_SCOPE_CREATED = 'PROJECT_SCOPE_CREATED', 'Project Scope Created'
PROJECT_SCOPE_UPDATED = 'PROJECT_SCOPE_UPDATED', 'Project Scope Updated'
PROJECT_SCOPE_DELETED = 'PROJECT_SCOPE_DELETED', 'Project Scope Deleted'
PROJECT_SCOPE_CATEGORY_CREATED = 'PROJECT_SCOPE_CATEGORY_CREATED', 'Project Scope Category Created'
PROJECT_SCOPE_CATEGORY_UPDATED = 'PROJECT_SCOPE_CATEGORY_UPDATED', 'Project Scope Category Updated'
PROJECT_SCOPE_CATEGORY_DELETED = 'PROJECT_SCOPE_CATEGORY_DELETED', 'Project Scope Category Deleted'
PROJECT_SCOPE_TASK_CREATED = 'PROJECT_SCOPE_TASK_CREATED', 'Project Scope Task Created'
PROJECT_SCOPE_TASK_UPDATED = 'PROJECT_SCOPE_TASK_UPDATED', 'Project Scope Task Updated'
PROJECT_SCOPE_TASK_DELETED = 'PROJECT_SCOPE_TASK_DELETED', 'Project Scope Task Deleted'
PROJECT_SCOPE_TEMPLATE_INSTANTIATED = 'PROJECT_SCOPE_TEMPLATE_INSTANTIATED', 'Project Scope Template Instantiated'
# Scope events
SCOPE_CREATED = 'SCOPE_CREATED', 'Scope Created'
SCOPE_UPDATED = 'SCOPE_UPDATED', 'Scope Updated'
SCOPE_DELETED = 'SCOPE_DELETED', 'Scope Deleted'
AREA_CREATED = 'AREA_CREATED', 'Area Created'
AREA_UPDATED = 'AREA_UPDATED', 'Area Updated'
AREA_DELETED = 'AREA_DELETED', 'Area Deleted'
TASK_CREATED = 'TASK_CREATED', 'Task Created'
TASK_UPDATED = 'TASK_UPDATED', 'Task Updated'
TASK_DELETED = 'TASK_DELETED', 'Task Deleted'
TASK_COMPLETION_RECORDED = 'TASK_COMPLETION_RECORDED', 'Task Completion Recorded'
# Scope template events
SCOPE_TEMPLATE_CREATED = 'SCOPE_TEMPLATE_CREATED', 'Scope Template Created'
SCOPE_TEMPLATE_UPDATED = 'SCOPE_TEMPLATE_UPDATED', 'Scope Template Updated'
SCOPE_TEMPLATE_DELETED = 'SCOPE_TEMPLATE_DELETED', 'Scope Template Deleted'
SCOPE_TEMPLATE_INSTANTIATED = 'SCOPE_TEMPLATE_INSTANTIATED', 'Scope Template Instantiated'
AREA_TEMPLATE_CREATED = 'AREA_TEMPLATE_CREATED', 'Area Template Created'
AREA_TEMPLATE_UPDATED = 'AREA_TEMPLATE_UPDATED', 'Area Template Updated'
AREA_TEMPLATE_DELETED = 'AREA_TEMPLATE_DELETED', 'Area Template Deleted'
TASK_TEMPLATE_CREATED = 'TASK_TEMPLATE_CREATED', 'Task Template Created'
TASK_TEMPLATE_UPDATED = 'TASK_TEMPLATE_UPDATED', 'Task Template Updated'
TASK_TEMPLATE_DELETED = 'TASK_TEMPLATE_DELETED', 'Task Template Deleted'
# Team profile events
TEAM_PROFILE_CREATED = 'TEAM_PROFILE_CREATED', 'Team Profile Created'
TEAM_PROFILE_UPDATED = 'TEAM_PROFILE_UPDATED', 'Team Profile Updated'
TEAM_PROFILE_DELETED = 'TEAM_PROFILE_DELETED', 'Team Profile Deleted'
TEAM_PROFILE_ROLE_CHANGED = 'TEAM_PROFILE_ROLE_CHANGED', 'Team Profile Role Changed'
# Customer profile events
CUSTOMER_PROFILE_CREATED = 'CUSTOMER_PROFILE_CREATED', 'Customer Profile Created'
CUSTOMER_PROFILE_UPDATED = 'CUSTOMER_PROFILE_UPDATED', 'Customer Profile Updated'
CUSTOMER_PROFILE_DELETED = 'CUSTOMER_PROFILE_DELETED', 'Customer Profile Deleted'
CUSTOMER_PROFILE_ACCESS_GRANTED = 'CUSTOMER_PROFILE_ACCESS_GRANTED', 'Customer Profile Access Granted'
CUSTOMER_PROFILE_ACCESS_REVOKED = 'CUSTOMER_PROFILE_ACCESS_REVOKED', 'Customer Profile Access Revoked'
# Punchlist events
ACCOUNT_PUNCHLIST_CREATED = 'ACCOUNT_PUNCHLIST_CREATED', 'Account Punchlist Created'
ACCOUNT_PUNCHLIST_UPDATED = 'ACCOUNT_PUNCHLIST_UPDATED', 'Account Punchlist Updated'
ACCOUNT_PUNCHLIST_DELETED = 'ACCOUNT_PUNCHLIST_DELETED', 'Account Punchlist Deleted'
PROJECT_PUNCHLIST_CREATED = 'PROJECT_PUNCHLIST_CREATED', 'Project Punchlist Created'
PROJECT_PUNCHLIST_UPDATED = 'PROJECT_PUNCHLIST_UPDATED', 'Project Punchlist Updated'
PROJECT_PUNCHLIST_DELETED = 'PROJECT_PUNCHLIST_DELETED', 'Project Punchlist Deleted'
PUNCHLIST_STATUS_CHANGED = 'PUNCHLIST_STATUS_CHANGED', 'Punchlist Status Changed'
PUNCHLIST_PRIORITY_CHANGED = 'PUNCHLIST_PRIORITY_CHANGED', 'Punchlist Priority Changed'
# Session media events
SESSION_IMAGE_UPLOADED = 'SESSION_IMAGE_UPLOADED', 'Session Image Uploaded'
SESSION_IMAGE_UPDATED = 'SESSION_IMAGE_UPDATED', 'Session Image Updated'
SESSION_IMAGE_DELETED = 'SESSION_IMAGE_DELETED', 'Session Image Deleted'
SESSION_VIDEO_UPLOADED = 'SESSION_VIDEO_UPLOADED', 'Session Video Uploaded'
SESSION_VIDEO_UPDATED = 'SESSION_VIDEO_UPDATED', 'Session Video Updated'
SESSION_VIDEO_DELETED = 'SESSION_VIDEO_DELETED', 'Session Video Deleted'
SESSION_MEDIA_INTERNAL_FLAGGED = 'SESSION_MEDIA_INTERNAL_FLAGGED', 'Session Media Flagged as Internal'
# Session notes events
SESSION_NOTE_CREATED = 'SESSION_NOTE_CREATED', 'Session Note Created'
SESSION_NOTE_UPDATED = 'SESSION_NOTE_UPDATED', 'Session Note Updated'
SESSION_NOTE_DELETED = 'SESSION_NOTE_DELETED', 'Session Note Deleted'
# Report events
REPORT_CREATED = 'REPORT_CREATED', 'Report Created'
REPORT_UPDATED = 'REPORT_UPDATED', 'Report Updated'
REPORT_DELETED = 'REPORT_DELETED', 'Report Deleted'
REPORT_SUBMITTED = 'REPORT_SUBMITTED', 'Report Submitted'
REPORT_APPROVED = 'REPORT_APPROVED', 'Report Approved'
# Invoice events
INVOICE_GENERATED = 'INVOICE_GENERATED', 'Invoice Generated'
INVOICE_SENT = 'INVOICE_SENT', 'Invoice Sent'
INVOICE_PAID = 'INVOICE_PAID', 'Invoice Paid'
INVOICE_OVERDUE = 'INVOICE_OVERDUE', 'Invoice Overdue'
INVOICE_CANCELLED = 'INVOICE_CANCELLED', 'Invoice Cancelled'
# Labor & Revenue events
LABOR_RATE_CREATED = 'LABOR_RATE_CREATED', 'Labor Rate Created'
LABOR_RATE_UPDATED = 'LABOR_RATE_UPDATED', 'Labor Rate Updated'
LABOR_RATE_DELETED = 'LABOR_RATE_DELETED', 'Labor Rate Deleted'
REVENUE_RATE_CREATED = 'REVENUE_RATE_CREATED', 'Revenue Rate Created'
REVENUE_RATE_UPDATED = 'REVENUE_RATE_UPDATED', 'Revenue Rate Updated'
REVENUE_RATE_DELETED = 'REVENUE_RATE_DELETED', 'Revenue Rate Deleted'
# Messaging events
CONVERSATION_CREATED = 'CONVERSATION_CREATED', 'Conversation Created'
CONVERSATION_ARCHIVED = 'CONVERSATION_ARCHIVED', 'Conversation Archived'
CONVERSATION_PARTICIPANT_ADDED = 'CONVERSATION_PARTICIPANT_ADDED', 'Participant Added to Conversation'
CONVERSATION_PARTICIPANT_REMOVED = 'CONVERSATION_PARTICIPANT_REMOVED', 'Participant Removed from Conversation'
MESSAGE_SENT = 'MESSAGE_SENT', 'Message Sent'
MESSAGE_RECEIVED = 'MESSAGE_RECEIVED', 'Message Received'
MESSAGE_READ = 'MESSAGE_READ', 'Message Read'
MESSAGE_DELETED = 'MESSAGE_DELETED', 'Message Deleted'
# Monitoring events (audit trail)
MONITORING_INCOMPLETE_WORK_REMINDER = 'MONITORING_INCOMPLETE_WORK_REMINDER', 'Incomplete Work Reminder Sent'
MONITORING_NIGHTLY_ASSIGNMENTS = 'MONITORING_NIGHTLY_ASSIGNMENTS', 'Nightly Assignments Sent'
MONITORING_COMMAND_EXECUTED = 'MONITORING_COMMAND_EXECUTED', 'Monitoring Command Executed'
class NotificationChannelChoices(models.TextChoices):
"""Delivery channels for notifications"""
IN_APP = 'IN_APP', 'In-App'
EMAIL = 'EMAIL', 'Email'
SMS = 'SMS', 'SMS'
class NotificationStatusChoices(models.TextChoices):
"""Status choices for notifications"""
PENDING = 'PENDING', 'Pending'
SENT = 'SENT', 'Sent'
READ = 'READ', 'Read'
FAILED = 'FAILED', 'Failed'
class DeliveryStatusChoices(models.TextChoices):
"""Status choices for notification delivery attempts"""
PENDING = 'PENDING', 'Pending'
QUEUED = 'QUEUED', 'Queued'
SENDING = 'SENDING', 'Sending'
SENT = 'SENT', 'Sent'
DELIVERED = 'DELIVERED', 'Delivered'
FAILED = 'FAILED', 'Failed'
BOUNCED = 'BOUNCED', 'Bounced'
class ConversationTypeChoices(models.TextChoices):
"""Type of conversation"""
DIRECT = 'DIRECT', 'Direct Message'
GROUP = 'GROUP', 'Group Conversation'
SUPPORT = 'SUPPORT', 'Support Ticket'