# -*- coding: utf-8 -*-
# hub/ticket/application/specialist_assignment_service.py

"""Application-сервис назначения специалистов в Ticket."""

from __future__ import annotations

from domain.task import TicketTask
from state import TicketStateApi


SPECIALIST_PHOTOS = {
    "Иванов Алексей Сергеевич": "specialist1.png",
    "Петрова Мария Владимировна": "specialist2.png",
    "Сидоров Дмитрий Иванович": "specialist3.png",
    "Козлова Анна Петровна": "specialist4.png",
    "Васильев Сергей Николаевич": "specialist5.png",
    "Николаева Ольга Дмитриевна": "specialist6.png",
    "Фёдоров Андрей Викторович": "specialist7.png",
    "Орлова Екатерина Александровна": "specialist8.png",
}


class SpecialistAssignmentService:
    """Команда назначения специалиста поверх канонического state API."""

    def __init__(self, state: TicketStateApi):
        self._state = state

    def assign_specialist(self, task_id: int, specialist_name: str):
        """Назначить специалиста и сохранить фотографию профиля."""
        snapshot = self._state.get_task(task_id)
        if snapshot is None:
            return None
        task_data = TicketTask.from_snapshot(snapshot).to_record()
        task_data["assigned_specialist"] = specialist_name
        task_data["specialist_photo"] = SPECIALIST_PHOTOS.get(specialist_name, "")
        return self._state.update_task(task_data)

    def list_specialists(self) -> list[str]:
        """Вернуть канонический список доступных специалистов."""
        return list(SPECIALIST_PHOTOS.keys())
