"""
Ingress FS Backend API
Author: Patrick Diepold
"""

from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
from pydantic import BaseModel
import os
import io
import csv
from sheets_handler import SheetsManager
from dotenv import load_dotenv

load_dotenv()

app = FastAPI()
templates = Jinja2Templates(directory="templates")

sheets = SheetsManager(os.getenv("GOOGLE_APPLICATION_CREDENTIALS"), os.getenv("SPREADSHEET_ID"))

class StatSubmission(BaseModel):
    user_id: int
    username: str
    raw_data: str

@app.post("/submit_stats")
async def submit_stats(submission: StatSubmission):
    # TSV Parsing
    f = io.StringIO(submission.raw_data.strip())
    reader = csv.DictReader(f, delimiter='\t')
    
    try:
        row = next(reader)
        # Wir säubern die Keys
        stats = {k.strip(): v.strip() for k, v in row.items() if k}
        
        agent_name = stats.get("Agent Name", submission.username)
        faction = stats.get("Agent Faction", "Unknown")
        
        # In Google Sheet eintragen
        result_msg = sheets.register_or_update_agent(agent_name, faction, stats)
        
        return {"status": "success", "message": result_msg}
    except Exception as e:
        return {"status": "error", "message": str(e)}

@app.get("/admin")
async def admin_dashboard(request: Request):
    return templates.TemplateResponse("admin.html", {"request": request, "agents": []})

@app.get("/verify/{user_id}")
async def verify_agent(user_id: str):
    # Später: In DB auf 'verified' setzen
    return {"status": "success", "message": f"User {user_id} wurde erfolgreich verifiziert!"}