Maintenance::PopulateCountryDefaultsTask

Source code
# frozen_string_literal: true

class Maintenance::PopulateCountryDefaultsTask < MaintenanceTasks::Task
  attr_reader :country

  csv_collection

  def process(row)
    row.to_h.symbolize_keys => { mbo_name:, gds_name:, country_code:, country_name: }

    process_country(country_code, country_name)
    process_default_mbo(mbo_name) if mbo_name.present?
    process_default_gds(gds_name) if gds_name.present?
  end

  private

  def process_country(country_code, country_name)
    @country = Country.find_or_initialize_by(code: country_code.upcase.strip)
    return unless country.new_record? && country_name.present?

    country.display_name = country_name
    country.save!
  end

  def process_default_mbo(mbo_name)
    normalized = mbo_name.to_s.strip.upcase
    return if DefaultMboToCountry.exists?(default_mbo: normalized, country:)
    return unless MboProfiles::MidBackOffice.list.include?(normalized)

    country.default_mbo = normalized
    country.save!
  end

  def process_default_gds(gds_name)
    country.default_gds = Gds.find_or_create_by!(name: gds_name.downcase.strip)
    country.save!
  end
end

Previous Runs

Succeeded
#85

Processed 104 out of 104 items (100%).

Ran for less than 5 seconds, finished .


Metadata:
user_id
Succeeded
#84

Processed 102 out of 102 items (100%).

Ran for less than 5 seconds, finished .


Metadata:
user_id
Succeeded
#83

Processed 102 out of 102 items (100%).

Ran for less than 5 seconds, finished .


Metadata:
user_id
Succeeded
#82

Processed 102 out of 102 items (100%).

Ran for less than 5 seconds, finished .


Metadata:
user_id
Succeeded
#81

Processed 102 out of 102 items (100%).

Ran for less than 10 seconds, finished .


Metadata:
user_id