"""
Rating model for contract reviews and feedback
"""
from datetime import datetime
from ..extensions import db
from .base import BaseModel


class Rating(BaseModel):
    """Rating/Review system for completed contracts"""
    __tablename__ = 'ratings'
    
    # Rating reference
    contract_id = db.Column(db.Integer, db.ForeignKey('contracts.id'), nullable=False)
    rater_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    rated_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    
    # Rating scores (1-5 scale)
    overall_score = db.Column(db.Float, nullable=False)
    quality_score = db.Column(db.Float)
    communication_score = db.Column(db.Float)
    reliability_score = db.Column(db.Float)
    professionalism_score = db.Column(db.Float)
    
    # Review text
    review_text = db.Column(db.Text)
    
    # Rating metadata
    rating_date = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
    is_public = db.Column(db.Boolean, default=True, nullable=False)
    
    # Relationships
    contract = db.relationship('Contract', backref='ratings')
    rater = db.relationship('User', foreign_keys=[rater_id], backref='ratings_given')
    rated = db.relationship('User', foreign_keys=[rated_id], backref='ratings_received')
    
    def __repr__(self):
        return f'<Rating {self.id}: {self.overall_score}/5>'


# For backward compatibility with Review model if it exists
Review = Rating
