from django.db import models
from django.conf import settings
import uuid

class CreditApplication(models.Model):
    STATUS_CHOICES = [
        ('DRAFT', 'Draft'),
        ('SUBMITTED', 'Submitted'),
        ('AIP', 'Approved in Principle'),
        ('ARA', 'Accept Refer Application'),
        ('FA', 'Final Approved'),
        ('DECLINED', 'Declined'),
    ]
    
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    applicant = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='applications')
    application_number = models.CharField(max_length=20, unique=True, blank=True)
    status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='DRAFT')
    business_name = models.CharField(max_length=200)
    registration_number = models.CharField(max_length=50)
    amount_requested = models.DecimalField(max_digits=15, decimal_places=2)
    purpose_of_funding = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    
    class Meta:
        db_table = 'credit_applications'
        ordering = ['-created_at']
    
    def save(self, *args, **kwargs):
        if not self.application_number:
            from datetime import datetime
            self.application_number = f"BID{datetime.now().strftime('%Y%m%d')}{uuid.uuid4().hex[:4].upper()}"
        super().save(*args, **kwargs)
    
    def __str__(self):
        return f"{self.application_number} - {self.business_name} - {self.status}"