class ObjectManager::Attribute::Validation::FuturePast < ObjectManager::Attribute::Validation::Backend

  def validate
    return if value.blank?
    return if irrelevant_attribute?

    validate_past
    validate_future
  end

  private

  def irrelevant_attribute?
    attribute.data_type != 'datetime'.freeze
  end

  def validate_past
    return if attribute.data_option[:past]
    return if !value.past?

    invalid_because_attribute('does not allow past dates.')
  end

  def validate_future
    return if attribute.data_option[:future]
    return if !value.future?

    invalid_because_attribute('does not allow future dates.')
  end
end
