""" App Feedback model for storing user feedback about the platform """ from sqlalchemy import Column, Integer, String, Text, DateTime, Float, ForeignKey from sqlalchemy.orm import relationship from datetime import datetime from config.database import Base class AppFeedback(Base): """Store feedback submitted by users about the platform""" __tablename__ = 'app_feedback' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey('users.id'), nullable=True) # Feedback details feedback_type = Column(String(50), nullable=False, default='general') # general, bug, feature, improvement rating = Column(Float, nullable=True) # 1-5 stars message = Column(Text, nullable=False) # Contact info (may differ from user's email) contact_email = Column(String(255), nullable=True) submitter_name = Column(String(255), nullable=True) user_role = Column(String(50), nullable=True) # therapist, patient # Status tracking status = Column(String(50), default='new') # new, reviewed, resolved, archived reviewed_at = Column(DateTime, nullable=True) reviewed_by = Column(Integer, ForeignKey('users.id'), nullable=True) admin_notes = Column(Text, nullable=True) # Timestamps created_at = Column(DateTime, default=datetime.utcnow) # Relationships user = relationship('User', foreign_keys=[user_id], backref='feedback_submitted') def to_dict(self): return { 'id': self.id, 'user_id': self.user_id, 'feedback_type': self.feedback_type, 'rating': self.rating, 'message': self.message, 'contact_email': self.contact_email, 'submitter_name': self.submitter_name, 'user_role': self.user_role, 'status': self.status, 'reviewed_at': self.reviewed_at.isoformat() if self.reviewed_at else None, 'reviewed_by': self.reviewed_by, 'admin_notes': self.admin_notes, 'created_at': self.created_at.isoformat() if self.created_at else None }