class SettingProxy < ActiveRecord::Migration
  def up

    # return if it's a new setup
    return if !Setting.find_by(name: 'system_init_done')

    Setting.create_if_not_exists(
      title: 'Proxy Settings',
      name: 'proxy',
      area: 'System::Network',
      description: 'Address of the proxy server for http and https resources.',
      options: {
        form: [
          {
            display: '',
            null: false,
            name: 'proxy',
            tag: 'input',
            placeholder: 'proxy.example.com:3128',
          },
        ],
      },
      state: '',
      preferences: {
        online_service_disable: true,
        controller: 'SettingsAreaProxy',
        prio: 1,
        permission: ['admin.system'],
      },
      frontend: false
    )
    Setting.create_if_not_exists(
      title: 'Proxy User',
      name: 'proxy_username',
      area: 'System::Network',
      description: 'Username for proxy connection.',
      options: {
        form: [
          {
            display: '',
            null: false,
            name: 'proxy_username',
            tag: 'input',
          },
        ],
      },
      state: '',
      preferences: {
        disabled: true,
        online_service_disable: true,
        prio: 2,
        permission: ['admin.system'],
      },
      frontend: false
    )
    # fix typo
    setting = Setting.find_by(name: 'proxy_password')
    if setting
      setting.options[:form][0][:name] = 'proxy_password'
      setting.save!
    else
      Setting.create_if_not_exists(
        title: 'Proxy Password',
        name: 'proxy_password',
        area: 'System::Network',
        description: 'Password for proxy connection.',
        options: {
          form: [
            {
              display: '',
              null: false,
              name: 'proxy_password',
              tag: 'input',
            },
          ],
        },
        state: '',
        preferences: {
          disabled: true,
          online_service_disable: true,
          prio: 3,
          permission: ['admin.system'],
        },
        frontend: false
      )
    end
    Setting.create_if_not_exists(
      title: 'No Proxy',
      name: 'proxy_no',
      area: 'System::Network',
      description: 'No proxy for the following hosts.',
      options: {
        form: [
          {
            display: '',
            null: false,
            name: 'proxy_no',
            tag: 'input',
          },
        ],
      },
      state: 'localhost,127.0.0.0,::1',
      preferences: {
        disabled: true,
        online_service_disable: true,
        prio: 4,
        permission: ['admin.system'],
      },
      frontend: false
    )
  end

end
