class UserProcessor < BaseProcessor
  def run
    send_registration_accepted_mail
    send_registration_rejected_mail
  end
  
  private

  def send_registration_accepted_mail
    UserMailer.with(user: __getobj__).registration_accepted.deliver_now if registration_accepted?
  end

  def send_registration_rejected_mail
    UserMailer.with(user: __getobj__).registration_rejected.deliver_now if registration_rejected?
  end

  def registration_accepted?
    registration_validate? && active?
  end

  def registration_rejected?
    registration_validate? && !active?
  end

  def registration_validate?
    status_previously_changed? && status_previous_change[0]&.to_sym == :pending
  end
end
