class CreateLoaOrcamentosTematicos < ActiveRecord::Migration[4.2]
  def self.up
    create_table :loa_orcamentos_tematicos do |t|
      t.string :sigla
      t.string :descricao
      t.boolean :padrao

      t.timestamps null: false
    end

    [
      { descricao: "Criança e do Adolescente (OCA)", padrao: true },
      { descricao: "Idoso", padrao: true },
      { descricao: "Mulher", padrao: true },
      { descricao: "Ambiental", padrao: true },
    ].each do |tematico|
      Loa::OrcamentoTematico.find_or_create_by!( tematico )
    end


    # ORÇAMENTOS TEMÁTICOS
    modulo = Acesso::Modulo.find_or_create_by!( nome_do_modulo: 'loa', nome_de_exibicao:  "Orçamento" )
    controle = Acesso::Controle.find_or_create_by!( nome_do_controle: 'loa/orcamentos_tematicos', nome_de_exibicao:  "Orçamentos Temáticos", modulo_id: modulo.id)
    if Acesso::Controle.exists? id: controle.id
      Acesso::Acao.find_or_create_by!( nome_da_acao: "create", 	nome_de_exibicao: "Cadastrar", 	controle_id: controle.id)
      Acesso::Acao.find_or_create_by!( nome_da_acao: "read", 		nome_de_exibicao: "Visualizar", controle_id: controle.id)
      Acesso::Acao.find_or_create_by!( nome_da_acao: "update", 	nome_de_exibicao: "Editar", 		controle_id: controle.id)
      Acesso::Acao.find_or_create_by!( nome_da_acao: "destroy", nome_de_exibicao: "Remover", 		controle_id: controle.id)
    end
  end

  def self.down
    drop_table :loa_orcamentos_tematicos

    modulo = Acesso::Modulo.find_or_create_by!( nome_do_modulo: 'loa', nome_de_exibicao:  "Orçamento" )
    controle = Acesso::Controle.find_or_create_by!( nome_do_controle: 'loa/orcamentos_tematicos', nome_de_exibicao:  "Orçamentos Temáticos", modulo_id: modulo.id)
    Acesso::Acao.find_by( nome_da_acao: "update", controle_id: controle.id).try(:destroy)
    Acesso::Acao.find_by( nome_da_acao: "create", controle_id: controle.id).try(:destroy)
    Acesso::Acao.find_by( nome_da_acao: "destroy", controle_id: controle.id).try(:destroy)
    Acesso::Acao.find_by( nome_da_acao: "read", nome_de_exibicao: "Visualizar", controle_id: controle.id).try(:destroy)
  end
end
