| |
|
| | |
| | backButton.addEventListener("click", async function(event){ |
| | console.log("Back button clicked"); |
| | event.preventDefault(); |
| |
|
| | if(!currentZoneId){ |
| | console.log("no configuration selected, going back directly") |
| | window.location.href = `/notebook/?effort_id=${effortId}&user_id=${userId}`; |
| | return; |
| | } |
| |
|
| | console.log("Debug BackBtn:", {userId, notebookId, currentZoneId, effortId}); |
| | try { |
| | console.log("Checking user feedback eligibility..."); |
| | |
| | const response = await fetch(`/chat_feature/user_feedback_eligibility?user_id=${userId}¬ebook_id=${notebookId}&zone_id=${currentZoneId}`); |
| | const data = await response.json(); |
| |
|
| | if (data.eligible_for_feedback) { |
| | console.log("User is eligible for feedback:", data); |
| | |
| | if(data.has_feedback){ |
| | document.getElementById("feedbackLevel").value = data.rating ||""; |
| | document.getElementById("comment").value = data.comment ||""; |
| | document.getElementById("updateNotice").style.display = "block"; |
| | } |
| | else{ |
| | document.getElementById("feedbackLevel").value = data.rating ||""; |
| | document.getElementById("comment").value = data.comment ||""; |
| | document.getElementById("updateNotice").style.display = "none"; |
| | } |
| | |
| | |
| | console.log(bootstrapFeedbackModal); |
| | if (bootstrapFeedbackModal) { |
| | console.log("Showing feedback modal"); |
| | bootstrapFeedbackModal.show(); |
| | } else { |
| | alert("Feedback modal not initialized!"); |
| | } |
| | } else { |
| | console.log("User is not eligible for feedback:", data); |
| | window.location.href = `/notebook/?effort_id=${effortId}&user_id=${userId}`; |
| | } |
| | } catch (error) { |
| | console.error('Error checking eligibility:', error); |
| | window.location.href = `/notebook/?effort_id=${effortId}&user_id=${userId}`; |
| | } |
| | }); |
| |
|
| | |
| | document.getElementById("submitFeedback").addEventListener("click", async function () { |
| | const rating = document.getElementById("feedbackLevel").value; |
| | const comment = document.getElementById("comment").value; |
| |
|
| | const payload = { |
| | user_id: userId, |
| | notebook_id: parseInt(notebookId), |
| | effort_id: parseInt(effortId), |
| | zone_id: parseInt(currentZoneId), |
| | rating: rating ? parseInt(rating) : null, |
| | comment: comment |
| | }; |
| |
|
| | try { |
| | const response = await fetch("/chat_feature/submit_feedback", { |
| | method: "POST", |
| | headers: { "Content-Type": "application/json" }, |
| | body: JSON.stringify(payload) |
| | }); |
| |
|
| | if (response.ok) { |
| | bootstrapFeedbackModal.hide(); |
| | window.location.href = `/notebook/?effort_id=${effortId}&user_id=${userId}`; |
| | } else { |
| | alert("Error submitting feedback"); |
| | } |
| | } catch (error) { |
| | console.error("Error submitting feedback:", error); |
| | alert("Error submitting feedback"); |
| | } |
| | }); |
| |
|
| | |
| | document.getElementById("skipFeedback").addEventListener("click", function () { |
| | bootstrapFeedbackModal.hide(); |
| | window.location.href = `/notebook/?effort_id=${effortId}&user_id=${userId}`; |
| | }); ------ |
| |
|
| | # #-------to post the feedback data------- |
| | @chat_feature_bp.route('/submit_feedback', methods=['POST']) |
| | @login_required |
| | def submit_feedback(): |
| | data = request.json |
| | print(data) |
| | feedback_payload = { |
| | "user_id": data.get("user_id"), |
| | "notebook_id": data.get("notebook_id"), |
| | "effort_id": data.get("effort_id"), |
| | "zone_id": data.get("zone_id"), |
| | "rating": data.get("rating"), |
| | "comment": data.get("comment"), |
| | } |
| |
|
| | response = requests.post("http://localhost:8044/feedback/", json = feedback_payload) |
| | |
| | print("Recieved Feedback", feedback_payload) |
| |
|
| | return jsonify(response.json()),response.status_code |
| |
|
| | @chat_feature_bp.route("/user_feedback_eligibility", methods=["GET"]) |
| | @login_required |
| | def user_feedback_eligibility(): |
| | user_id = request.args.get("user_id") |
| | notebook_id = request.args.get("notebook_id") |
| | zone_id = request.args.get("zone_id") |
| |
|
| | if not zone_id: |
| | return jsonify({"eligible_for_feedback": False}) |
| |
|
| | try: |
| | notebook_response = requests.get(f"http://localhost:8044/user/get_notebook_details/{notebook_id}") |
| | notebook_response.raise_for_status() |
| | chat_data = notebook_response.json().get('chat', {}).get('message', []) |
| | eligible = len(chat_data) > 0 |
| | except Exception as e: |
| | print(f"Error fetching notebook details: {e}") |
| | return jsonify({"eligible_for_feedback": False, "error": "notebook fetch failed"}), 500 |
| |
|
| | try: |
| | feedback_response = requests.get( |
| | "http://localhost:8044/feedback/", |
| | params={"user_id": user_id, "notebook_id": notebook_id, "zone_id": zone_id} |
| | ) |
| | feedback_data = feedback_response.json() if feedback_response.ok else {"exists": False} |
| | except Exception as e: |
| | print(f"Error fetching feedback: {e}") |
| | feedback_data = {"exists": False} |
| |
|
| | response = { |
| | "eligible_for_feedback": eligible, |
| | "has_feedback": feedback_data.get("exists", False) |
| | } |
| |
|
| | if feedback_data.get("exists"): |
| | response.update({ |
| | "rating": feedback_data.get("rating"), |
| | "comment": feedback_data.get("comment") |
| | }) |
| | print("User feedback eligibility response:", response) |
| | return jsonify(response) ---> this is flask ui python file and #created a api to call that create_feedback function------- |
| | @router.post("/feedback/") |
| | async def create_feedback_endpoint(feedback: Feedback): |
| | try: |
| | # result = create_feedback(user_id= feedback.user_id, notebook_id= feedback.notebook_id, effort_id= feedback.effort_id, rating= feedback.rating, comment= feedback.comment) |
| | |
| | create_or_update_feedback( |
| | user_id=feedback.user_id, |
| | notebook_id=feedback.notebook_id, |
| | effort_id=feedback.effort_id, |
| | zone_id=feedback.zone_id, |
| | rating=feedback.rating, |
| | comment=feedback.comment |
| | ) |
| | |
| | return {"message": "Feedback submitted successfully"} |
| | |
| | except Exception as e: |
| | raise HTTPException(status_code=500, detail="Failed to submit feedback") |
| |
|
| | @router.get("/feedback/") |
| | async def get_existing_feedback(user_id: str, notebook_id: str, zone_id: str): |
| | try: |
| | feedback= get_feedback(user_id, notebook_id, zone_id) |
| | if feedback: |
| | return{"exists": True, "rating": feedback["rating"], "comment": feedback["comment"]} |
| | else: |
| | return{"exists": False} |
| | except Exception as e: |
| | raise HTTPException(status_code=500, details="Failed to fetch feedback") --> this my backend api endpoint with class #feedbackModal class |
| | class Feedback(BaseModel): |
| | user_id: str |
| | notebook_id: str |
| | effort_id: str |
| | zone_id: str |
| | #rating: Optional[str] = None |
| | rating: Optional[int] = None |
| | comment: Optional[str] = None |