from flask import render_template

TEMPLATE = 'components/modul_stoerung.html'

def get_formular_html():
    return render_template(TEMPLATE)

def berechne(form_data):
    pos = []
    cu_gr = _int(form_data.get('cu_da_gr_anz', 0))
    cu_kl = _int(form_data.get('cu_da_kl_anz', 0))
    kabel_kl30 = _float(form_data.get('kabel_kl30', 0))
    kabel_gr30 = _float(form_data.get('kabel_gr30', 0))
    gf_ausbl = _float(form_data.get('gf_ausbl_m', 0))
    gf_einbl = _float(form_data.get('gf_einbl_m', 0))
    gf_unge = _float(form_data.get('gf_unge_kas', 0))
    gf_indoor = _int(form_data.get('gf_verb_indoor', 0))
    gf_outdoor = _int(form_data.get('gf_verb_outdoor', 0))
    vao = _float(form_data.get('vao_preis', 0))

    if form_data.get('cu_fehlerortung') == 'an':
        pos.append(dict(pos_nr='10037600', kurztext='Fehlerortung von Kabelfehlern an Cu-Kabel', menge=1, einheit='ST'))
    if form_data.get('cu_zul_instan') == 'an':
        pos.append(dict(pos_nr='10037601', kurztext='Zulage Instandsetzung v. Kabelfehlern', menge=1, einheit='ST'))
    if form_data.get('cu_schaden_beweiss') == 'an':
        pos.append(dict(pos_nr='10037602', kurztext='Schadens-/Beweissicherung an TK-Anlagen', menge=1, einheit='ST'))
    if form_data.get('cu_instan_beweis') == 'an':
        pos.append(dict(pos_nr='10037603', kurztext='Instands. nach Schadensbeweis', menge=1, einheit='ST'))
    if cu_gr > 0:
        pos.append(dict(pos_nr='10037604', kurztext=f'Cu-DA > 0,8 mm verbinden ({cu_gr} Stk)', menge=cu_gr, einheit='ST'))
    if cu_kl > 0:
        pos.append(dict(pos_nr='10037605', kurztext=f'Cu-DA ≤ 0,8 mm verbinden ({cu_kl} Stk)', menge=cu_kl, einheit='ST'))
    if kabel_kl30 > 0:
        pos.append(dict(pos_nr='10037606', kurztext='Kabel bis 30mm auslegen', menge=kabel_kl30, einheit='M'))
    if kabel_gr30 > 0:
        pos.append(dict(pos_nr='10037607', kurztext='Kabel größer 30mm auslegen', menge=kabel_gr30, einheit='M'))
    if form_data.get('gf_fehlerortung') == 'an':
        pos.append(dict(pos_nr='10037608', kurztext='Fehlerortung v. Kabelfehlern an GF-Kabel', menge=1, einheit='ST'))
    if form_data.get('gf_inst_n_fehl') == 'an':
        pos.append(dict(pos_nr='10037609', kurztext='Instands. v. GF-Kabel nach Fehlerortung', menge=1, einheit='ST'))
    if form_data.get('gf_beweis') == 'an':
        pos.append(dict(pos_nr='10037610', kurztext='Schadens-/Beweissicherung an TK-Anlagen (GF)', menge=1, einheit='ST'))
    if form_data.get('gf_instand_ohne') == 'an':
        pos.append(dict(pos_nr='10037611', kurztext='Instands. v. GF-Kabel ohne Fehlerortung', menge=1, einheit='ST'))
    if gf_ausbl > 0:
        pos.append(dict(pos_nr='10037612', kurztext='GF-Kabel ausblasen', menge=gf_ausbl, einheit='M'))
    if gf_einbl > 0:
        pos.append(dict(pos_nr='10037613', kurztext='GF-Kabel einblasen', menge=gf_einbl, einheit='M'))
    if gf_unge > 0:
        pos.append(dict(pos_nr='10037614', kurztext='GF ungeschweißt in Kassetten ablegen', menge=gf_unge, einheit='M'))
    if gf_indoor > 0:
        pos.append(dict(pos_nr='10037615', kurztext=f'Glasfasern verbinden Indoor ({gf_indoor} Stk)', menge=gf_indoor, einheit='ST'))
    if gf_outdoor > 0:
        pos.append(dict(pos_nr='10037616', kurztext=f'Glasfasern verbinden Outdoor ({gf_outdoor} Stk)', menge=gf_outdoor, einheit='ST'))
    if form_data.get('gf_muffe_neu') == 'an':
        pos.append(dict(pos_nr='10037617', kurztext='Neue GF-Muffe öffnen', menge=1, einheit='ST'))
    if form_data.get('gf_muffe_bestand') == 'an':
        pos.append(dict(pos_nr='10037618', kurztext='Bestandsmuffe öffnen', menge=1, einheit='ST'))
    if form_data.get('anfahrt_montage') == 'an':
        pos.append(dict(pos_nr='10037619', kurztext='Anfahrt Montagestelle', menge=1, einheit='ST'))
    if vao > 0:
        pos.append(dict(pos_nr='10037620', kurztext='VAO', menge=1, einheit='ST', einzelpreis=vao))
    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
