Class: Import::ParticipantImportFileParser
- Inherits:
-
Object
- Object
- Import::ParticipantImportFileParser
- Defined in:
- api/app/models/import/participant_import_file_parser.rb
Overview
Parses an excel file or csv full of participants and their associated demographics
Constant Summary collapse
- PARTICIPANT_PROPERTIES =
{ field: 'name', alias: ['name', 'full name'], type: :field, required: true, parser: :standard, description: 'The full name of the participant, with spaces.' }, { field: 'email', alias: ['email', 'e-mail', 'email address', 'emailaddress'], type: :field, parser: :email, unique: true, description: 'The email of the participant' }, { field: 'locale', alias: ['locale', 'preferred_language', 'preferred language', 'language', 'preferredlanguage', 'default language'], type: :field, parser: :language, description: "Language of the participant, values must be one of the following codes: #{Rails.configuration.locales.map { |locale| locale['id'] }.join(', ')}" }, { field: 'external_id', alias: ['external_id', 'external id', 'externalid', 'unique id', 'unique_id'], type: :field, parser: :standard, unique: true, description: 'Label a participant with an identifier for an external system. Can be used to reconnect the participant during future imports or bulk operations.' }, { field: 'note', alias: %w[notes note], type: :field, parser: :standard, description: 'Any notes on the participant.' }, { field: nil, alias: [], type: :non_exclusive_demographic, parser: :non_exclusive_demographic, description: "Non-exclusive demographics are equivalent to a checkbox input in an online form. In excel, these can be spread across columns. The header must match the pattern 'Category Name::Demographic Name' (without the quotes) - to further our online form analogy, the category (everything before the '::' in the header pattern) is the checkbox question text, and the demographic (everything after the '::' in the pattern) is equivalent to the checkbox options. Any cell value not 'No' or '0' (without quotes) will be assigned the demographic referenced in the header." }, { field: nil, alias: [], type: :exclusive_demographic, parser: :exclusive_demographic, description: 'Exclusive demographics are mutually exclusive assignments, equivalent to a radio input in an online form. Any header that does not match a field or a non-exclusive demographic is considered an exclusive demographic.' } ].freeze
Instance Attribute Summary collapse
Class Method Summary collapse
Instance Method Summary collapse
- #as_json ⇒ Object
- #build_column_summaries ⇒ Object
- #build_participants ⇒ Object
- #column_summaries ⇒ Object
- #columns_with_duplicate_rows ⇒ Object
- #columns_with_invalid_rows ⇒ Object
- #ignored_emails ⇒ Object
-
#initialize(attrs = {}) ⇒ ParticipantImportFileParser
constructor
A new instance of ParticipantImportFileParser.
- #invalid_email_rows ⇒ Object
- #missing_categories ⇒ Object
- #participants ⇒ Object
- #rebuild ⇒ Object
- #set_cache ⇒ Object
- #skipped_columns ⇒ Object
Constructor Details
#initialize(attrs = {}) ⇒ ParticipantImportFileParser
Returns a new instance of ParticipantImportFileParser.