from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
import json
from ...shared.config.database import get_db
from ...shared.config.logging_config import get_logger
from ..models.page_content import PageContent, PageType
logger = get_logger(__name__)
router = APIRouter(prefix='/footer', tags=['footer'])

def serialize_page_content(content: PageContent) -> dict:
    return {'id': content.id, 'page_type': content.page_type.value, 'title': content.title, 'subtitle': content.subtitle, 'description': content.description, 'content': content.content, 'social_links': json.loads(content.social_links) if content.social_links else None, 'footer_links': json.loads(content.footer_links) if content.footer_links else None, 'badges': json.loads(content.badges) if content.badges else None, 'copyright_text': content.copyright_text, 'is_active': content.is_active, 'created_at': content.created_at.isoformat() if content.created_at else None, 'updated_at': content.updated_at.isoformat() if content.updated_at else None}

@router.get('/')
async def get_footer_content(db: Session=Depends(get_db)):
    try:
        content = db.query(PageContent).filter(PageContent.page_type == PageType.FOOTER).first()
        if not content:
            return {'status': 'success', 'data': {'page_content': None}}
        content_dict = serialize_page_content(content)
        return {'status': 'success', 'data': {'page_content': content_dict}}
    except Exception as e:
        logger.error(f'Error fetching footer content: {str(e)}', exc_info=True)
        raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=f'Error fetching footer content: {str(e)}')