class CreateLoaTransferenciasDeRecursos < ActiveRecord::Migration[4.2]
  def up
    create_table :loa_transferencias_de_recursos do |t|
      t.integer :unidade_orcamentaria_origem_id
      t.integer :unidade_orcamentaria_destino_id
      t.integer :fonte_de_recursos_id
      t.decimal :valor, precision: 12, scale: 2, default: 0
      t.integer :orcamento_id

      t.timestamps null: false

      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/transferencias_de_recursos', nome_de_exibicao:  "Transferências de Recursos", 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
  end

  def down
    drop_table :loa_transferencias_de_recursos

    modulo = Acesso::Modulo.find_or_create_by!( nome_do_modulo: 'loa', nome_de_exibicao:  "Orçamento" )
    controle = Acesso::Controle.find_by( nome_do_controle: 'loa/transferencias_de_recursos', nome_de_exibicao:  "Transferências de Recursos", modulo_id: modulo.id)
    Acesso::Acao.find_by( nome_da_acao: "update", controle_id: controle.try(:id)).try(:destroy)
    Acesso::Acao.find_by( nome_da_acao: "create", controle_id: controle.try(:id)).try(:destroy)
    Acesso::Acao.find_by( nome_da_acao: "destroy", controle_id: controle.try(:id)).try(:destroy)
    Acesso::Acao.find_by( nome_da_acao: "read", nome_de_exibicao: "Visualizar", controle_id: controle.try(:id)).try(:destroy)
    controle.try(:destroy)
  end
end
