from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.database import get_db
from app.models.entreprise import Entreprise
from pydantic import BaseModel
from typing import Optional

router = APIRouter(prefix="/api/entreprise", tags=["entreprise"])


class EntrepriseUpdate(BaseModel):
    raison_sociale: Optional[str] = None
    adresse: Optional[str] = None
    code_postal: Optional[str] = None
    ville: Optional[str] = None
    telephone: Optional[str] = None
    email: Optional[str] = None
    logo_base64: Optional[str] = None
    logo_mimetype: Optional[str] = None


@router.get("/")
def get_entreprise(db: Session = Depends(get_db)):
    e = db.query(Entreprise).filter(Entreprise.id == 1).first()
    if not e:
        return {}
    return {
        "raison_sociale": e.raison_sociale,
        "adresse": e.adresse,
        "code_postal": e.code_postal,
        "ville": e.ville,
        "telephone": e.telephone,
        "email": e.email,
        "logo_base64": e.logo_base64,
        "logo_mimetype": e.logo_mimetype,
        "adresse_complete": f"{e.adresse}, {e.code_postal} {e.ville}".strip(", ") if e.adresse else None,
    }


@router.put("/")
def update_entreprise(data: EntrepriseUpdate, db: Session = Depends(get_db)):
    e = db.query(Entreprise).filter(Entreprise.id == 1).first()
    if not e:
        e = Entreprise(id=1)
        db.add(e)

    if data.raison_sociale is not None: e.raison_sociale = data.raison_sociale
    if data.adresse is not None: e.adresse = data.adresse
    if data.code_postal is not None: e.code_postal = data.code_postal
    if data.ville is not None: e.ville = data.ville
    if data.telephone is not None: e.telephone = data.telephone
    if data.email is not None: e.email = data.email
    if data.logo_base64 is not None: e.logo_base64 = data.logo_base64
    if data.logo_mimetype is not None: e.logo_mimetype = data.logo_mimetype

    db.commit()
    db.refresh(e)
    return {"ok": True}
