import streamlit as st import os import mysql.connector import time # Fungsi untuk mendapatkan gambar sebagai base64 def get_image_as_base64(image_path): import base64 with open(image_path, "rb") as img_file: return base64.b64encode(img_file.read()).decode("utf-8") # Fungsi untuk koneksi ke database def connect_to_db(): try: conn = mysql.connector.connect( host=st.secrets["mysql"]["host"], user=st.secrets["mysql"]["user"], password=st.secrets["mysql"]["password"], database=st.secrets["mysql"]["dbname"], port=st.secrets["mysql"]["port"] ) return conn except mysql.connector.Error as e: st.error(f"Koneksi ke database gagal: {e}") return None # Fungsi untuk menyimpan data ke database def save_employee_comment(employee_id, comment): conn = connect_to_db() if conn: try: query = """ INSERT INTO employee_comments (employee_id, comment, created_at) VALUES (%s, %s, NOW()) """ cursor = conn.cursor() cursor.execute(query, (employee_id, comment)) conn.commit() st.success("Komentar berhasil disimpan. Terima kasih atas masukan Anda!") except mysql.connector.Error as e: st.error(f"Terjadi kesalahan saat menyimpan komentar: {e}") finally: conn.close() def update_total_comments(employee_id): conn = connect_to_db() if conn: try: # Hitung jumlah komentar dari employee_comments berdasarkan employee_id cursor = conn.cursor() query_count = """ SELECT COUNT(*) FROM employee_comments WHERE employee_id = %s """ cursor.execute(query_count, (employee_id,)) total_comments = cursor.fetchone()[0] # Update total_komp di data_employee_db query_update = """ UPDATE data_employee_db SET total_komp = %s WHERE employee_id = %s """ cursor.execute(query_update, (total_comments, employee_id)) conn.commit() st.success(f"Total komentar untuk Employee ID {employee_id} berhasil diperbarui: {total_comments}") except mysql.connector.Error as e: st.error(f"Terjadi kesalahan saat memperbarui total komentar: {e}") finally: conn.close() # Fungsi untuk menampilkan navbar def navbar(): current_page = st.session_state.get("page", "Home") logo_path = os.path.join(os.path.dirname(__file__), "../asset/logo.png") # Cek status login if 'logged_in' in st.session_state and st.session_state['logged_in']: login_button_text = "Logout" login_button_link = "?page=Login&logout=true" # Tambahkan parameter logout else: login_button_text = "Logout" login_button_link = "?page=Login" st.markdown( f""" """, unsafe_allow_html=True, ) def show_karyawan_komen(): # Navbar navbar() st.markdown(""" """, unsafe_allow_html=True) st.markdown( """

Form Komplain

""", unsafe_allow_html=True ) # Inisialisasi session state if "submit_success" not in st.session_state: st.session_state.submit_success = False if "employee_id" not in st.session_state: st.session_state.employee_id = "" # Jika data berhasil disimpan, tampilkan pesan sukses dan tombol kembali if st.session_state.submit_success: st.success("Komentar berhasil disimpan. Terima kasih atas masukan Anda!") if st.button("Kembali ke Form Awal"): st.session_state.submit_success = False st.session_state.employee_id = "" st.rerun() return # Penting: hentikan eksekusi fungsi di sini # Form input (hanya ditampilkan jika submit_success adalah False) employee_id = st.text_input( "Masukkan Employee ID Anda", value=st.session_state.employee_id, placeholder="Contoh: EM12345" ) comment = st.text_area("Tuliskan Komentar atau Keluhan Anda") if st.button("Submit"): if not employee_id or not comment: st.error("Harap isi semua bidang sebelum mengirimkan.") else: save_employee_comment(employee_id, comment) update_total_comments(employee_id) st.session_state.submit_success = True st.session_state.employee_id = employee_id st.rerun() # Gunakan experimental_rerun() untuk memuat ulang halaman # Footer st.markdown( """ """, unsafe_allow_html=True ) # Jalankan fungsi show_pimpinan_form if __name__ == "__main__": show_karyawan_komen()