from django.db import models
from django.utils.translation import gettext_lazy as _


class Subject(models.Model):
    class Meta:
        verbose_name = _('Subject')
        verbose_name_plural = _('Subjects')

    id = models.CharField(_('CIN'), max_length=8, primary_key=True)
    vat_id = models.CharField(
        _('VAT ID'), max_length=12, null=True, blank=True,
    )

    def get_latest_data(self):
        return self.subject_data.filter(subject=self).order_by(
            '-created_date',
        ).first()

    def __str__(self):
        return f'{self.id} - {self.get_latest_data().name}'


class SubjectData(models.Model):
    class Meta:
        verbose_name = _('Subject Data')
        verbose_name_plural = _('Subject Datas')

    subject = models.ForeignKey(
        Subject, on_delete=models.CASCADE, related_name='subject_data',
    )
    name = models.CharField(_('Name'), max_length=128)
    street = models.CharField(_('Street'), max_length=64)
    zip_code = models.CharField(_('Zip Code'), max_length=6)
    city = models.CharField(_('City'), max_length=64)
    city_part = models.CharField(
        _('City part'), max_length=64, null=True, blank=True,
    )
    created_date = models.DateTimeField(_('Created date'), auto_now_add=True)

    def __str__(self):
        return f'{self.subject.id} - {self.name} - {self.created_date}'