import { ElementsNames } from 'client/Containers/Calculation/types/elements';
import { IBaseOption } from 'core/services/CrmService/types/common';
import { orderBy } from 'lodash';

const initialOptions: Partial<Record<ElementsNames, IBaseOption[]>> = {
  radioLastPaymentRule: [
    {
      name: 'равен платежу',
      value: 100000002,
    },
    {
      name: 'в рублях',
      value: 100000000,
    },
    {
      name: 'в %',
      value: 100000001,
    },
  ],

  radioBalanceHolder: [
    {
      name: 'Лизингополучатель',
      value: 100000000,
    },
    {
      name: 'Лизингодатель',
      value: 100000001,
    },
  ],

  radioGraphType: [
    {
      name: 'аннуитет',
      value: 100000000,
    },
    {
      name: 'дегрессия (ступенчатая)',
      value: 100000001,
      seasonTypes: [100000003, 100000004, 100000005, 100000006, 100000007],
    },
    {
      name: 'равноубывающий',
      value: 100000002,
    },
    {
      name: 'сезонный',
      value: 100000003,
      seasonTypes: [100000000, 100000001, 100000002],
    },
    {
      name: 'легкий старт',
      value: 100000004,
    },
  ],

  selectSeasonType: [
    {
      name: '6/6',
      value: 100000000,
      startPositions: [0, 6],
      paymentsInStep: [6, 6],
      stepsValues: [100, 50],
      forbiddenHighSeasonStart: ['9', '10'],
    },
    {
      name: '8/4',
      value: 100000001,
      startPositions: [0, 8],
      paymentsInStep: [8, 4],
      stepsValues: [100, 50],
      forbiddenHighSeasonStart: ['7', '8', '9'],
    },
    {
      name: '4/4/4',
      value: 100000002,
      startPositions: [0, 4, 8],
      paymentsInStep: [4, 4, 4],
      stepsValues: [100, 75, 50],
      forbiddenHighSeasonStart: ['11'],
    },
    {
      name: 'Гибкая дегрессия',
      value: 100000007,
    },
    {
      name: '100.50.25',
      value: 100000003,
      stepsValues: [100, 50, 25],
    },
    {
      name: '100.30.10',
      value: 100000004,
      stepsValues: [100, 30, 10],
    },
    {
      name: '100.70.40',
      value: 100000005,
      stepsValues: [100, 70, 40],
    },
    {
      name: '100.7.3',
      value: 100000006,
      stepsValues: [100, 7, 3],
    },
  ],

  selectHighSeasonStart: Array.from({ length: 12 }, (_, i) => ({
    name: `${i + 2}`,
    value: 100000000 + i,
  })),

  radioDeliveryTime: [
    {
      name: 'В наличии',
      value: 100000000,
    },
    {
      name: 'В поставке',
      value: 100000001,
    },
  ],

  selectEngineType: [
    {
      name: 'Бензин',
      value: 100000000,
    },
    {
      name: 'Дизель',
      value: 100000001,
    },
    {
      name: 'Газ',
      value: 100000002,
    },
    {
      name: 'Электрический',
      value: 100000003,
    },
    {
      name: 'Гибрид',
      value: 100000004,
    },
  ],

  selectLeaseObjectCategory: [
    {
      name: 'A',
      value: 100000000,
    },
    {
      name: 'B',
      value: 100000001,
    },
    {
      name: 'C',
      value: 100000002,
    },
    {
      name: 'D',
      value: 100000003,
    },
    {
      name: 'Прицеп',
      value: 100000004,
    },
  ],

  selectLeaseObjectUseFor: orderBy(
    [
      {
        name: 'Для представительских целей',
        value: 100000000,
      },
      {
        name: 'Для использования в качестве «такси»',
        value: 100000001,
      },
      {
        name: 'Для передачи третьим лицам (прокат; аренда)',
        value: 100000002,
      },
      {
        name: 'Каршеринг',
        value: 100000003,
      },
      {
        name: 'Тест-драйв',
        value: 100000004,
      },
      {
        name: 'Для доставки продуктов конечному потребителю',
        value: 100000005,
      },
      {
        name: 'Для обучения вождению',
        value: 100000006,
      },
      {
        name: 'Маршрутные такси / Рейсовые автобусы',
        value: 100000007,
      },
      {
        name: 'Междугородние перевозки',
        value: 100000008,
      },
      {
        name: 'Для перевозки крупногабаритных грузов',
        value: 100000009,
      },
      {
        name: 'Для перевозки малогабаритных грузов',
        value: 100000010,
      },
      {
        name: 'Для перевозки сотрудников других организаций (водитель ЛП)',
        value: 100000011,
      },
      {
        name: 'Для перевозки сотрудников ЛП',
        value: 100000012,
      },
      {
        name: 'Для экскурсионных перевозок в т.ч. на торжества; трансфер в аэропорт и пр.',
        value: 100000013,
      },
      {
        name: 'Дорожно-строительная техника',
        value: 100000014,
      },
      {
        name: 'Жилищно-коммунальное хозяйство',
        value: 100000015,
      },
      {
        name: 'Лесное хозяйство',
        value: 100000016,
      },
      {
        name: 'Подъёмно-транспортная отрасль',
        value: 100000017,
      },
      {
        name: 'Сельское хозяйство',
        value: 100000018,
      },
      {
        name: 'Строительство',
        value: 100000019,
      },
    ],
    objectUseFor => objectUseFor.name.toLowerCase(),
    ['asc'],
  ),

  radioInfuranceOPF: [
    {
      name: 'ЮЛ',
      value: 100000000,
    },
    {
      name: 'ИП',
      value: 100000001,
    },
  ],

  radioInsKaskoType: [
    {
      name: 'Полное',
      value: 100000000,
    },
    {
      name: 'Усеченное',
      value: 100000001,
    },
  ],

  radioQuoteContactGender: [
    {
      name: 'Мужской',
      value: 100000000,
    },
    {
      name: 'Женский',
      value: 100000001,
    },
  ],

  radioRequirementTelematic: [
    {
      name: 'Не требуется',
      value: 100000004,
    },
    {
      name: 'START',
      value: 100000000,
    },
    {
      name: 'START+',
      value: 100000001,
    },
    {
      name: 'COMFORT',
      value: 100000002,
    },
    {
      name: 'COMFORT+',
      value: 100000003,
    },
    {
      name: 'Omnicomm_1',
      value: 100000005,
    },
    {
      name: 'Omnicomm_2',
      value: 100000006,
    },
    {
      name: 'Omnicomm_3',
      value: 100000007,
    },
  ],
  radioCalcType: [
    {
      name: 'IRR',
      value: 100000000,
    },
    {
      name: 'Суммы',
      value: 100000001,
    },
    {
      name: 'Маржи',
      value: 100000099,
    },
  ],
  radioObjectRegistration: [
    {
      name: 'Лизингополучатель',
      value: 100000000,
    },
    {
      name: 'Лизингодатель',
      value: 100000001,
    },
  ],
  radioTypePTS: [
    {
      name: 'Бумажный',
      value: 100000000,
    },
    {
      name: 'Электронный',
      value: 100000001,
    },
  ],
  selectObjectCategoryTax: [
    'M1',
    'M2',
    'M3',
    'M1G',
    'M2G',
    'M3G',
    'N1',
    'N2',
    'N3',
    'N1G',
    'N2G',
    'N3G',
    'O1',
    'O2',
    'O3',
    'O4',
    'L1',
    'L2',
    'L3',
    'L4',
    'L5',
  ].map((name, i) => ({
    name,
    value: 100000000 + i,
  })),
  selectObjectTypeTax: [
    {
      name: 'Автобус',
      type: 'D',
    },
    {
      name: 'Легковой',
      type: 'B',
    },
    {
      name: 'Грузовой',
      type: 'C',
    },
    {
      name: 'Спецтехника',
      type: 'T',
    },
    {
      name: 'Мотоцикл',
      type: 'A',
    },
  ].map((v, i) => ({
    ...v,
    value: 100000000 + i,
  })),
};

export default initialOptions;
