Sha256: cb5a7cfe01bb1070ee0567539181a230aeae2a34c41100c66748552b6dc153c1

Contents?: true

Size: 1.01 KB

Versions: 13

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true
# A collection of Activities that have not been scheduled by a Participant.
class UnplannedActivities
  Errors = Struct.new(:full_messages)

  attr_reader :errors

  def self.attribute_names
    []
  end

  def initialize(participant)
    @participant = participant
    @activities = []
  end

  def build(attributes)
    many_attributes = if attributes[:activity_type_ids]
                        (attributes[:activity_type_ids] || []).map do |type_id|
                          { activity_type_id: type_id }
                        end
                      else
                        attributes.values
                      end
    build_many(many_attributes)

    self
  end

  def save
    Activity.transaction { @activities.each(&:save!) }

    true
  rescue => err
    @errors = Errors.new(Array(err.to_s))

    false
  end

  private

  def build_many(arr_of_attributes)
    arr_of_attributes.each do |attrs|
      @activities << @participant.build_data_record(:activities, attrs)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
think_feel_do_engine-3.22.9 app/models/unplanned_activities.rb
think_feel_do_engine-3.22.8 app/models/unplanned_activities.rb
think_feel_do_engine-3.22.7 app/models/unplanned_activities.rb
think_feel_do_engine-3.22.6 app/models/unplanned_activities.rb
think_feel_do_engine-3.22.5 app/models/unplanned_activities.rb
think_feel_do_engine-3.22.4 app/models/unplanned_activities.rb
think_feel_do_engine-3.22.2 app/models/unplanned_activities.rb
think_feel_do_engine-3.22.1 app/models/unplanned_activities.rb
think_feel_do_engine-3.22.0 app/models/unplanned_activities.rb
think_feel_do_engine-3.21.2 app/models/unplanned_activities.rb
think_feel_do_engine-3.21.1 app/models/unplanned_activities.rb
think_feel_do_engine-3.21.0 app/models/unplanned_activities.rb
think_feel_do_engine-3.20.1 app/models/unplanned_activities.rb