from django.db import models
from django.utils import timezone

# Create your models here.
class Donation(models.Model):
    AMOUNT_CHOICES = [
        ('500', 'K500'),
        ('1000', 'K1,000'),
        ('2000', 'K2,000'),
        ('other', 'Other Amount'),
    ]
    
    full_name = models.CharField(max_length=255)
    email = models.EmailField()
    amount = models.CharField(max_length=20, choices=AMOUNT_CHOICES)
    custom_amount = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True)
    proof_of_payment = models.FileField(upload_to='donations/proofs/%Y/%m/')
    is_anonymous = models.BooleanField(default=False)
    message = models.TextField(blank=True)
    submitted_at = models.DateTimeField(default=timezone.now)
    
    class Meta:
        ordering = ['-submitted_at']
    
    def __str__(self):
        if self.is_anonymous:
            return f"Anonymous Donation - {self.submitted_at.strftime('%Y-%m-%d')}"
        return f"Donation by {self.full_name} - {self.submitted_at.strftime('%Y-%m-%d')}"
    
    @property
    def display_name(self):
        return "Anonymous" if self.is_anonymous else self.full_name
    
    @property
    def display_amount(self):
        if self.amount == 'other':
            return f"K{self.custom_amount:,.2f}"
        # Convert string amount to integer before formatting
        return f"K{int(self.amount):,}"