"""
UI модуль для парсера сводок ПМ
"""
import streamlit as st
from api_client import upload_file_to_api, make_api_request
from config import PM_CODES, PM_COLUMNS, DEFAULT_OGS


def render_svodka_pm_tab():
    """Рендер вкладки сводок ПМ"""
    st.header("📊 Сводки ПМ - Полный функционал")
    
    # Секция загрузки файлов
    st.subheader("📤 Загрузка файлов")
    uploaded_pm = st.file_uploader(
        "Выберите ZIP архив со сводками ПМ",
        type=['zip'],
        key="pm_upload"
    )
    
    if uploaded_pm is not None:
        if st.button("📤 Загрузить сводки ПМ", key="upload_pm_btn"):
            with st.spinner("Загружаю файл..."):
                result, status = upload_file_to_api(
                    "/svodka_pm/upload-zip",
                    uploaded_pm.read(),
                    uploaded_pm.name
                )
                
                if status == 200:
                    st.success(f"✅ {result.get('message', 'Файл загружен')}")
                    st.info(f"ID объекта: {result.get('object_id', 'N/A')}")
                else:
                    st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
    
    st.markdown("---")
    
    # Секция получения данных
    st.subheader("🔍 Получение данных")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("Данные по одному ОГ")
        
        og_id = st.selectbox(
            "Выберите ОГ",
            DEFAULT_OGS,
            key="pm_single_og"
        )
        
        codes = st.multiselect(
            "Выберите коды строк",
            PM_CODES,
            default=[78, 79],
            key="pm_single_codes"
        )
        
        columns = st.multiselect(
            "Выберите столбцы",
            PM_COLUMNS,
            default=["БП", "ПП"],
            key="pm_single_columns"
        )
        
        if st.button("🔍 Получить данные по ОГ", key="pm_single_btn"):
            if codes and columns:
                with st.spinner("Получаю данные..."):
                    data = {
                        "id": og_id,
                        "codes": codes,
                        "columns": columns
                    }
                    
                    result, status = make_api_request("/svodka_pm/get_single_og", data)
                    
                    if status == 200:
                        st.success("✅ Данные получены")
                        st.json(result)
                    else:
                        st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
            else:
                st.warning("⚠️ Выберите коды и столбцы")
    
    with col2:
        st.subheader("Данные по всем ОГ")
        
        codes_total = st.multiselect(
            "Выберите коды строк",
            PM_CODES,
            default=[78, 79, 394, 395],
            key="pm_total_codes"
        )
        
        columns_total = st.multiselect(
            "Выберите столбцы",
            PM_COLUMNS,
            default=["БП", "ПП", "СЭБ"],
            key="pm_total_columns"
        )
        
        if st.button("🔍 Получить данные по всем ОГ", key="pm_total_btn"):
            if codes_total and columns_total:
                with st.spinner("Получаю данные..."):
                    data = {
                        "codes": codes_total,
                        "columns": columns_total
                    }
                    
                    result, status = make_api_request("/svodka_pm/get_total_ogs", data)
                    
                    if status == 200:
                        st.success("✅ Данные получены")
                        st.json(result)
                    else:
                        st.error(f"❌ Ошибка: {result.get('message', 'Неизвестная ошибка')}")
            else:
                st.warning("⚠️ Выберите коды и столбцы")