import uuid

from django.db import models

from core.models import TimeStampedModel
from members.models import Member


class Contribution(TimeStampedModel):
    PAYMENT_METHOD_CHOICES = [
        ("cash", "Cash"),
        ("bank", "Bank Transfer"),
        ("bkash", "bKash"),
        ("nagad", "Nagad"),
        ("rocket", "Rocket"),
        ("cheque", "Cheque"),
        ("other", "Other"),
    ]

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    member = models.ForeignKey(Member, on_delete=models.CASCADE, related_name="contributions")
    date = models.DateField()
    amount = models.DecimalField(max_digits=14, decimal_places=2)
    payment_method = models.CharField(max_length=20, choices=PAYMENT_METHOD_CHOICES, default="cash")
    reference_no = models.CharField("Transaction / Receipt No.", max_length=100, blank=True)
    remarks = models.TextField(blank=True)
    attachment = models.FileField(upload_to="contribution_receipts/", null=True, blank=True)

    class Meta:
        db_table = "contributions_contribution"
        verbose_name = "Deposit"
        verbose_name_plural = "Deposits"
        ordering = ["-date", "-created_at"]

    def __str__(self):
        return f"{self.member.full_name} - {self.amount} on {self.date}"

    @property
    def project(self):
        return self.member.project
