# app/api/v1/vendor/info.py
"""
Vendor information endpoints.

This module provides:
- Public vendor information lookup (no auth required)
- Used by vendor login pages to display vendor details
"""

import logging

from fastapi import APIRouter, Depends, Path
from sqlalchemy.orm import Session

from app.core.database import get_db
from app.services.vendor_service import vendor_service
from models.schema.vendor import VendorDetailResponse

router = APIRouter()
logger = logging.getLogger(__name__)


@router.get("/{vendor_code}", response_model=VendorDetailResponse)
def get_vendor_info(
    vendor_code: str = Path(..., description="Vendor code"),
    db: Session = Depends(get_db),
):
    """
    Get public vendor information by vendor code.

    This endpoint is used by the vendor login page to display vendor info.
    No authentication required - this is public information.

    **Use Case:**
    - Vendor login page loads vendor info to display branding
    - Shows vendor name, description, logo, etc.

    **Returns only active vendors** to prevent access to disabled accounts.

    Args:
        vendor_code: The vendor's unique code (e.g., 'WIZAMART')
        db: Database session

    Returns:
        VendorResponse: Public vendor information

    Raises:
        VendorNotFoundException (404): Vendor not found or inactive
    """
    logger.info(f"Public vendor info request: {vendor_code}")

    vendor = vendor_service.get_active_vendor_by_code(db, vendor_code)

    logger.info(f"Vendor info retrieved: {vendor.name} ({vendor.vendor_code})")

    return VendorDetailResponse(
        # Vendor fields
        id=vendor.id,
        vendor_code=vendor.vendor_code,
        subdomain=vendor.subdomain,
        name=vendor.name,
        description=vendor.description,
        company_id=vendor.company_id,
        letzshop_csv_url_fr=vendor.letzshop_csv_url_fr,
        letzshop_csv_url_en=vendor.letzshop_csv_url_en,
        letzshop_csv_url_de=vendor.letzshop_csv_url_de,
        is_active=vendor.is_active,
        is_verified=vendor.is_verified,
        created_at=vendor.created_at,
        updated_at=vendor.updated_at,
        # Company info
        company_name=vendor.company.name,
        company_contact_email=vendor.company.contact_email,
        company_contact_phone=vendor.company.contact_phone,
        company_website=vendor.company.website,
        # Owner details (from company)
        owner_email=vendor.company.owner.email,
        owner_username=vendor.company.owner.username,
    )
