Построение актуального меню(алгоритм удаления пустых веток)

  1. Получаем актуальное меню. Методы GetDefaultMenu, GetMenu
  2. Берем прайс товаров, каждый из которых содержит значение FamilyId
  3. Находим максимальный уровень вложенности меню по полю Level.
  4. В цикле от нижнего уровня меню к верхнему проверяем каждое семейство узла меню (по каждому Id из поля FamilyGroupIds) на наличие его продуктов в прайсе. Продукт в прайсе должен быть:
    • с признаком не блокирован,
    • с ценой больше 0,
    • в нужной валюте.
  5. Если таких продуктов нет, то помечаем сам узел меню “на удаление”.
  6. Если FamilyGroupIds для узла является пустым, то ищем хотя бы одного потомка данного узла, не помеченного “на удаление”. Если таких потомков не найдено, помечаем узел меню “на удаление”.
  7. Удаляем все узлы, помеченные “на удаление”.