
# ================================================================
# ROUTE ADMIN DATABASE - KELOLA KITAB WIRID
# ================================================================

@app.route('/admin_database/kitab', methods=['GET', 'POST'])
@login_required(role='admin_database')
def admin_kitab():
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    
    if request.method == 'POST':
        judul = request.form.get('judul')
        deskripsi = request.form.get('deskripsi')
        urutan = request.form.get('urutan', 0)
        
        try:
            cursor.execute("INSERT INTO kitab_wirid (judul, deskripsi, urutan) VALUES (%s, %s, %s)", (judul, deskripsi, urutan))
            koneksi_db.commit()
            flash('Kitab baru berhasil ditambahkan!', 'success')
        except Exception as e:
            flash(f'Gagal menambahkan kitab: {e}', 'danger')
            
        return redirect('/admin_database/kitab')
        
    cursor.execute("SELECT * FROM kitab_wirid ORDER BY urutan ASC")
    kitab_list = cursor.fetchall()
    
    cursor.close()
    koneksi_db.close()
    
    return render_template('admin_database/kitab.html', kitab_list=kitab_list)

@app.route('/admin_database/kitab/hapus/<id>')
@login_required(role='admin_database')
def admin_kitab_hapus(id):
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor()
    try:
        cursor.execute("DELETE FROM kitab_wirid WHERE id = %s", (id,))
        koneksi_db.commit()
        flash('Kitab berhasil dihapus.', 'success')
    except Exception as e:
        flash(f'Gagal menghapus kitab: {e}', 'danger')
    finally:
        cursor.close()
        koneksi_db.close()
    return redirect('/admin_database/kitab')

@app.route('/admin_database/kitab/<id_kitab>/halaman', methods=['GET', 'POST'])
@login_required(role='admin_database')
def admin_kitab_halaman(id_kitab):
    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()
    
    if not kitab:
        return redirect('/admin_database/kitab')
        
    if request.method == 'POST':
        nomor_halaman = request.form.get('nomor_halaman')
        judul_halaman = request.form.get('judul_halaman')
        konten_arab = request.form.get('konten_arab')
        konten_latin = request.form.get('konten_latin')
        konten_terjemah = request.form.get('konten_terjemah')
        
        try:
            cursor.execute("""
                INSERT INTO kitab_wirid_halaman (id_kitab, nomor_halaman, judul_halaman, konten_arab, konten_latin, konten_terjemah) 
                VALUES (%s, %s, %s, %s, %s, %s)
                ON DUPLICATE KEY UPDATE 
                judul_halaman=VALUES(judul_halaman), konten_arab=VALUES(konten_arab), 
                konten_latin=VALUES(konten_latin), konten_terjemah=VALUES(konten_terjemah)
            """, (id_kitab, nomor_halaman, judul_halaman, konten_arab, konten_latin, konten_terjemah))
            koneksi_db.commit()
            flash('Halaman berhasil disimpan!', 'success')
        except Exception as e:
            flash(f'Gagal menyimpan halaman: {e}', 'danger')
            
        return redirect(f'/admin_database/kitab/{id_kitab}/halaman')
        
    cursor.execute("SELECT * FROM kitab_wirid_halaman WHERE id_kitab = %s ORDER BY nomor_halaman ASC", (id_kitab,))
    halaman_list = cursor.fetchall()
    
    cursor.close()
    koneksi_db.close()
    
    return render_template('admin_database/kitab_halaman.html', kitab=kitab, halaman_list=halaman_list)

@app.route('/admin_database/kitab_halaman/hapus/<id_halaman>')
@login_required(role='admin_database')
def admin_kitab_halaman_hapus(id_halaman):
    koneksi_db = ambil_koneksi()
    cursor = koneksi_db.cursor(dictionary=True)
    try:
        cursor.execute("SELECT id_kitab FROM kitab_wirid_halaman WHERE id = %s", (id_halaman,))
        id_kitab = cursor.fetchone()['id_kitab']
        
        cursor.execute("DELETE FROM kitab_wirid_halaman WHERE id = %s", (id_halaman,))
        koneksi_db.commit()
        flash('Halaman berhasil dihapus.', 'success')
        return redirect(f'/admin_database/kitab/{id_kitab}/halaman')
    except Exception as e:
        flash(f'Gagal menghapus halaman: {e}', 'danger')
        return redirect('/admin_database/kitab')
    finally:
        cursor.close()
        koneksi_db.close()
