from flask import Blueprint, request, redirect, session, flash, render_template, render_template_string
import sqlite3
from database import DB_NAME
from shared_ui import HTML_TEMPLATE

dapur_bp = Blueprint('dapur', __name__)

@dapur_bp.route('/form_dapur')
def form_dapur():
    if not session.get('logged_in'):
        return redirect('/login')
        
    # Ambil data dapur dinamis dari database untuk dropdown form
    conn = sqlite3.connect(DB_NAME)
    c = conn.cursor()
    try:
        c.execute("SELECT nama_dapur, alamat_lengkap FROM dapur_sppg ORDER BY nama_dapur ASC")
        data_dapur_db = c.fetchall()
    except sqlite3.OperationalError:
        data_dapur_db = [] # Jika tabel belum ada, biarkan kosong
    finally:
        conn.close()
        
    return render_template('dapur.html', data_dapur_db=data_dapur_db)

@dapur_bp.route('/tambah_laporan_dapur', methods=['POST'])
def tambah_laporan_dapur():
    bulan_lapor = request.form.get('bulan_lapor')
    tahun_lapor = request.form.get('tahun_lapor')
    nama_dapur = request.form.get('nama_dapur')
    alamat_dapur = request.form.get('alamat_dapur')
    
    jml_balita = request.form.get('jml_balita')
    jml_balita = int(jml_balita) if jml_balita and jml_balita.strip() else 0
    
    # Menambahkan penangkapan data Baduta
    jml_baduta = request.form.get('jml_baduta')
    jml_baduta = int(jml_baduta) if jml_baduta and jml_baduta.strip() else 0
    
    jml_bumil = request.form.get('jml_bumil')
    jml_bumil = int(jml_bumil) if jml_bumil and jml_bumil.strip() else 0
    
    jml_busui = request.form.get('jml_busui')
    jml_busui = int(jml_busui) if jml_busui and jml_busui.strip() else 0
    
    total_sasaran = request.form.get('total_sasaran')
    total_sasaran = int(total_sasaran) if total_sasaran and total_sasaran.strip() else 0
    
    distribusi_mbg = request.form.get('distribusi_mbg')
    frek_distribusi = request.form.get('frek_distribusi')
    frek_sasaran = request.form.get('frek_sasaran')
    frek_makanan_basah = request.form.get('frek_makanan_basah')
    pemberian_upf = request.form.get('pemberian_upf')
    
    insentif_kader = request.form.get('insentif_kader')
    
    nominal_insentif = request.form.get('nominal_insentif')
    nominal_insentif = float(nominal_insentif) if nominal_insentif and nominal_insentif.strip() else 0.0
    
    jml_anggota_tpk = request.form.get('jml_anggota_tpk')
    jml_anggota_tpk = int(jml_anggota_tpk) if jml_anggota_tpk else 0
    
    jml_tpk_distribusi = request.form.get('jml_tpk_distribusi')
    jml_tpk_distribusi = int(jml_tpk_distribusi) if jml_tpk_distribusi else 0
    
    jml_kader_lain = request.form.get('jml_kader_lain')
    jml_kader_lain = int(jml_kader_lain) if jml_kader_lain else 0
    
    input_oleh = session.get('nama_lengkap')

    conn = sqlite3.connect(DB_NAME)
    c = conn.cursor()
    c.execute('''INSERT INTO laporan_dapur 
                 (bulan_lapor, tahun_lapor, nama_dapur, alamat_dapur, 
                 jml_balita, jml_baduta, jml_bumil, jml_busui, total_sasaran, 
                 distribusi_mbg, frek_distribusi, frek_sasaran, frek_makanan_basah, 
                 pemberian_upf, insentif_kader, nominal_insentif, 
                 jml_anggota_tpk, jml_tpk_distribusi, jml_kader_lain, input_oleh) 
                 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''',
              (bulan_lapor, tahun_lapor, nama_dapur, alamat_dapur, 
               jml_balita, jml_baduta, jml_bumil, jml_busui, total_sasaran,
               distribusi_mbg, frek_distribusi, frek_sasaran, frek_makanan_basah, 
               pemberian_upf, insentif_kader, nominal_insentif,
               jml_anggota_tpk, jml_tpk_distribusi, jml_kader_lain, input_oleh))
    conn.commit()
    conn.close()

    flash('Laporan Realisasi Dapur berhasil disimpan!', 'success')
    return redirect('/arsip_laporan')

@dapur_bp.route('/hapus_laporan/<int:id>')
def hapus_laporan(id):
    if not session.get('logged_in'):
        return redirect('/login')
        
    conn = sqlite3.connect(DB_NAME)
    c = conn.cursor()
    c.execute("DELETE FROM laporan_dapur WHERE id=?", (id,))
    conn.commit()
    conn.close()
    
    flash('Laporan dapur berhasil dihapus!', 'success')
    return redirect('/arsip_laporan')

@dapur_bp.route('/arsip_laporan')
def arsip_laporan():
    if not session.get('logged_in'):
        return redirect('/login')
        
    bulan_filter = request.args.get('bulan', '')
    tahun_filter = request.args.get('tahun', '')

    conn = sqlite3.connect(DB_NAME)
    c = conn.cursor()
    
    # Perbaikan: Menarik seluruh 20 kolom secara berurutan agar sinkron dengan shared_ui.py
    query = """
        SELECT 
            id,                 
            bulan_lapor,        
            tahun_lapor,        
            nama_dapur,         
            alamat_dapur,       
            jml_balita,         
            jml_baduta,    
            jml_bumil,          
            jml_busui,          
            total_sasaran,
            distribusi_mbg,
            pemberian_upf,
            frek_distribusi,
            frek_sasaran,
            frek_makanan_basah,
            insentif_kader,
            nominal_insentif,
            jml_anggota_tpk,
            jml_tpk_distribusi,
            jml_kader_lain
        FROM laporan_dapur 
        WHERE 1=1
    """
    params = []

    if bulan_filter:
        query += " AND bulan_lapor = ?"
        params.append(bulan_filter)
    if tahun_filter:
        query += " AND tahun_lapor = ?"
        params.append(tahun_filter)
        
    query += " ORDER BY id DESC"
    
    c.execute(query, params)
    data_laporan = c.fetchall()
    conn.close()
    
    return render_template_string(HTML_TEMPLATE, data_laporan=data_laporan, 
                                  bulan_filter=bulan_filter, tahun_filter=tahun_filter, 
                                  active_page='arsip_laporan', page_title='Arsip Laporan Realisasi Dapur')