Hadeeratef91 commited on
Commit
71b017d
·
verified ·
1 Parent(s): 85b0ca0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -9
app.py CHANGED
@@ -1,9 +1,8 @@
1
  import streamlit as st
2
- import pandas as pd
3
- import os
4
  import sqlite3
5
  from datetime import datetime
6
  from passlib.hash import bcrypt
 
7
 
8
  st.set_page_config(page_title="نظام إدارة الشكاوى", layout="centered")
9
 
@@ -66,14 +65,12 @@ if not st.session_state.is_logged_in:
66
  elif st.session_state.user_type == "sender":
67
  st.title("📨 إرسال شكوى جديدة")
68
 
69
- # استخدام دالة callback لمسح محتوى الشكوى
70
  def clear_complaint():
71
  st.session_state.complaint_input = ""
72
 
73
  complaint_text = st.text_area("📝 وصف الشكوى", key="complaint_input")
74
 
75
  if st.button("📤 إرسال الشكوى", on_click=clear_complaint):
76
- # التحقق من أن النص ليس فارغاً أو يحتوي على مسافات فقط
77
  if not complaint_text or not complaint_text.strip():
78
  st.warning("⚠️ الرجاء إدخال نص الشكوى.")
79
  else:
@@ -88,17 +85,57 @@ elif st.session_state.user_type == "sender":
88
  st.warning("⚠️ تم إرسال هذه الشكوى مسبقًا بناءً على المعرف!")
89
  else:
90
  timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
91
- c.execute("INSERT INTO complaints (complaint_id, username, complaint_text, status, response, timestamp, user_comment) VALUES (?, ?, ?, ?, ?, ?, ?)",
92
- (complaint_id, st.session_state.username, complaint_text.strip(), "Pending", "", timestamp, ""))
 
 
 
93
  conn.commit()
94
  st.success("✅ تم تقديم الشكوى بنجاح")
95
  st.rerun()
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  # مستقبل الشكوى (الـ admin أو الموظف)
98
  elif st.session_state.user_type == "receiver":
99
  st.title("📬 إدارة الشكاوى")
100
 
101
- # تنبيه بوجود شكاوى جديدة
102
  c.execute("SELECT COUNT(*) FROM complaints WHERE status = 'Pending'")
103
  pending_count = c.fetchone()[0]
104
  if pending_count > 0:
@@ -122,11 +159,14 @@ elif st.session_state.user_type == "receiver":
122
  if selected_row[7]:
123
  st.info(f"🗣️ تعليق المستخدم على الرد: {selected_row[7]}")
124
 
125
- new_status = st.selectbox("🔄 تحديث الحالة", ["Pending", "In Progress", "Resolved"], index=["Pending", "In Progress", "Resolved"].index(selected_row[4]))
 
 
126
  new_response = st.text_area("💬 الرد على الشكوى", value=selected_row[5] or "")
127
 
128
  if st.button("💾 حفظ التعديلات"):
129
- c.execute("UPDATE complaints SET status=?, response=? WHERE complaint_id=?", (new_status, new_response.strip(), selected_row[1]))
 
130
  conn.commit()
131
  st.success("✅ تم حفظ التعديلات")
132
  st.rerun()
 
1
  import streamlit as st
 
 
2
  import sqlite3
3
  from datetime import datetime
4
  from passlib.hash import bcrypt
5
+ import os
6
 
7
  st.set_page_config(page_title="نظام إدارة الشكاوى", layout="centered")
8
 
 
65
  elif st.session_state.user_type == "sender":
66
  st.title("📨 إرسال شكوى جديدة")
67
 
 
68
  def clear_complaint():
69
  st.session_state.complaint_input = ""
70
 
71
  complaint_text = st.text_area("📝 وصف الشكوى", key="complaint_input")
72
 
73
  if st.button("📤 إرسال الشكوى", on_click=clear_complaint):
 
74
  if not complaint_text or not complaint_text.strip():
75
  st.warning("⚠️ الرجاء إدخال نص الشكوى.")
76
  else:
 
85
  st.warning("⚠️ تم إرسال هذه الشكوى مسبقًا بناءً على المعرف!")
86
  else:
87
  timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
88
+ c.execute("""INSERT INTO complaints
89
+ (complaint_id, username, complaint_text, status, response, timestamp, user_comment)
90
+ VALUES (?, ?, ?, ?, ?, ?, ?)""",
91
+ (complaint_id, st.session_state.username, complaint_text.strip(),
92
+ "Pending", "", timestamp, ""))
93
  conn.commit()
94
  st.success("✅ تم تقديم الشكوى بنجاح")
95
  st.rerun()
96
 
97
+ st.subheader("📋 الشكاوى السابقة")
98
+ c.execute("SELECT * FROM complaints WHERE username=? ORDER BY id DESC", (st.session_state.username,))
99
+ complaints = c.fetchall()
100
+
101
+ for row in complaints:
102
+ comp_id, username, text, status, response, timestamp, user_comment = row[1:]
103
+ with st.expander(f"📨 {comp_id} | الحالة: {status}"):
104
+ st.write(f"📅 تم الإرسال في: {timestamp}")
105
+ st.write(f"📄 الشكوى: {text}")
106
+
107
+ if status.lower() == "pending":
108
+ new_text = st.text_area("📝 تعديل الشكوى", value=text, key=f"edit_{comp_id}")
109
+ if st.button("💾 حفظ التعديل", key=f"save_{comp_id}"):
110
+ if new_text.strip():
111
+ c.execute("UPDATE complaints SET complaint_text=? WHERE complaint_id=?",
112
+ (new_text.strip(), comp_id))
113
+ conn.commit()
114
+ st.success("✅ تم تعديل الشكوى")
115
+ st.rerun()
116
+ else:
117
+ st.warning("⚠️ لا يمكن حفظ شكوى فارغة")
118
+ else:
119
+ if response:
120
+ st.success(f"💬 الرد: {response}")
121
+ if not user_comment:
122
+ comment = st.text_area("✏️ تعليقك على الرد", key=f"comment_{comp_id}")
123
+ if st.button("📩 إرسال التعليق", key=f"send_comment_{comp_id}"):
124
+ if comment.strip():
125
+ c.execute("UPDATE complaints SET user_comment=? WHERE complaint_id=?",
126
+ (comment.strip(), comp_id))
127
+ conn.commit()
128
+ st.success("✅ تم إرسال التعليق بنجاح")
129
+ st.rerun()
130
+ else:
131
+ st.warning("⚠️ لا يمكن إرسال تعليق فارغ")
132
+ else:
133
+ st.info(f"🗣️ تعليقك السابق: {user_comment}")
134
+
135
  # مستقبل الشكوى (الـ admin أو الموظف)
136
  elif st.session_state.user_type == "receiver":
137
  st.title("📬 إدارة الشكاوى")
138
 
 
139
  c.execute("SELECT COUNT(*) FROM complaints WHERE status = 'Pending'")
140
  pending_count = c.fetchone()[0]
141
  if pending_count > 0:
 
159
  if selected_row[7]:
160
  st.info(f"🗣️ تعليق المستخدم على الرد: {selected_row[7]}")
161
 
162
+ new_status = st.selectbox("🔄 تحديث الحالة",
163
+ ["Pending", "In Progress", "Resolved"],
164
+ index=["Pending", "In Progress", "Resolved"].index(selected_row[4]))
165
  new_response = st.text_area("💬 الرد على الشكوى", value=selected_row[5] or "")
166
 
167
  if st.button("💾 حفظ التعديلات"):
168
+ c.execute("UPDATE complaints SET status=?, response=? WHERE complaint_id=?",
169
+ (new_status, new_response.strip(), selected_row[1]))
170
  conn.commit()
171
  st.success("✅ تم حفظ التعديلات")
172
  st.rerun()