"""Self-hosted employee directory.

For sites with no external HR database. When employee_directory_mode is
'selfhosted', the employee lookup APIs read this app-owned table instead of the
external directory, and the directory is managed in-app (CRUD + CSV import).

to_dict emits the same keys the external contract returns (SSO, First_Name,
Last_Name, Team, Role, Picture) so the frontend and both modes share one shape.
"""

from shopdb.api import db


class DirectoryEmployee(db.Model):
    __tablename__ = 'directoryemployees'

    sso = db.Column(db.Integer, primary_key=True, autoincrement=False)
    firstname = db.Column(db.String(100), nullable=False)
    lastname = db.Column(db.String(100), nullable=False)
    team = db.Column(db.String(100))
    role = db.Column(db.String(100))
    picture = db.Column(db.String(255))

    def to_dict(self):
        # Keys match the external employees contract the frontend consumes.
        return {
            'SSO': self.sso,
            'First_Name': self.firstname,
            'Last_Name': self.lastname,
            'Team': self.team,
            'Role': self.role,
            'Picture': self.picture,
        }
