from app import db
from datetime import datetime
import os

class TeamMember(db.Model):
    __tablename__ = 'team_members'
    
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    position = db.Column(db.String(100), nullable=False)
    team_type = db.Column(db.String(50), nullable=False)  # 'academic', 'technical', or 'administrative'
    description = db.Column(db.Text, nullable=False)
    avatar_initials = db.Column(db.String(10), nullable=False)
    avatar_color = db.Column(db.String(100), default='from-blue-500 to-purple-600')
    profile_picture = db.Column(db.String(255), nullable=True)  # Path to uploaded profile picture
    order = db.Column(db.Integer, default=0)
    is_active = db.Column(db.Boolean, default=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
    
    TEAM_TYPES = {
        'academic': 'Academic Team',
        'technical': 'Technical Team',
        'administrative': 'Administrative Team'
    }
    
    AVATAR_COLORS = [
        'from-blue-500 to-purple-600',
        'from-green-500 to-blue-600',
        'from-purple-500 to-pink-600',
        'from-orange-500 to-red-600',
        'from-teal-500 to-green-600',
        'from-indigo-500 to-purple-600',
        'from-yellow-500 to-orange-600',
        'from-pink-500 to-rose-600',
        'from-cyan-500 to-blue-600',
    ]
    
    def get_profile_picture_url(self):
        """Get the URL for the profile picture or None if not available"""
        if self.profile_picture:
            return f'/static/uploads/team_members/{self.profile_picture}'
        return None
    
    def to_dict(self):
        return {
            'id': self.id,
            'name': self.name,
            'position': self.position,
            'team_type': self.team_type,
            'description': self.description,
            'avatar_initials': self.avatar_initials,
            'avatar_color': self.avatar_color,
            'profile_picture': self.get_profile_picture_url(),
            'order': self.order,
            'is_active': self.is_active,
            'team_label': self.TEAM_TYPES.get(self.team_type, self.team_type)
        }
    
    def __repr__(self):
        return f'<TeamMember {self.name}>'
