@startuml
title Диаграмма деятельности - Модуль "Монитор ТА" (Web)

|Франчайзи|
start
:Открыть страницу\n"Монитор ТА";

|Система|
:Загрузить список всех ТА из БД;
:Получить актуальные данные из API;
note right
  API генерирует:
  - Состояние связи
  - Загрузку товаров
  - Денежные средства
  - Статусы оборудования
end note
:Отобразить таблицу ТА;
:Показать фильтры;

|Франчайзи|
while (Работа с монитором?) is (да)
  
  if (Применить фильтры?) then (да)
    
    partition "Применение фильтров" {
      :Выбрать фильтры;
      note right
        1. Общее состояние:
           • Зелёный (работает)
           • Красный (не работает)
           • Синий (на обслуживании)
        
        2. Тип подключения
        
        3. Дополнительные статусы
      end note
      
      :Нажать "Применить";
      
      |Система|
      :Фильтровать список ТА\nпо заданным условиям;
      
      if (Есть результаты?) then (да)
        :Отобразить отфильтрованные ТА;
        :Пересчитать "Итого автоматов";
        :Пересчитать "Денег в автоматах"\nтолько для отфильтрованных;
        :Обновить таблицу;
      else (нет)
        :Показать сообщение:\n"Нет активных торговых автоматов,\nсоответствующих заданному фильтру";
        :Обнулить счётчики;
      endif
    }
    
  elseif (Очистить фильтры?) then (да)
    |Система|
    :Сбросить все фильтры;
    :Показать все ТА;
    :Пересчитать итоги\nдля всех автоматов;
    
  elseif (Просмотреть детали ТА?) then (да)
    
    partition "Отображение данных ТА" {
      |Система|
      :Получить данные для выбранного ТА;
      
      fork
        :Из БД:\n• Информация о ТА\n• Провайдер\n• События\n• Оборудование;
      fork again
        :Из API:\n• Состояние связи\n• Загрузка товаров\n• Денежные средства\n• Статусы информации;
      fork again
        :Системное время;
      end fork
      
      :Отобразить в таблице:;
      note right
        Столбцы:
        1. No - номер ТА
        2. ТП - торговый автомат (название, адрес)
        3. Связь - индикатор связи, время
        4. Загрузка - кофе, сахар, молоко, стаканы
        5. Денежные средства - наличные, монеты
        6. События - временные метки событий
        7. Оборудование - зелёные иконки активного
        8. Информация - статусы (МОВ, БАК и т.д.)
        9. Доп. - дополнительная информация
      end note
      
      :Выделить оборудование зелёным цветом;
      :Показать статусы из API;
    }
    
  elseif (Экспорт в Excel?) then (да)
    |Система|
    :Сформировать Excel файл\nс отфильтрованными данными;
    :Предложить скачать файл;
    
  endif

endwhile (нет)

|Франчайзи|
:Закрыть страницу;

stop

@enduml