export const DEFAULT_ACTIONS = {
  ROW_CREATE: 'Создание строки',
  ROW_DELETE: 'Удаление строки',
  ACCESS_EXTEND: 'Продление этапа',
  ACCESS_WINDOW_CHANGE: 'Изменение этапа',
  USER_ROLE_CHANGE: 'Изменение роли пользователя',
  CREATE_TASK: 'Создание задачи',
  // UPDATE_TASK: 'Обновление задачи', //сейчас нет события
  // DELETE_TASK: 'Удаление задачи',
  USER_CREATE: 'Создание пользователя',
  USER_ACCESS_GRANTED: 'Предоставление доступа к ССП/РФ',
  USER_ACCESS_REVOKED: 'Отмена доступа к ССП/РФ',
  VSP_CREATE: 'Создание ВСП',
  VSP_UPDATE: 'Обновление ВСП',
  DELETE_VSP: 'Удаление ВСП',
  PROJECT_CREATE: 'Создание проекта',
  PROJECT_DELETE: 'Удаление проекта',
};

export const ENTITY_RUSSIAN_NAMES = {
  ROW: ['строки', 'строка'],
  PROJECT: ['проекта', 'проект'],
  TABLE: ['таблицы', 'таблица'],
  STAGE: ['этапа', 'этап'],
  SSP: ['ССП/РФ', 'ССП/РФ'],
  TASKS: ['задач', 'задачи'],
  TASK: ['задачи', 'задача'],
  USER_ACCESS: ['доступа к ССП/РФ', 'доступ к ССП/РФ'],
  USER: ['пользователя', 'пользователь'],
  ACCESS_WINDOW: ['этапа', 'этап'],
  ACCESS: ['этапа', 'этап'],
  USER_ROLE: ['роли пользователя', 'роль пользователя'],
  VSP: ['ВСП', 'ВСП'],
};

export const ACTION_RUSSIAN_NAMES = {
  CREATE: 'Создание',
  UPDATE: 'Обновление',
  DELETE: 'Удаление',
  CHANGE: 'Изменение',
  GET: 'Получение',
  GRANTED: 'Предоставление',
  REVOKED: 'Отмена',
  EXTEND: 'Продление',
};

export const getRussianNamesForType = (name) => {
  if (!name) return name;

  let entityTranslation = '';

  const sortedEntities = Object.keys(ENTITY_RUSSIAN_NAMES).sort(
    (a, b) => b[0].length - a[0].length,
  );

  for (const entity of sortedEntities) {
    if (name.includes(entity)) {
      entityTranslation = ENTITY_RUSSIAN_NAMES[entity][0];
      break;
    }
  }

  let actionTranslation = '';
  for (const action of Object.keys(ACTION_RUSSIAN_NAMES)) {
    if (name.includes(action)) {
      actionTranslation = ACTION_RUSSIAN_NAMES[action];
      break;
    }
  }

  if (!actionTranslation && !entityTranslation) {
    return name;
  }

  return `${actionTranslation} ${entityTranslation}`.trim();
};
