from django.db import models

from apps.core.models import TimeStampedModel


class StatementPeriod(models.TextChoices):
    MONTHLY = "monthly", "Monthly"
    QUARTERLY = "quarterly", "Quarterly"
    YEARLY = "yearly", "Yearly"


class Statement(TimeStampedModel):
    investor = models.ForeignKey("investors.Investor", on_delete=models.CASCADE, related_name="statements")
    investment = models.ForeignKey(
        "investments.Investment",
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name="statements",
    )
    document = models.ForeignKey(
        "documents.Document",
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name="statements",
    )
    title = models.CharField(max_length=180)
    period = models.CharField(max_length=16, choices=StatementPeriod.choices, default=StatementPeriod.MONTHLY)
    period_label = models.CharField(max_length=80)
    summary = models.TextField(blank=True)
    posted_on = models.DateField()

    class Meta:
        ordering = ["-posted_on"]

    def __str__(self):
        return f"{self.title} · {self.investor.account_code}"
