
# ================================================================
# ROUTE WALI SANTRI (MOBILE-FIRST)
# ================================================================

@app.route('/wali/dashboard')
@wali_login_required
def wali_dashboard():
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    
    id_santri = session.get('wali_santri_id')
    tabel_asal = session.get('wali_tabel')
    
    # Ambil info dasar
    if tabel_asal == 'databasemaster':
        cursor.execute("SELECT * FROM databasemaster WHERE id_santri = %s", (id_santri,))
    else:
        cursor.execute("SELECT * FROM datasiswa WHERE id_pendaftaran = %s", (id_santri,))
        
    santri = cursor.fetchone()
    
    # Ambil pengumuman terbaru
    cursor.execute("SELECT * FROM pengumuman ORDER BY tanggal_posting DESC LIMIT 3")
    pengumuman = cursor.fetchall()
    
    # Ringkasan Tagihan (hanya jika ada di databasemaster, asumsikan gitu atau dari tagihan_santri)
    cursor.execute("SELECT IFNULL(SUM(nominal - jumlah_dibayar), 0) as sisa_tagihan FROM tagihan_santri WHERE id_santri = %s AND status != 'lunas'", (id_santri,))
    tagihan = cursor.fetchone()
    
    cursor.close()
    koneksi_db.close()
    
    return render_template('wali/dashboard.html', santri=santri, pengumuman=pengumuman, sisa_tagihan=tagihan['sisa_tagihan'] if tagihan else 0, tabel_asal=tabel_asal)

@app.route('/wali/biodata')
@wali_login_required
def wali_biodata():
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    id_santri = session.get('wali_santri_id')
    tabel_asal = session.get('wali_tabel')
    
    if tabel_asal == 'databasemaster':
        cursor.execute("SELECT * FROM databasemaster WHERE id_santri = %s", (id_santri,))
    else:
        cursor.execute("SELECT * FROM datasiswa WHERE id_pendaftaran = %s", (id_santri,))
        
    santri = cursor.fetchone()
    cursor.close()
    koneksi_db.close()
    
    return render_template('wali/biodata.html', santri=santri)

@app.route('/wali/tagihan')
@wali_login_required
def wali_tagihan():
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    id_santri = session.get('wali_santri_id')
    
    # Tagihan belum lunas
    cursor.execute("SELECT * FROM tagihan_santri WHERE id_santri = %s AND status != 'lunas' ORDER BY tanggal_tagihan DESC", (id_santri,))
    tagihan_belum = cursor.fetchall()
    
    # Tagihan lunas (Riwayat)
    cursor.execute("SELECT * FROM tagihan_santri WHERE id_santri = %s AND status = 'lunas' ORDER BY tanggal_lunas DESC LIMIT 20", (id_santri,))
    tagihan_lunas = cursor.fetchall()
    
    cursor.close()
    koneksi_db.close()
    
    return render_template('wali/tagihan.html', tagihan_belum=tagihan_belum, tagihan_lunas=tagihan_lunas)

@app.route('/wali/pengumuman')
@wali_login_required
def wali_pengumuman():
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    cursor.execute("SELECT * FROM pengumuman ORDER BY tanggal_posting DESC")
    pengumuman = cursor.fetchall()
    cursor.close()
    koneksi_db.close()
    
    return render_template('wali/pengumuman.html', pengumuman=pengumuman)

@app.route('/wali/kartu')
@wali_login_required
def wali_kartu():
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    id_santri = session.get('wali_santri_id')
    tabel_asal = session.get('wali_tabel')
    
    if tabel_asal == 'databasemaster':
        cursor.execute("SELECT * FROM databasemaster WHERE id_santri = %s", (id_santri,))
    else:
        cursor.execute("SELECT * FROM datasiswa WHERE id_pendaftaran = %s", (id_santri,))
        
    santri = cursor.fetchone()
    
    # Ambil desain ID Card aktif
    cursor.execute("SELECT * FROM template_idcard WHERE is_active = 1 LIMIT 1")
    template_aktif = cursor.fetchone()
    
    cursor.close()
    koneksi_db.close()
    
    return render_template('wali/kartu.html', row=santri, template_aktif=template_aktif)

@app.route('/wali/kitab')
@wali_login_required
def wali_kitab():
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    cursor.execute("SELECT * FROM kitab_wirid WHERE aktif = 1 ORDER BY urutan ASC")
    kitab_list = cursor.fetchall()
    cursor.close()
    koneksi_db.close()
    
    return render_template('wali/kitab.html', kitab_list=kitab_list)

@app.route('/wali/kitab/<id_kitab>')
@wali_login_required
def wali_baca_kitab(id_kitab):
    halaman = int(request.args.get('h', 1))
    
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    
    # Ambil info kitab
    cursor.execute("SELECT * FROM kitab_wirid WHERE id = %s", (id_kitab,))
    kitab = cursor.fetchone()
    
    # Ambil halaman spesifik
    cursor.execute("SELECT * FROM kitab_wirid_halaman WHERE id_kitab = %s AND nomor_halaman = %s", (id_kitab, halaman))
    konten_hal = cursor.fetchone()
    
    # Cek total halaman untuk pagination
    cursor.execute("SELECT MAX(nomor_halaman) as max_hal FROM kitab_wirid_halaman WHERE id_kitab = %s", (id_kitab,))
    total_hal = cursor.fetchone()['max_hal'] or 1
    
    cursor.close()
    koneksi_db.close()
    
    return render_template('wali/baca_kitab.html', kitab=kitab, konten=konten_hal, halaman=halaman, total_hal=total_hal)

@app.route('/wali/kontak')
@wali_login_required
def wali_kontak():
    # Menggunakan profil web atau tabel pengaturan jika ada. 
    # Untuk contoh ini, kita hardcode atau fetch dari profil jika ada tabel profil_web
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    try:
        cursor.execute("SELECT * FROM profil_web LIMIT 1")
        profil = cursor.fetchone()
    except:
        profil = None
    finally:
        cursor.close()
        koneksi_db.close()
        
    return render_template('wali/kontak.html', profil=profil)

@app.route('/wali/menu')
@wali_login_required
def wali_menu():
    return render_template('wali/menu.html')

@app.route('/wali/logout')
def wali_logout():
    session.pop('wali_santri_id', None)
    session.pop('wali_santri_nama', None)
    session.pop('wali_tabel', None)
    return redirect('/login_siswa')

