"""
UI модуль для парсера сводок СА
"""
import streamlit as st
import requests
from api_client import make_api_request, API_BASE_URL
from config import CA_MODES, CA_TABLES


def render_svodka_ca_tab():
    """Рендер вкладки сводок СА"""
    st.header("🏭 Сводки СА - Полный функционал")
    
    # Секция загрузки файлов
    st.subheader("📤 Загрузка файлов")
    uploaded_ca = st.file_uploader(
        "Выберите Excel файл сводки СА",
        type=['xlsx', 'xlsm', 'xls'],
        key="ca_upload"
    )
    
    if uploaded_ca is not None:
        if st.button("📤 Загрузить сводку СА", key="upload_ca_btn"):
            with st.spinner("Загружаю файл..."):
                try:
                    files = {"file": (uploaded_ca.name, uploaded_ca.read(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}
                    response = requests.post(f"{API_BASE_URL}/svodka_ca/upload", files=files)
                    result = response.json()
                    
                    if response.status_code == 200:
                        st.success(f"✅ {result.get('message', 'Файл загружен')}")
                        st.info(f"ID объекта: {result.get('object_id', 'N/A')}")
                    else:
                        st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
                except Exception as e:
                    st.error(f"❌ Ошибка: {str(e)}")
    
    st.markdown("---")
    
    # Секция получения данных
    st.subheader("🔍 Получение данных")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("Параметры запроса")
        
        modes = st.multiselect(
            "Выберите режимы",
            CA_MODES,
            default=["plan", "fact"],
            key="ca_modes"
        )
        
        tables = st.multiselect(
            "Выберите таблицы",
            CA_TABLES,
            default=["ТиП", "Топливо"],
            key="ca_tables"
        )
    
    with col2:
        st.subheader("Результат")
        if st.button("🔍 Получить данные СА", key="ca_btn"):
            if modes and tables:
                with st.spinner("Получаю данные..."):
                    data = {
                        "modes": modes,
                        "tables": tables
                    }
                    
                    result, status = make_api_request("/svodka_ca/get_data", data)
                    
                    if status == 200:
                        st.success("✅ Данные получены")
                        st.json(result)
                    else:
                        st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
            else:
                st.warning("⚠️ Выберите режимы и таблицы")