from flask import render_template

TEMPLATE = 'components/modul_planung.html'

def get_formular_html():
    return render_template(TEMPLATE)

def berechne(form_data):
    pos = []
    zul_mtb = _float(form_data.get('zulage_struk_mtb', 0))
    zul_otb = _float(form_data.get('zulage_struk_otb', 0))
    mpp_zn = _float(form_data.get('mpp_gfk_zn', 0))
    mpp_kr = _float(form_data.get('mpp_kr', 0))
    mpp_snrv = _float(form_data.get('mpp_snrv', 0))
    gf_minik = _float(form_data.get('gf_minik', 0))
    ivk = _float(form_data.get('ivk_m', 0))
    zul_kl = _float(form_data.get('zulage_kl_baum', 0))
    s_liste = form_data.get('s_liste', '').strip()

    if form_data.get('proj_struk_mtb') == 'an':
        txt = 'Projektierung n. Strukturplanung mit TB bis 100m'
        if zul_mtb > 0:
            txt += f', Zulage {zul_mtb}m ab 101m'
        pos.append(dict(pos_nr='10037800', kurztext=txt, menge=1, einheit='ST'))
    if form_data.get('proj_struk_otb') == 'an':
        txt = 'Projektierung n. Strukturplanung ohne TB bis 100m'
        if zul_otb > 0:
            txt += f', Zulage {zul_otb}m ab 101m'
        pos.append(dict(pos_nr='10037801', kurztext=txt, menge=1, einheit='ST'))
    if form_data.get('mpp_gfk_nvt_ap') == 'an':
        txt = 'MP-Proj. FTTH-Gf-Kabel v. NVT → GF-AP'
        if mpp_zn > 0:
            txt += f' ({mpp_zn}m im ZN-Netz)'
        pos.append(dict(pos_nr='10037802', kurztext=txt, menge=1, einheit='ST'))
    if form_data.get('mpp_gfap') == 'an':
        pos.append(dict(pos_nr='10037803', kurztext='MP-Proj. GF-AP', menge=1, einheit='ST'))
    if mpp_kr > 0:
        pos.append(dict(pos_nr='10037804', kurztext=f'MP-Proj. KR-Anlagen ({mpp_kr}m)', menge=mpp_kr, einheit='M'))
    if mpp_snrv > 0:
        pos.append(dict(pos_nr='10037805', kurztext=f'MP-Proj. ({mpp_snrv}m)', menge=mpp_snrv, einheit='M'))
    if form_data.get('ap_sgs') == 'an':
        pos.append(dict(pos_nr='10037806', kurztext='GF-AP + Patchfeld', menge=1, einheit='ST'))
    if gf_minik > 0:
        pos.append(dict(pos_nr='10037807', kurztext=f'GF-Kabel einbl./verlegen ({gf_minik}m)', menge=gf_minik, einheit='M'))
    if ivk > 0:
        pos.append(dict(pos_nr='10037808', kurztext=f'IVK ({ivk}m)', menge=ivk, einheit='M'))
    if form_data.get('proj_kl_baum') == 'an':
        txt = 'Proj. kl. Baumaßnahme'
        if zul_kl > 0:
            txt += f' ({zul_kl}m)'
        pos.append(dict(pos_nr='10037809', kurztext=txt, menge=1, einheit='ST'))
    if form_data.get('s_planung_05') == 'an':
        pos.append(dict(pos_nr='10037810', kurztext='S-Planung 0,5', menge=1, einheit='ST'))
    if s_liste:
        lines = [l.strip() for l in s_liste.split('\n') if l.strip()]
        for i, line in enumerate(lines):
            pos.append(dict(pos_nr='10037811', kurztext=f'S-Liste: {line}', menge=1, einheit='ST'))
    return pos

def _float(val, default=0):
    try: return float(str(val).replace(',', '.'))
    except: return default

def _int(val, default=0):
    try: return int(float(str(val).replace(',', '.')))
    except: return default
