"""
app_verbrauch/models.py

Models for consumption/usage data (Verbrauchsdaten).
All tables are pre-existing (managed = False).
Migrated from:
  app/Models/VISysVerbrauchRahmen.php    → VISysVerbrauchRahmen
  app/Models/VISysVerbrauchsDS.php       → VISysVerbrauchsDS
  app/Models/VISysRefVerbrauchRahmen.php → VISysRefVerbrauchRahmen
  app/Models/VISysRefVerbrauchsDS.php    → VISysRefVerbrauchsDS
  app/Models/VISysVerbrauchArt.php       → VISysVerbrauchArt
"""

from django.db import models
from app_real_estate.models import RealEstateUnit
from app_nutzer.models import User 

# ---------------------------------------------------------------------------
# VISysVerbrauchRahmen  (migrated from app/Models/VISysVerbrauchRahmen.php)
# table: tbl_v_i_sys_ver_rahmen  –  No timestamps
# ---------------------------------------------------------------------------
class VISysVerbrauchRahmen(models.Model):
    VISysVerbrauchsID = models.AutoField(primary_key=True)
    PersonenID = models.ForeignKey(User, on_delete=models.RESTRICT, null=True, blank=True, db_column="PersonenID_id")
    REUID = models.ForeignKey(RealEstateUnit, on_delete=models.RESTRICT, null=True, blank=True, db_column="REUID_id")
    MietVID = models.IntegerField(null=True, blank=True)
    Jahr = models.IntegerField(null=True, blank=True)
    VISysVerbrauchsArtID = models.IntegerField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    updated_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        db_table = 'tbl_v_i_sys_ver_rahmen'
        managed = False  # existing table, do not auto-create/modify

    def __str__(self):
        return f'VerbrauchsID {self.VISysVerbrauchsID} Jahr {self.Jahr}'


# ---------------------------------------------------------------------------
# VISysVerbrauchsDS  (migrated from app/Models/VISysVerbrauchsDS.php)
# table: tbl_v_i_sys_verbrauchs_daten  –  No timestamps
# ---------------------------------------------------------------------------
class VISysVerbrauchsDS(models.Model):
    VerBrDatID = models.IntegerField(primary_key=True)
    VerBrSD = models.DateField(null=True, blank=True)    # Start date
    VerBrED = models.DateField(null=True, blank=True)    # End date
    VerBrWert = models.FloatField(null=True, blank=True)
    VerBrID = models.IntegerField(null=True, blank=True)  # FK to VISysVerbrauchsID
    VerBrWertNormA = models.FloatField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    updated_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        db_table = 'tbl_v_i_sys_verbrauchs_daten'
        managed = False

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


# ---------------------------------------------------------------------------
# VISysRefVerbrauchRahmen  (migrated from app/Models/VISysRefVerbrauchRahmen.php)
# table: tbl_v_i_sys_ref_ver_rahmen
# ---------------------------------------------------------------------------
class VISysRefVerbrauchRahmen(models.Model):
    VISysRefVerbrID = models.AutoField(primary_key=True)
    REID = models.IntegerField(null=True, blank=True)
    Jahr = models.IntegerField(null=True, blank=True)
    VISysVerbrauchsArtID = models.IntegerField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    updated_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        db_table = 'tbl_v_i_sys_ref_ver_rahmen'
        managed = True

    def __str__(self):
        return f'RefVerbrID {self.VISysRefVerbrID} Jahr {self.Jahr}'


# ---------------------------------------------------------------------------
# VISysRefVerbrauchsDS  (migrated from app/Models/VISysRefVerbrauchsDS.php)
# table: tbl_v_i_sys_ref_ver_daten  –  No timestamps
# ---------------------------------------------------------------------------
class VISysRefVerbrauchsDS(models.Model):
    RefVerBrDatID = models.IntegerField(primary_key=True)
    RefVerBrSD = models.DateField(null=True, blank=True)
    RefVerBrED = models.DateField(null=True, blank=True)
    RefVerBrWert = models.FloatField(null=True, blank=True)
    RefVerBrID = models.IntegerField(null=True, blank=True)  # FK to VISysRefVerbrID
    RefVerBrWertNormA = models.FloatField(null=True, blank=True)
    
    # kann entsorgt werden
    RefVerBrWertBewohnt = models.FloatField(null=True, blank=True)
    RefVerBrWertNormABewohnt = models.FloatField(null=True, blank=True)

    class Meta:
        db_table = 'tbl_v_i_sys_ref_ver_daten'
        managed = False

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


# ---------------------------------------------------------------------------
# VISysVerbrauchArt  (migrated from app/Models/VISysVerbrauchArt.php)
# No timestamps
# ---------------------------------------------------------------------------
class VISysVerbrauchArt(models.Model):
    VISysVerbrauchsArtID = models.AutoField(primary_key=True)
    VAName = models.CharField(max_length=60, null=True, blank=True)
    lastChanged = models.DateTimeField(null=True, blank=True)
    LastUpload2MISys = models.DateTimeField(null=True, blank=True)

    class Meta:
        db_table = 'tbl_v_i_sys_ver_arten'
        managed = True  # ← Django verwaltet jetzt die Tabelle

    def __str__(self):
        return f'{self.VAName}' if self.VAName else f'VerbrauchArt {self.pk}'