from pydantic import BaseModel
from typing import Optional, List
from datetime import date

class AsimCreate(BaseModel):
    no_asim: int
    full_name: str
    nickname: Optional[str] = None
    birth_place: Optional[str] = None
    birth_date: Optional[date] = None
    address: Optional[str] = None
    wilayah: Optional[str] = None
    lingkungan: Optional[str] = None
    k3: Optional[str] = None
    phone_home: Optional[str] = None
    phone_hp: Optional[str] = None
    email: Optional[str] = None
    hobby: Optional[str] = None
    is_active: bool = True
    periode_start: Optional[int] = None
    periode_end: Optional[int] = None
    photo: Optional[str] = None
    eligibilities: Optional[str] = None  # "R,PJ" comma separated

class AsimUpdate(BaseModel):
    no_asim: Optional[int] = None
    full_name: Optional[str] = None
    nickname: Optional[str] = None
    birth_place: Optional[str] = None
    birth_date: Optional[date] = None
    address: Optional[str] = None
    wilayah: Optional[str] = None
    lingkungan: Optional[str] = None
    k3: Optional[str] = None
    phone_home: Optional[str] = None
    phone_hp: Optional[str] = None
    email: Optional[str] = None
    hobby: Optional[str] = None
    is_active: Optional[bool] = None
    periode_start: Optional[int] = None
    periode_end: Optional[int] = None
    photo: Optional[str] = None
    eligibilities: Optional[str] = None  # "R,PJ" comma separated

class AsimImportPeriode(BaseModel):
    no_asim: int
    full_name: str
    phone_hp: str  # required untuk matching
    nickname: Optional[str] = None
    birth_place: Optional[str] = None
    birth_date: Optional[date] = None
    address: Optional[str] = None
    wilayah: Optional[str] = None
    lingkungan: Optional[str] = None
    k3: Optional[str] = None
    phone_home: Optional[str] = None
    email: Optional[str] = None
    hobby: Optional[str] = None
    is_active: bool = True
    periode_start: Optional[int] = None
    periode_end: Optional[int] = None
    eligibilities: Optional[str] = None

class AsimResponse(BaseModel):
    id: int
    no_asim: int
    full_name: str
    nickname: Optional[str] = None
    birth_place: Optional[str] = None
    birth_date: Optional[date] = None
    address: Optional[str] = None
    wilayah: Optional[str] = None
    lingkungan: Optional[str] = None
    k3: Optional[str] = None
    phone_home: Optional[str] = None
    phone_hp: Optional[str] = None
    email: Optional[str] = None
    hobby: Optional[str] = None
    is_active: bool
    periode_start: Optional[int] = None
    periode_end: Optional[int] = None
    photo: Optional[str] = None
    eligibilities: Optional[str] = None  # "R,PJ" comma separated

    class Config:
        from_attributes = True