from fastapi import FastAPI, Request, HTTPException
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse, JSONResponse
from pydantic import BaseModel, EmailStr
from aiogram import Bot, Dispatcher
from fastapi.middleware.wsgi import WSGIMiddleware
import uvicorn

BOT_TOKEN = '7102060229:AAE4SWmgKXkCBC482l8Ble5lKzlCV2YIWnM'
ID = '340394898'

app = FastAPI()

# Для совместимости с WSGI
# application = WSGIMiddleware(app)

app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")

bot = Bot(  # Образ Бота
        token=BOT_TOKEN,
    )

@app.get("/")
async def index(request: Request):
    return templates.TemplateResponse("index.html", {"request": request})

@app.get("/tracklink-presentation")
async def get_tracklink_presentation():
    # Здесь вы можете добавить логику для отслеживания открытий
    # Например, увеличить счетчик в базе данных
    file_path = "/static/doc/SYBIKO_TrackLink.pdf"
    
    headers = {
        'Content-Disposition': 'inline; filename="SYBIKO_TrackLink.pdf"'
    }
    
    return FileResponse(file_path, headers=headers, media_type='application/pdf')

@app.get("/news/conference-omsk")
async def news_conference_omsk(request: Request):
    return templates.TemplateResponse("news1.html", {"request": request})



class ContactForm(BaseModel):
    name: str
    email: EmailStr
    message: str

@app.post("/submit-form")
async def submit_form(form_data: ContactForm):
    try:
        # Здесь вы можете добавить логику для сохранения данных в базу данных
        # или отправки электронного письма
        await send_email(form_data)
        return JSONResponse(content={"message": "Form submitted successfully"}, status_code=200)
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

async def send_email(form_data: ContactForm):
    
    body = f"""
Собщение от sybiko.ru
Имя: {form_data.name}
Email: {form_data.email}
Сообщение:
{form_data.message}
    """
    print(body)
    se = await bot.send_message(
            ID,
            body,
        )
    print(se)
    
    
# # Для локальной разработки
# if __name__ == "__main__":
#     uvicorn.run(app, host="0.0.0.0", port=8000)
