from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

db = SQLAlchemy()

class Room(db.Model):
    __tablename__ = 'rooms'
    
    id = db.Column(db.Integer, primary_key=True)
    inspection_id = db.Column(db.Integer, db.ForeignKey('inspections.id'), nullable=False)
    room_name = db.Column(db.String(100), nullable=False)
    room_type = db.Column(db.String(50), nullable=False)  # Living Room, Kitchen, etc.
    
    # Room-specific inspection data
    flooring_condition = db.Column(db.String(20), default='Satisfactory')
    flooring_notes = db.Column(db.Text)
    flooring_photos = db.Column(db.Text)  # JSON array of photo URLs
    
    windows_condition = db.Column(db.String(20), default='Satisfactory')
    windows_notes = db.Column(db.Text)
    windows_photos = db.Column(db.Text)
    
    electrical_condition = db.Column(db.String(20), default='Satisfactory')
    electrical_notes = db.Column(db.Text)
    electrical_photos = db.Column(db.Text)
    
    plumbing_condition = db.Column(db.String(20), default='Satisfactory')
    plumbing_notes = db.Column(db.Text)
    plumbing_photos = db.Column(db.Text)
    
    hvac_condition = db.Column(db.String(20), default='Satisfactory')
    hvac_notes = db.Column(db.Text)
    hvac_photos = db.Column(db.Text)
    
    walls_ceiling_condition = db.Column(db.String(20), default='Satisfactory')
    walls_ceiling_notes = db.Column(db.Text)
    walls_ceiling_photos = db.Column(db.Text)
    
    fixtures_condition = db.Column(db.String(20), default='Satisfactory')
    fixtures_notes = db.Column(db.Text)
    fixtures_photos = db.Column(db.Text)
    
    # Room-specific checklist items (JSON)
    checklist_items = db.Column(db.Text)  # JSON array of checklist items
    
    # Voice memos
    voice_memos = db.Column(db.Text)  # JSON array of voice memo URLs
    
    # Additional notes
    additional_notes = db.Column(db.Text)
    
    # Timestamps
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
    
    # Relationship
    inspection = db.relationship('Inspection', backref=db.backref('rooms', lazy=True))
    
    def to_dict(self):
        return {
            'id': self.id,
            'inspection_id': self.inspection_id,
            'room_name': self.room_name,
            'room_type': self.room_type,
            'flooring_condition': self.flooring_condition,
            'flooring_notes': self.flooring_notes,
            'flooring_photos': self.flooring_photos,
            'windows_condition': self.windows_condition,
            'windows_notes': self.windows_notes,
            'windows_photos': self.windows_photos,
            'electrical_condition': self.electrical_condition,
            'electrical_notes': self.electrical_notes,
            'electrical_photos': self.electrical_photos,
            'plumbing_condition': self.plumbing_condition,
            'plumbing_notes': self.plumbing_notes,
            'plumbing_photos': self.plumbing_photos,
            'hvac_condition': self.hvac_condition,
            'hvac_notes': self.hvac_notes,
            'hvac_photos': self.hvac_photos,
            'walls_ceiling_condition': self.walls_ceiling_condition,
            'walls_ceiling_notes': self.walls_ceiling_notes,
            'walls_ceiling_photos': self.walls_ceiling_photos,
            'fixtures_condition': self.fixtures_condition,
            'fixtures_notes': self.fixtures_notes,
            'fixtures_photos': self.fixtures_photos,
            'checklist_items': self.checklist_items,
            'voice_memos': self.voice_memos,
            'additional_notes': self.additional_notes,
            'created_at': self.created_at.isoformat() if self.created_at else None,
            'updated_at': self.updated_at.isoformat() if self.updated_at else None
        }

