rairo commited on
Commit
d737e40
·
verified ·
1 Parent(s): de0f305

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +110 -0
main.py CHANGED
@@ -790,6 +790,116 @@ def admin_update_credits(uid):
790
  return jsonify({'success': True, 'new_total_credits': new_total})
791
  except Exception as e: return jsonify({'error': str(e)}), 500
792
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
793
  # -----------------------------------------------------------------------------
794
  # 7. MAIN EXECUTION
795
  # -----------------------------------------------------------------------------
 
790
  return jsonify({'success': True, 'new_total_credits': new_total})
791
  except Exception as e: return jsonify({'error': str(e)}), 500
792
 
793
+ @app.route('/api/admin/feedback', methods=['GET'])
794
+ def list_feedback():
795
+ """List all feedback submissions for admin review."""
796
+ try:
797
+ verify_admin(request.headers.get('Authorization', ''))
798
+
799
+ # Get all feedback from Firebase
800
+ all_feedback = db.reference('feedback').get() or {}
801
+
802
+ # Convert to list format with feedback IDs
803
+ feedback_list = []
804
+ for feedback_id, feedback_data in all_feedback.items():
805
+ feedback_item = {
806
+ 'id': feedback_id,
807
+ **feedback_data
808
+ }
809
+ feedback_list.append(feedback_item)
810
+
811
+ # Sort by created_at (most recent first) if timestamp exists
812
+ feedback_list.sort(key=lambda x: x.get('created_at', ''), reverse=True)
813
+
814
+ return jsonify({'feedback': feedback_list}), 200
815
+
816
+ except Exception as e:
817
+ traceback.print_exc()
818
+ return jsonify({'error': str(e)}), 500
819
+
820
+
821
+ @app.route('/api/admin/feedback/<string:feedback_id>', methods=['PUT'])
822
+ def update_feedback_status(feedback_id):
823
+ """Update feedback status (e.g., mark as reviewed, resolved, etc.)"""
824
+ try:
825
+ admin_uid = verify_admin(request.headers.get('Authorization', ''))
826
+
827
+ # Check if feedback exists
828
+ feedback_ref = db.reference(f'feedback/{feedback_id}')
829
+ feedback_data = feedback_ref.get()
830
+
831
+ if not feedback_data:
832
+ return jsonify({'error': 'Feedback not found'}), 404
833
+
834
+ # Get the new status from request
835
+ request_data = request.get_json()
836
+ new_status = request_data.get('status')
837
+
838
+ # Validate status
839
+ valid_statuses = ['open', 'reviewed', 'resolved', 'closed']
840
+ if new_status not in valid_statuses:
841
+ return jsonify({'error': f'Status must be one of: {", ".join(valid_statuses)}'}), 400
842
+
843
+ # Update feedback with new status and admin info
844
+ update_data = {
845
+ 'status': new_status,
846
+ 'processed_by': admin_uid,
847
+ 'processed_at': datetime.utcnow().isoformat()
848
+ }
849
+
850
+ # Add admin notes if provided
851
+ admin_notes = request_data.get('admin_notes')
852
+ if admin_notes:
853
+ update_data['admin_notes'] = admin_notes
854
+
855
+ feedback_ref.update(update_data)
856
+
857
+ return jsonify({
858
+ 'success': True,
859
+ 'message': f'Feedback status updated to {new_status}',
860
+ 'feedback_id': feedback_id
861
+ }), 200
862
+
863
+ except Exception as e:
864
+ traceback.print_exc()
865
+ return jsonify({'error': str(e)}), 500
866
+
867
+
868
+ @app.route('/api/admin/feedback/<string:feedback_id>', methods=['GET'])
869
+ def get_feedback_details(feedback_id):
870
+ """Get detailed view of a specific feedback item."""
871
+ try:
872
+ verify_admin(request.headers.get('Authorization', ''))
873
+
874
+ # Get feedback details
875
+ feedback_ref = db.reference(f'feedback/{feedback_id}')
876
+ feedback_data = feedback_ref.get()
877
+
878
+ if not feedback_data:
879
+ return jsonify({'error': 'Feedback not found'}), 404
880
+
881
+ # Add the feedback ID to the response
882
+ feedback_details = {
883
+ 'id': feedback_id,
884
+ **feedback_data
885
+ }
886
+
887
+ # Optionally get user details if user_id is present
888
+ if 'user_id' in feedback_data:
889
+ user_ref = db.reference(f'users/{feedback_data["user_id"]}')
890
+ user_data = user_ref.get()
891
+ if user_data:
892
+ feedback_details['user_details'] = {
893
+ 'email': user_data.get('email'),
894
+ 'name': user_data.get('name'),
895
+ 'created_at': user_data.get('created_at')
896
+ }
897
+
898
+ return jsonify({'feedback': feedback_details}), 200
899
+
900
+ except Exception as e:
901
+ traceback.print_exc()
902
+ return jsonify({'error': str(e)}), 500
903
  # -----------------------------------------------------------------------------
904
  # 7. MAIN EXECUTION
905
  # -----------------------------------------------------------------------------