from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.orm import relationship

from models.base import Base, TimestampMixin


class CourseAllocation(Base, TimestampMixin):
    __tablename__ = 'course_allocation'
    id = Column(Integer, primary_key=True, autoincrement=True, index=True)
    course_id = Column(Integer, ForeignKey('course.id'), nullable=False)
    staff_id = Column(Integer, ForeignKey('staff.id'), nullable=False)
    role_id = Column(Integer, ForeignKey('roles.id'), nullable=False)
    course = relationship("Course")
    staff = relationship("Staff")
    role = relationship("Role")

    @property
    def course_name(self):
        return self.course.name

    @property
    def staff_name(self):
        return f"{self.staff.first_name} {self.staff.last_name}"

    @property
    def staff_role(self):
        return self.role.label
