class AddNovasPermissoesToAcessoAcoes < ActiveRecord::Migration[4.2]
  def change

		reversible do |dir|
			dir.up do
				execute <<-SQL
          CREATE OR REPLACE FUNCTION add_atualizar_calculos_por_exercicio_projecao() RETURNS void AS $$
            DECLARE
              modulo integer;
              controle integer;
          BEGIN
            SELECT id INTO modulo FROM Acesso_Modulos WHERE nome_do_modulo = 'projecao' AND nome_de_exibicao = 'Projeção de Receitas';
            SELECT id INTO controle FROM Acesso_Controles WHERE nome_do_controle = 'projecao/receitas' AND nome_de_exibicao = 'Receitas' AND modulo_id = modulo;
            INSERT INTO acesso_acoes(nome_da_acao, nome_de_exibicao, controle_id, created_at, updated_at) VALUES ('atualizar_calculos_por_exercicio_projecao', 'Atualizar Cálculos por Exercício', controle, '20170519', '20170519');
          END;
          $$ LANGUAGE plpgsql;
          SELECT add_atualizar_calculos_por_exercicio_projecao();
          DROP FUNCTION IF EXISTS add_atualizar_calculos_por_exercicio_projecao();
				SQL
			end

			dir.down do
				execute <<-SQL
					DELETE FROM Acesso_Acoes WHERE nome_da_acao = 'atualizar_calculos_por_exercicio_projecao' OR nome_da_acao = 'atualizar_calculos_por_exercicio_projecao';
					DROP FUNCTION IF EXISTS add_atualizar_calculos_por_exercicio_projecao();
				SQL
			end
		end

  end
end
