"""Архів оцінювань — CompanyRep бачить тільки свою компанію."""
from __future__ import annotations

import streamlit as st

from services.history import get_assessments
from ui.guard import require_role

require_role("CompanyRep", "Admin", "Expert")

_LEVEL = {1: "🟡 Рівень 1", 2: "🟢 Рівень 2", 3: "🏆 Рівень 3", None: "🔴 Не сертифіковано"}
_STATUS = {"draft": "Чернетка", "scored": "Прораховано", "certified": "Сертифіковано"}

role = st.session_state.get("user_role")
# CompanyRep → company_id з session_state; Admin/Expert → None (всі компанії)
company_id = st.session_state.get("user_company_id") if role == "CompanyRep" else None

st.title("Історія оцінювань")

assessments = get_assessments(company_id)

if not assessments:
    st.info("Оцінювань ще немає.")
    st.stop()

st.dataframe(
    [{"ID": a["id"], "Компанія": a["company"], "Дата": str(a["date"]),
      "Експерт": a["expert"], "Статус": _STATUS.get(a["status"], a["status"]),
      "Рівень": _LEVEL.get(a["level"], "—")}
     for a in assessments],
    use_container_width=True, hide_index=True,
)

scored = [a for a in assessments if a["status"] != "draft"]
if scored:
    st.divider()
    st.subheader("Переглянути результати")
    options = {f"#{a['id']} — {a['company']} ({a['date']})": a["id"] for a in scored}
    sel = st.selectbox("Оберіть оцінювання", list(options.keys()))
    if st.button("Відкрити результати", type="primary"):
        st.session_state.assessment_id = options[sel]
        st.switch_page("pages/results.py")
