from fastapi import FastAPI, Request, Form
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from scrape import scrape_weather, scrape_market_prices, scrape_assets, save_asset_log

app = FastAPI()
templates = Jinja2Templates(directory="templates")

@app.get("/", response_class=HTMLResponse)
@app.post("/weather", response_class=HTMLResponse)
async def show_weather(request: Request):
    weather_data = scrape_weather()
    return templates.TemplateResponse(request=request, name="index.html", 
        context={"current_tab": "weather", "weather_data": weather_data})

@app.get("/prices", response_class=HTMLResponse)
@app.post("/prices", response_class=HTMLResponse)
async def show_prices(request: Request, keyword: str = Form(None)):
    price_data = scrape_market_prices(keyword) 
    return templates.TemplateResponse(request=request, name="index.html", 
        context={"current_tab": "prices", "price_data": price_data, "keyword": keyword})

# ─── 📈 資産ロギングタブ（画面表示） ───
@app.get("/assets", response_class=HTMLResponse)
async def show_assets(request: Request):
    asset_data = scrape_assets()
    return templates.TemplateResponse(request=request, name="index.html", 
        context={"current_tab": "assets", "asset_data": asset_data, "log_msg": None})

# ─── 💾 資産ロギングタブ（CSV保存ボタンが押された時） ───
@app.post("/assets/log", response_class=HTMLResponse)
async def do_assets_log(request: Request):
    # 1. 現在の最新価格をスクレイピング
    asset_data = scrape_assets()
    # 2. CSVファイルに保存
    success = save_asset_log(asset_data)
    
    msg = "✅ CSVファイルに価格を記録しました！" if success else "❌ 記録に失敗しました。"
    
    return templates.TemplateResponse(request=request, name="index.html", 
        context={"current_tab": "assets", "asset_data": asset_data, "log_msg": msg})