87 lines
4.2 KiB
Python
87 lines
4.2 KiB
Python
"""
|
|
Business Information Service
|
|
Handles business information management for users without websites.
|
|
"""
|
|
|
|
from typing import Dict, Any, Optional
|
|
from fastapi import HTTPException
|
|
from loguru import logger
|
|
|
|
class BusinessInfoService:
|
|
"""Service for handling business information operations."""
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
async def save_business_info(self, business_info: 'BusinessInfoRequest') -> Dict[str, Any]:
|
|
"""Save business information for users without websites."""
|
|
try:
|
|
from models.business_info_request import BusinessInfoRequest
|
|
from services.business_info_service import business_info_service
|
|
|
|
logger.info(f"🔄 Saving business info for user_id: {business_info.user_id}")
|
|
result = business_info_service.save_business_info(business_info)
|
|
logger.success(f"✅ Business info saved successfully for user_id: {business_info.user_id}")
|
|
return result
|
|
except Exception as e:
|
|
logger.error(f"❌ Error saving business info: {str(e)}")
|
|
raise HTTPException(status_code=500, detail=f"Failed to save business info: {str(e)}")
|
|
|
|
async def get_business_info(self, business_info_id: int) -> Dict[str, Any]:
|
|
"""Get business information by ID."""
|
|
try:
|
|
from services.business_info_service import business_info_service
|
|
|
|
logger.info(f"🔄 Getting business info for ID: {business_info_id}")
|
|
result = business_info_service.get_business_info(business_info_id)
|
|
if result:
|
|
logger.success(f"✅ Business info retrieved for ID: {business_info_id}")
|
|
return result
|
|
else:
|
|
logger.warning(f"⚠️ No business info found for ID: {business_info_id}")
|
|
raise HTTPException(status_code=404, detail="Business info not found")
|
|
except HTTPException:
|
|
raise
|
|
except Exception as e:
|
|
logger.error(f"❌ Error getting business info: {str(e)}")
|
|
raise HTTPException(status_code=500, detail=f"Failed to get business info: {str(e)}")
|
|
|
|
async def get_business_info_by_user(self, user_id: int) -> Dict[str, Any]:
|
|
"""Get business information by user ID."""
|
|
try:
|
|
from services.business_info_service import business_info_service
|
|
|
|
logger.info(f"🔄 Getting business info for user ID: {user_id}")
|
|
result = business_info_service.get_business_info_by_user(user_id)
|
|
if result:
|
|
logger.success(f"✅ Business info retrieved for user ID: {user_id}")
|
|
return result
|
|
else:
|
|
logger.warning(f"⚠️ No business info found for user ID: {user_id}")
|
|
raise HTTPException(status_code=404, detail="Business info not found")
|
|
except HTTPException:
|
|
raise
|
|
except Exception as e:
|
|
logger.error(f"❌ Error getting business info: {str(e)}")
|
|
raise HTTPException(status_code=500, detail=f"Failed to get business info: {str(e)}")
|
|
|
|
async def update_business_info(self, business_info_id: int, business_info: 'BusinessInfoRequest') -> Dict[str, Any]:
|
|
"""Update business information."""
|
|
try:
|
|
from models.business_info_request import BusinessInfoRequest
|
|
from services.business_info_service import business_info_service
|
|
|
|
logger.info(f"🔄 Updating business info for ID: {business_info_id}")
|
|
result = business_info_service.update_business_info(business_info_id, business_info)
|
|
if result:
|
|
logger.success(f"✅ Business info updated for ID: {business_info_id}")
|
|
return result
|
|
else:
|
|
logger.warning(f"⚠️ No business info found to update for ID: {business_info_id}")
|
|
raise HTTPException(status_code=404, detail="Business info not found")
|
|
except HTTPException:
|
|
raise
|
|
except Exception as e:
|
|
logger.error(f"❌ Error updating business info: {str(e)}")
|
|
raise HTTPException(status_code=500, detail=f"Failed to update business info: {str(e)}")
|