# encoding: utf-8

# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
#
# Examples:
#
#   cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
#   Mayor.create(name: 'Emanuel', city: cities.first)

moscow = Region.create(name: 'Москва', kind: :city)

regions = {"Центральный АО" => ["Арбат",
                                "Басманный",
                                "Замоскворечье",
                                "Красносельский",
                                "Мещанский",
                                "Пресненский",
                                "Таганский",
                                "Тверской",
                                "Хамовники",
                                "Якиманка"],
           "Северный АО" => ['Аэропорт',
                             'Беговой',
                             'Бескудниковский',
                             'Войковский',
                             'Восточное Дегунино',
                             'Головинский',
                             'Дмитровский',
                             'Западное Дегунино',
                             'Коптево',
                             'Левобережный',
                             'Молжаниновский',
                             'Савёловский',
                             'Сокол',
                             'Тимирязевский',
                             'Ховрино',
                             'Хорошёвский'],
           "Северо-Восточный АО" => ['Алексеевский',
                                     'Алтуфьевский',
                                     'Бабушкинский',
                                     'Бибирево',
                                     'Бутырский',
                                     'Лианозово',
                                     'Лосиноостровский',
                                     'Марфино',
                                     'Марьина Роща',
                                     'Останкинский',
                                     'Отрадное',
                                     'Ростокино',
                                     'Свиблово',
                                     'Северный',
                                     'Северное Медведково',
                                     'Южное Медведково',
                                     'Ярославский'],
           "Восточный АО" => ['Богородское',
                              'Вешняки',
                              'Восточный',
                              'Восточное Измайлово',
                              'Гольяново',
                              'Ивановское',
                              'Измайлово',
                              'Косино-Ухтомский',
                              'Метрогородок',
                              'Новогиреево',
                              'Новокосино',
                              'Перово',
                              'Преображенское',
                              'Северное Измайлово',
                              'Соколиная Гора',
                              'Сокольники'],
           "Юго-Восточный АО" => ['Выхино-Жулебино',
                                  'Капотня',
                                  'Кузьминки',
                                  'Лефортово',
                                  'Люблино',
                                  'Марьино',
                                  'Некрасовка',
                                  'Нижегородский',
                                  'Печатники',
                                  'Рязанский',
                                  'Текстильщики',
                                  'Южнопортовый'],
           "Южный АО" => ['Бирюлёво Восточное',
                          'Бирюлёво Западное',
                          'Братеево',
                          'Даниловский',
                          'Донской',
                          'Зябликово',
                          'Москворечье-Сабурово',
                          'Нагатино-Садовники',
                          'Нагатинский Затон',
                          'Нагорный',
                          'Орехово-Борисово Северное',
                          'Орехово-Борисово Южное',
                          'Царицыно',
                          'Чертаново Северное',
                          'Чертаново Центральное',
                          'Чертаново Южное'],
           "Юго-Западный АО" => ['Академический',
                                 'Гагаринский',
                                 'Зюзино',
                                 'Коньково',
                                 'Котловка',
                                 'Ломоносовский',
                                 'Обручевский',
                                 'Северное Бутово',
                                 'Тёплый Стан',
                                 'Черёмушки',
                                 'Южное Бутово',
                                 'Ясенево'],
           "Западный АО" => ['Дорогомилово',
                             'Внуково',
                             'Крылатское',
                             'Кунцево',
                             'Можайский',
                             'Ново-Переделкино',
                             'Очаково-Матвеевское',
                             'Проспект Вернадского',
                             'Раменки',
                             'Солнцево',
                             'Тропарёво-Никулино',
                             'Филёвский Парк',
                             'Фили-Давыдково'],
           "Северо-Западный АО" => ['Куркино',
                                    'Митино',
                                    'Покровское-Стрешнево',
                                    'Северное Тушино',
                                    'Строгино',
                                    'Хорошёво-Мнёвники',
                                    'Щукино',
                                    'Южное Тушино'],
           "Зеленоградский АО" => ['Матушкино',
                                   'Савёлки',
                                   'Старое Крюково',
                                   'Силино',
                                   'Крюково'],
           "Новомосковский АО" => ['Воскресенское',
                                   'Внуковское',
                                   'Десёновское',
                                   'Кокошкино',
                                   'Марушкинское',
                                   'Московский',
                                   '«Мосрентген»',
                                   'Рязановское',
                                   'Сосенское',
                                   'Филимонковское',
                                   'Щербинка'],
           "Троицкий АО" => ['Вороновское',
                             'Киевский',
                             'Клёновское',
                             'Краснопахорское',
                             'Михайлово-Ярцевское',
                             'Новофёдоровское',
                             'Первомайское',
                             'Роговское',
                             'Троицк',
                             'Щаповское']}

regions.each do |adm_region_name, mun_region_names|
  adm_region = Region.create(name: adm_region_name, kind: :adm_region, parent: moscow)
  mun_region_names.each do |mun_region_name|
    Region.create(name: mun_region_name, kind: :mun_region, parent: adm_region)
  end
end

#TODO всё это вынести в yaml и грузить из внешнего файла
adm_regions_with_single_tic = []
adm_regions_with_single_tic << Region.where("name LIKE ?", "%Новомосковский%").first.id
adm_regions_with_single_tic << Region.where("name LIKE ?", "%Троицкий%").first.id

Region.mun_regions.where("parent_id NOT IN (?)", adm_regions_with_single_tic).update_all has_tic: true
Region.adm_regions.where("id IN (?)", adm_regions_with_single_tic).update_all has_tic: true

roles = [
  ['admin', 'администратор', 'АДМ'],
  ['db_operator', 'оператор базы данных', 'ОБД'],
  ['observer', 'наблюдатель на участке', 'наблюдатель'],
  ['mobile', 'участником мобильной группы', 'участником мобильной группы'],
  ['callcenter', 'оператором колл-центра', 'оператором колл-центра'],
  ['federal_repr', 'федеральный представитель наблюдательного объединения', 'ФП'],
  ['tc', 'территориальный координатор', 'ТК'],
  ['mc', 'координатор мобильной группы', 'МК'],
  ['cc', 'координатор колл-центра', 'КК'],
  ['other', 'прочее заинтересованное лицо', 'заинтересованное лицо'],
  ['callcenter_external', 'внешний оператор колл-центра', 'внешний оператор КЦ']
]

roles.each do |slug, name, short_name|
  Role.create slug: slug, name: name, short_name: short_name
end

current_roles = [
    ['observer', 'Наблюдатель', 0, 'Наблюдатель'],
    ['reserve', 'резерв составов УИК', 1, 'Резерв УИК'],
    ['psg', 'Член УИК с правом совещательного голоса', 2, 'УПСГ'],
    ['prg', 'Член УИК с правом решающего голоса', 3, 'УПРГ'],
    ['psg_tic', 'Член ТИК с правом совещательного голоса', 4, 'ТПСГ'],
    ['prg_tic', 'Член ТИК с правом решающего голоса', 5, 'ТПРГ'],
    ['journalist', 'Представитель СМИ', 6, 'СМИ']
]

current_roles.each do |slug, name, position, short_name|
  CurrentRole.create slug: slug, name: name, position: position, short_name: short_name
end


organisations = ['РосВыборы', 'Гражданин Наблюдатель', 'Сонар', 'Голос']
organisations.each do |name|
  Organisation.create name: name
end

nomination_sources = {
    'parliament' => [
        'ЕР',
        'КПРФ',
        'СР',
        'ЛДПР'
    ],
    'party' => [
        'Яблоко',
        'РПР-Парнас'
    ],
    'candidate' => [
        'Навальный',
        'Митрохин',
        'Мельников',
        'Дегтярёв',
        'Левичев',
        'Собянин'
    ],
    'media' => [
        'СМИ'
    ]
}

nomination_sources.each do |variant, names|
  names.each do |name|
    NominationSource.create name: name, variant: variant
  end
end


Rake::Task['import_uics'].invoke

violation_types = {
    '0. Серьезные/часто встречающиеся нарушения' => [
        '0.1. Наблюдателя/члена комиссии выгоняют с участка (2.14 в типологии «Голоса»)',
        '0.2. Наблюдателю угрожают',
        '0.3. Вброс бюллетеней (2.8)',
        '0.4. Карусель (2.8)',
        '0.5. Массовое голосование вне помещения',
        '0.6. Ограничение на перемещение наблюдателей по участку (2.11)',
        '0.7. Запрет на фото/видеосъемку (2.12)',
        '0.8. Присутствие на участке посторонних лиц',
        '0.9. Члены УИК подписывали незаполненный протокол (3.21)',
        '0.10. При подсчете данные не заносились сразу в увеличенную форму после каждого этапа подсчета (3.12)',
        '0.11. Отказ в принятии жалобы (3.19)',
        '0.12. Не выдавали копию протокола (3.23)',
        '0.13. Прочие нарушения',
        '0.14 Голосование по допспискам'
    ],
    '1. Нарушения при открытии участка' => [
        '1.1. Трудности при доступе на участок',
        '1.2. Председатель УИК не предъявил пустые ящики для голосования',
        '1.3. Наблюдателям и членам с ПСГ не дали ознакомится со списком избирателей',
        '1.4. Членам УИК бюллетени выдаются не под роспись',
        '1.5. Трудности в получении информации'
    ],
    '2. Нарушения при голосовании' => [
        '2.2. Есть агитационные материалы на участке',
        '2.3. Нет сводного плаката',
        '2.4. У наблюдателей нет возможности видеть места выдачи бюллетеней, избирательные ящики, кабинки для голосования',
        '2.5. Нарушена процедура выдачи бюллетеней',
        '2.6. Подвоз избирателей',
        '2.7. Списки избирателей не прошиты',
        '2.9. Групповое голосование по открепительным',
        '2.10. Давление на избирателей',
        '2.13. Переносные ящики не в поле зрения наблюдателей',
        '2.15. Для выездного голосования используются списки, составленные организациями',
        '2.16. Не дают ознакомиться с реестром на голосование вне помещения',
        '2.17. Не дают присутствовать при голосовании вне помещения'
    ],
    '3. Нарушения при подсчете' => [
        '3.6. Не оглашались данные подсчета по каждой книге избирателей',
        '3.7. Наблюдателю отказали в возможности удостоверится в правильности подсчетов по спискам',
        '3.8. Не объявлялось количество заявлений на голосование вне помещения перед вскрытием каждого переносного ящика',
        '3.9, 3.10, 3.12, 3.13. Прочие нарушения при подсчете',
        '3.11. Наблюдатели не могли видеть отметки в бюллетенях при подсчете голосов'
    ]
}

CallCenter::ViolationType.create name: 'ВЫБЕРИТЕ ТИП НАРУШЕНИЯ. ЖЕЛАТЕЛЬНО НЕ "ПРОЧИЕ".'

violation_types.each do |category_name, type_names|
  vc = CallCenter::ViolationCategory.create(name: category_name)
  type_names.each do |type_name|
    CallCenter::ViolationType.create(name: type_name , violation_category_id: vc.id)
  end
end




