namespace :ddr_alerts do

desc "Create an alert message"
task :create => :environment do
  puts "ERROR: Must specify message text.  Ex.: MESSAGE='This is an alert message.'" unless ENV['MESSAGE']
  if ENV['MESSAGE']
    active = ENV['ACTIVE'] == 'true' ? true : false
    msg = Ddr::Alerts::Message.new(message: ENV['MESSAGE'], active: active)
    if msg.save
      puts "Created Alert Message"
      msg.reload
      puts msg
    else
      puts "ERROR: Unable to create alert message"
    end
  end
end

desc "List alert messages"
task :list => :environment do
  active = ENV['ACTIVE'] == 'true' ? true : false
  msgs = active ? Ddr::Alerts::Message.active : Ddr::Alerts::Message.all
  msgs.each { |msg| puts msg }
end

desc "Activate an alert message"
task :activate => :environment do
  puts "ERROR: Must specify message ID.  Ex.: MESSAGE_ID=4" unless ENV['MESSAGE_ID']
  if ENV['MESSAGE_ID']
    begin
      msg = Ddr::Alerts::Message.find(ENV['MESSAGE_ID'].to_i)
      if msg.active
        puts "WARNING: Message is already active"
      else
        msg.active = true
        if msg.save
          puts "Message activated"
        else
          puts "ERROR: Unable to activate message"
        end
      end
      msg.reload
      puts msg
    rescue ActiveRecord::RecordNotFound => e
      puts "ERROR: #{e.message}"
    end
  end
end

desc "De-activate an alert message"
task :deactivate => :environment do
  puts "ERROR: Must specify message ID.  Ex.: MESSAGE_ID=4" unless ENV['MESSAGE_ID']
  if ENV['MESSAGE_ID']
    begin
      msg = Ddr::Alerts::Message.find(ENV['MESSAGE_ID'].to_i)
      if !msg.active
        puts "WARNING: Message is not currently active"
      else
        msg.active = false
        if msg.save
          puts "Message deactivated"
        else
          puts "ERROR: Unable to deactivate message"
        end
      end
      msg.reload
      puts msg
    rescue ActiveRecord::RecordNotFound => e
      puts "ERROR: #{e.message}"
    end
  end
end

desc "Delete an alert message"
task :delete => :environment do
  puts "ERROR: Must specify message ID.  Ex.: MESSAGE_ID=4" unless ENV['MESSAGE_ID']
  if ENV['MESSAGE_ID']
    begin
      msg = Ddr::Alerts::Message.find(ENV['MESSAGE_ID'].to_i)
      msg.destroy
      if msg.destroyed?
        puts "Message deleted"
        puts msg
      else
        puts "ERROR: Unable to delete message"
      end
    rescue ActiveRecord::RecordNotFound => e
      puts "ERROR: #{e.message}"
    end
  end
end

end