namespace :peoplefinder do

def inadequate_profiles
  @inadequate_profiles = Peoplefinder::Person.inadequate_profiles
end

def inadequate_profiles_with_email
  inadequate_profiles.select { |person| person.email.present? }
end

desc 'list the email addresses of people with inadequate profiles'
task inadequate_profiles: :environment do

  inadequate_profiles.each do |person|
    puts "#{ person.surname }, #{ person.given_name }: #{ person.email }"
  end
  puts "\n** There are #{ inadequate_profiles.count } inadequate profiles."
  puts "** #{ inadequate_profiles_with_email.count }
    inadequate profiles have email addresses."
  puts "\n"
end

desc 'email people with inadequate profiles'
task inadequate_profile_reminders: :environment do
  recipients = inadequate_profiles_with_email

  puts "\nYou are about to email #{ recipients.count } people"
  puts 'Are you sure you want to do this? [Y/N]'

  if STDIN.gets.chomp == 'Y'
    recipients.each do |recipient|

      if Peoplefinder::EmailAddress.new(recipient.email).valid_address?
        Peoplefinder::ReminderMailer.inadequate_profile(recipient).deliver
        puts "Email sent to: #{ recipient.email }"

      else
        puts "Email *not* sent to: #{ recipient.email }"
      end
    end

  end
end

end