"""
app_real_estate/models.py

Models for real estate properties and their units.
Migrated from:
  app/Models/RealEstate.php     → RealEstate
  app/Models/RealEstateUnit.php → RealEstateUnit
"""

from django.db import models


# ---------------------------------------------------------------------------
# RealEstate  (migrated from app/Models/RealEstate.php)
# ---------------------------------------------------------------------------
class RealEstate(models.Model):
    REID = models.IntegerField(primary_key=True)
    Street = models.CharField(max_length=255, blank=True, null=True)
    HouseNumber = models.CharField(max_length=50, blank=True, null=True)
    PostalCode = models.CharField(max_length=20, blank=True, null=True)
    City = models.CharField(max_length=255, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    updated_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        db_table = 'real_estates'
        verbose_name = 'Immobilie'
        verbose_name_plural = 'Immobilien'

    def __str__(self):
        return f'{self.Street} {self.HouseNumber}, {self.City}'


# ---------------------------------------------------------------------------
# RealEstateUnit  (migrated from app/Models/RealEstateUnit.php)
# No timestamps (public $timestamps = false)
# ---------------------------------------------------------------------------
class RealEstateUnit(models.Model):
    # PositiveIntegerField, nicht IntegerField: die Spalte ist in der
    # (von Laravel angelegten) Tabelle 'int unsigned'. MySQL verlangt fuer
    # Fremdschluessel identische Typen -- ein FK von einer neuen Tabelle
    # hierher waere sonst signed und wuerde mit Fehler 3780 abgelehnt.
    REUID = models.PositiveIntegerField(primary_key=True)
    REID = models.ForeignKey(RealEstate, db_column='REID', on_delete=models.CASCADE, null=True, blank=True, verbose_name="Immobilie")
    REUDesc = models.CharField(max_length=255, blank=True, null=True, verbose_name="Name")
    REUCID = models.IntegerField(null=True, blank=True)

    class Meta:
        db_table = 'real_estate_units'
        verbose_name = 'Nutzungseinheit'
        verbose_name_plural = 'Nutzungseinheiten'

    def __str__(self):
        return f'{self.REUDesc} (REUID {self.REUID})'
