from controllers.types import Todos
from features.format import VIEWER, shaped
from engine.record import Record
from features.parts import Command, Context
from resources.base import SYSTEM


class ShowTicketTodos(Command):
    name = "todos"

    def run(self, context: Context, tickets):
        held = []
        for ticket in [t for t in tickets.rows.standing() if t.work_environment]:
            place = Record(context.record.root, ticket.work_environment)
            rows = [shaped(todo, place, VIEWER) for todo in Todos(place, actor=SYSTEM).rows.standing()]
            if rows:
                held.append({"ticket": ticket.n, "title": ticket.title, "env": ticket.work_environment, "todos": rows})
        return held
