import type { MissionValidation } from "../../api/missionPlanningApi";
import type { EditorConflictMap } from "./editorConflicts";
import type { EditorWork } from "./model/editorTypes";

/**
 * Проецирует авторитетные конфликты бэкенда (валидация миссии-черновика, keyed по numeric modeId)
 * на карту конфликтов редактора (keyed по workId). Включения редактора несут `planModeId` —
 * идентификатор сохранённого режима в БД; по нему и сопоставляем. Конфликты на режимах, которых
 * нет среди работ редактора (например, ещё не подгружены), молча отбрасываются.
 *
 * MVP: бэк-валидатор — заглушка и возвращает пустой список, поэтому сейчас результат пуст. Маппинг
 * написан вперёд: когда правила появятся, UI начнёт подсвечивать конкретные включения без доработок.
 */
export function validationToConflicts(validation: MissionValidation, works: EditorWork[]): EditorConflictMap {
  const workIdByModeId = new Map<number, string>();
  for (const work of works) {
    if (work.planModeId != null) {
      workIdByModeId.set(work.planModeId, work.id);
    }
  }

  const result: EditorConflictMap = {};
  for (const conflict of validation.conflicts) {
    const workId = workIdByModeId.get(conflict.modeId);
    if (!workId) continue;
    result[workId] = [...(result[workId] ?? []), conflict.message];
  }
  return result;
}
