from __future__ import annotations

from pathlib import Path

from fastapi import APIRouter, Form, Request, status
from fastapi.responses import HTMLResponse, RedirectResponse
from fastapi.templating import Jinja2Templates

BASE_DIR = Path(__file__).resolve().parents[1]
templates = Jinja2Templates(directory=str(BASE_DIR / 'templates'))
router = APIRouter()


@router.get('/', response_class=HTMLResponse)
def dashboard(request: Request) -> HTMLResponse:
    summary = request.app.state.store.dashboard_summary()
    return templates.TemplateResponse(
        request,
        'dashboard.html',
        {
            'summary': summary,
        },
    )


@router.post('/quick-actions/notes')
def quick_add_note_form(
    request: Request,
    title: str = Form(...),
    body: str = Form(...),
    category: str = Form('note'),
) -> RedirectResponse:
    request.app.state.store.add_quick_note(
        {
            'title': title,
            'body': body,
            'category': category,
            'source': 'dashboard-form',
            'pinned': False,
        }
    )
    return RedirectResponse(url='/', status_code=status.HTTP_303_SEE_OTHER)
