Class: DataDictionarySetsController

Inherits:
CrmController show all
Includes:
Controllers::Destroyable
Defined in:
app/controllers/data_dictionary_sets_controller.rb

Overview

== Schema Information

Table name: data_dictionary_sets

id :integer not null, primary key
set_name :string(255)
destination :string(255)
default_set :boolean
CRUD for DataDictionarySet — a named, reusable mapping of raw import
values (e.g. distinct cell contents) to normalized values, used by the
data-import pipeline.

Constant Summary

Constants included from Controllers::ReferenceFindable

Controllers::ReferenceFindable::ID_EMBEDDED_PATTERNS

Constants included from Controllers::AnalyticsEvents

Controllers::AnalyticsEvents::MAX_QUEUED_EVENTS, Controllers::AnalyticsEvents::SESSION_KEY

Constants included from Controllers::ErrorRendering

Controllers::ErrorRendering::NON_CONTENT_PATH_PREFIXES

Instance Method Summary collapse

Methods included from Controllers::Destroyable

#destroy, #perform_destroy

Methods inherited from CrmController

#access_denied, #context_id, #context_object, #crm_home_path, #current_ability, #default_url_options, #download_temp, #get_tempfile_path_for_download, #init_status_job_collector, #initialize_crm_lazy_chunks, #persist_enqueued_status_jobs, #record_not_found, #redirect_to_job_or_fallback, #render_edit_action, #set_context, #set_download_path, #stash_file_for_temp_download, #sync_admin_presence_cookie, #touch_employee_last_seen

Methods inherited from ApplicationController

#account_impersonated?, #add_to_flash, #after_sign_in_path_for, #bypass_forgery_protection?, #chat_enabled?, #cloudflare_cleared?, #default_catalog, #default_url_options, #enable_turbo_frames, #find_publication, #fix_invalid_accept_header, #init_js_utils, #is_globals_call?, #layout_by_resource, #locale_store, #redirect_to, #require_employee_for_crm, #set_base_host, #set_real_ip, #set_report_errors_for, #should_render_layout?, #skip_layout_for_turbo_frame?, #stamp_impersonation_context, #tab_frame_breakout_request?, #warmlyyours_canada_ip?, #warmlyyours_ip?, #y

Methods included from Controllers::ReturnPathHandling

#check_for_return_path, #redirect_to_return_path_or_default

Methods included from Controllers::AnalyticsEvents

#consume_queued_analytics_events, #registration_lead_type, #track_event

Methods included from Controllers::DeviceDetection

#device_detector, #is_ie?

Methods included from Controllers::SubdomainDetection

#is_crm_request?, #is_www_request?, #json_request?

Methods included from Controllers::TurboSafeRedirect

#redirect_to

Methods included from Controllers::TrackingDetection

#bot_request?, #gdpr_country?, #gdpr_country_data, #prevent_bots, #set_tracking_cookie, #track_visitor?

Methods included from Controllers::AcceleratedFileSending

#send_file_accelerated, #send_upload_accelerated

Methods included from Controllers::ErrorRendering

#excp_string, #mail_to_for_error_reporting, #render_400, #render_404, #render_406, #render_410, #render_500, #render_invalid_authenticity_token, #render_ip_spoof_error, #render_unpermitted_parameters, #safe_referer_or_fallback

Methods included from Controllers::TurnstileVerification

#load_turnstile_script_tag, #turnstile_lazy_widget, #turnstile_script_tag, #turnstile_widget, #validate_turnstile!

Methods included from Controllers::CloudflareCaching

edge_cached, #edge_cached_action?, #reset_cloudflare_cache, #set_cloudflare_cache, #skip_edge_cache!, #skip_session

Methods included from Controllers::Webpackable

#preload_webpack_fonts, #webpack_css_include, #webpack_css_url, #webpack_js_include, #wpd_is_running?

Methods included from Controllers::Localizable

#cloudflare_country_locale, #determine_request_locale, #geocoder_locale, #guest_user_locale_check, #locale_optional_www_auth_path?, #param_locale, #set_locale, #set_request_locale, #skip_localization?, #warmlyyours_ip_locale

Methods included from Controllers::Authenticable

#access_denied, #authenticate_account, #authenticate_account!, #authenticate_account_from_login_token!, #check_is_a_manager, #check_is_a_sales_manager, #check_is_an_admin, #check_is_an_employee, #check_party, #clear_mismatched_guest_user, #create_guest_user, #credentials?, #current_or_guest_user, #current_or_guest_user_id_read_only, #current_user, #devise_mapping, #fully_logged_in?, #generate_bot_id, #guest_user, #identifiable?, #init_current_user, #initialize_guest, #load_context_user, #logging_in, #resource, #resource_name, #restrict_access_for_non_employees, #scrubbed_request_path, #user_object, #warn_on_session_guest_id_leak

Methods included from UrlsHelper

#catalog_breadcrumb_links, #catalog_link, #catalog_link_for_product_line, #catalog_link_for_sku, #cms_link, #delocalized_path, #path_to_sales_product_sku, #path_to_sales_product_sku_for_product_line, #path_to_sales_product_sku_for_product_line_slug, #product_line_from_catalog_link, #protocol_neutral_url, #sanitize_external_url, #valid_external_url?

Instance Method Details

#createvoid

This method returns an undefined value.

Creates a set, linking it back to the source import column and
redirecting either to the import (when "Save and Finish" was clicked)
or back to the edit form.



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'app/controllers/data_dictionary_sets_controller.rb', line 60

def create
  @data_dictionary_set = DataDictionarySet.new(params[:data_dictionary_set])
  @data_import_column = begin
    DataImportColumn.find(params[:data_import_column_id])
  rescue StandardError
    nil
  end
  if @data_dictionary_set.save
    @data_import_column&.update_attribute!(:data_dictionary_set_id, @data_dictionary_set.id)
    if /Save and Finish/.match?(params[:commit])
      if @data_import_column
        redirect_to data_import_path(@data_import_column.data_import)
      else
        redirect_to data_dictionary_sets_path
      end
    else
      redirect_to edit_data_dictionary_set_path(@data_dictionary_set, data_import_column_id: begin
        @data_import_column.id
      rescue StandardError
        nil
      end)
    end
  else
    render :new, status: :unprocessable_content
  end
end

#editvoid

This method returns an undefined value.

Loads a set for editing.



46
47
48
49
50
51
52
53
# File 'app/controllers/data_dictionary_sets_controller.rb', line 46

def edit
  @data_dictionary_set = DataDictionarySet.find(params[:id])
  @data_import_column = begin
    DataImportColumn.find(params[:data_import_column_id])
  rescue StandardError
    nil
  end
end

#indexvoid

This method returns an undefined value.

Lists all data dictionary sets.



19
20
21
# File 'app/controllers/data_dictionary_sets_controller.rb', line 19

def index
  @data_dictionary_sets = DataDictionarySet.all
end

#newvoid

This method returns an undefined value.

Builds a blank set, pre-populated with a dictionary entry per distinct
value in the source import column (if params[:data_import_column_id]
resolves).



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/controllers/data_dictionary_sets_controller.rb', line 28

def new
  @data_dictionary_set = DataDictionarySet.new(destination: params[:destination], set_name: params[:set_name])
  @data_import_column = begin
    DataImportColumn.find(params[:data_import_column_id])
  rescue StandardError
    nil
  end
  return unless @data_import_column

  # find all unique values
  @data_import_column.data_import_cells.select('distinct content').each do |cell|
    @data_dictionary_set.data_dictionaries.build(input_value: cell.content)
  end
end

#updatevoid

This method returns an undefined value.

Updates a set, same "Save and Finish" redirect behavior as #create.



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'app/controllers/data_dictionary_sets_controller.rb', line 90

def update
  @data_dictionary_set = DataDictionarySet.find(params[:id])
  @data_import_column = begin
    DataImportColumn.find(params[:data_import_column_id])
  rescue StandardError
    nil
  end
  if @data_dictionary_set.update(params[:data_dictionary_set])
    flash[:info] = "Data dictionary #{@data_dictionary_set.id} was updated."
    if /Save and Finish/.match?(params[:commit])
      if @data_import_column
        redirect_to data_import_path(@data_import_column.data_import)
      else
        redirect_to data_dictionary_sets_path
      end
    else
      redirect_to edit_data_dictionary_set_path(@data_dictionary_set)
    end
  else
    render :edit, status: :unprocessable_content
  end
end