from sqlalchemy import Column, Integer, String, Boolean, DateTime, Date, Text, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.database import Base

class Asim(Base):
    __tablename__ = "asim"
    id = Column(Integer, primary_key=True, index=True)
    user_id = Column(Integer, ForeignKey("users.id"), nullable=True)
    no_asim = Column(Integer, unique=True, nullable=False)
    full_name = Column(String, nullable=False)
    nickname = Column(String)
    photo = Column(String)
    birth_place = Column(String)
    birth_date = Column(Date)
    address = Column(Text)
    wilayah = Column(String)
    lingkungan = Column(String)
    k3 = Column(String)
    phone_home = Column(String)
    phone_hp = Column(String)
    email = Column(String)
    hobby = Column(String)
    eligibilities = Column(String, nullable=True)  # comma-separated: "R,SR"
    is_active = Column(Boolean, default=True)
    periode_start = Column(Integer, nullable=True)
    periode_end = Column(Integer, nullable=True)
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    user = relationship("User", back_populates="asim")
    unavailabilities = relationship("Unavailability", back_populates="asim")
    assignments = relationship("Assignment", back_populates="asim")
    subscriptions = relationship("DailySubscription", back_populates="asim")