Class: CampaignModel

Inherits:
Object
  • Object
show all
Defined in:
lib/wingify/models/campaign/campaign_model.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCampaignModel

Returns a new instance of CampaignModel.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/wingify/models/campaign/campaign_model.rb', line 24

def initialize
  @id = nil
  @segments = {}
  @salt = ''
  @percent_traffic = 0
  @is_user_list_enabled = false
  @key = ''
  @type = ''
  @name = ''
  @is_forced_variation_enabled = false
  @variations = []
  @metrics = []
  @variables = []
  @variation_id = nil
  @campaign_id = nil
  @rule_key = ''
end

Instance Attribute Details

#campaign_idObject (readonly)

Returns the value of attribute campaign_id.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def campaign_id
  @campaign_id
end

#idObject (readonly)

Returns the value of attribute id.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def id
  @id
end

#is_forced_variation_enabledObject (readonly)

Returns the value of attribute is_forced_variation_enabled.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def is_forced_variation_enabled
  @is_forced_variation_enabled
end

#is_user_list_enabledObject (readonly)

Returns the value of attribute is_user_list_enabled.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def is_user_list_enabled
  @is_user_list_enabled
end

#keyObject (readonly)

Returns the value of attribute key.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def key
  @key
end

#metricsObject (readonly)

Returns the value of attribute metrics.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def metrics
  @metrics
end

#nameObject (readonly)

Returns the value of attribute name.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def name
  @name
end

#percent_trafficObject (readonly)

Returns the value of attribute percent_traffic.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def percent_traffic
  @percent_traffic
end

#rule_keyObject (readonly)

Returns the value of attribute rule_key.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def rule_key
  @rule_key
end

#saltObject (readonly)

Returns the value of attribute salt.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def salt
  @salt
end

#segmentsObject (readonly)

Returns the value of attribute segments.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def segments
  @segments
end

#typeObject (readonly)

Returns the value of attribute type.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def type
  @type
end

#variablesObject (readonly)

Returns the value of attribute variables.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def variables
  @variables
end

#variation_idObject (readonly)

Returns the value of attribute variation_id.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def variation_id
  @variation_id
end

#variationsObject (readonly)

Returns the value of attribute variations.



20
21
22
# File 'lib/wingify/models/campaign/campaign_model.rb', line 20

def variations
  @variations
end

Instance Method Details

#copy(campaign_model) ⇒ Object

Copies campaign properties from another CampaignModel instance



43
44
45
46
47
48
# File 'lib/wingify/models/campaign/campaign_model.rb', line 43

def copy(campaign_model)
  @metrics = campaign_model.metrics
  @variations = campaign_model.variations
  @variables = campaign_model.variables
  process_campaign_keys(campaign_model)
end

#get_campaign_idObject



121
122
123
# File 'lib/wingify/models/campaign/campaign_model.rb', line 121

def get_campaign_id
  @campaign_id
end

#get_idObject



61
62
63
# File 'lib/wingify/models/campaign/campaign_model.rb', line 61

def get_id
  @id
end

#get_is_forced_variation_enabledObject



97
98
99
# File 'lib/wingify/models/campaign/campaign_model.rb', line 97

def get_is_forced_variation_enabled
  @is_forced_variation_enabled
end

#get_is_user_list_enabledObject



77
78
79
# File 'lib/wingify/models/campaign/campaign_model.rb', line 77

def get_is_user_list_enabled
  @is_user_list_enabled
end

#get_keyObject



81
82
83
# File 'lib/wingify/models/campaign/campaign_model.rb', line 81

def get_key
  @key
end

#get_metricsObject



109
110
111
# File 'lib/wingify/models/campaign/campaign_model.rb', line 109

def get_metrics
  @metrics
end

#get_nameObject



93
94
95
# File 'lib/wingify/models/campaign/campaign_model.rb', line 93

def get_name
  @name
end

#get_rule_keyObject



125
126
127
# File 'lib/wingify/models/campaign/campaign_model.rb', line 125

def get_rule_key
  @rule_key
end

#get_saltObject



69
70
71
# File 'lib/wingify/models/campaign/campaign_model.rb', line 69

def get_salt
  @salt
end

#get_segmentsObject



65
66
67
# File 'lib/wingify/models/campaign/campaign_model.rb', line 65

def get_segments
  @segments
end

#get_trafficObject



73
74
75
# File 'lib/wingify/models/campaign/campaign_model.rb', line 73

def get_traffic
  @percent_traffic
end

#get_typeObject



89
90
91
# File 'lib/wingify/models/campaign/campaign_model.rb', line 89

def get_type
  @type
end

#get_variablesObject



113
114
115
# File 'lib/wingify/models/campaign/campaign_model.rb', line 113

def get_variables
  @variables
end

#get_variation_idObject



117
118
119
# File 'lib/wingify/models/campaign/campaign_model.rb', line 117

def get_variation_id
  @variation_id
end

#get_variationsObject



101
102
103
# File 'lib/wingify/models/campaign/campaign_model.rb', line 101

def get_variations
  @variations
end

#model_from_dictionary(campaign) ⇒ Object

Creates a model instance from a dictionary (hash) or CampaignModel



51
52
53
54
55
56
57
58
59
# File 'lib/wingify/models/campaign/campaign_model.rb', line 51

def model_from_dictionary(campaign)
  if campaign.is_a?(Hash)
    process_campaign_properties(campaign)
    process_campaign_keys(campaign)
  elsif campaign.is_a?(CampaignModel)
    process_campaign_model(campaign)
  end
  self
end

#process_campaign_keys(campaign) ⇒ Object

Process campaign keys



141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/wingify/models/campaign/campaign_model.rb', line 141

def process_campaign_keys(campaign)
  @id = campaign["id"]
  @percent_traffic = campaign["percentTraffic"]
  @name = campaign["name"]
  @variation_id = campaign["variationId"]
  @campaign_id = campaign["campaignId"]
  @rule_key = campaign["ruleKey"]
  @is_forced_variation_enabled = campaign["isForcedVariationEnabled"]
  @is_user_list_enabled = campaign["isUserListEnabled"]
  @segments = campaign["segments"]
  @key = campaign["key"]
  @type = campaign["type"]
  @salt = campaign["salt"]
end

#process_campaign_model(campaign_model) ⇒ Object

Process campaign properties from CampaignModel instance



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/wingify/models/campaign/campaign_model.rb', line 175

def process_campaign_model(campaign_model)
  @variables = campaign_model.variables
  @variations = campaign_model.variations
  @metrics = campaign_model.metrics
  @id = campaign_model.id
  @percent_traffic = campaign_model.percent_traffic
  @name = campaign_model.name
  @variation_id = campaign_model.variation_id
  @campaign_id = campaign_model.campaign_id
  @rule_key = campaign_model.rule_key
  @is_forced_variation_enabled = campaign_model.is_forced_variation_enabled
  @is_user_list_enabled = campaign_model.is_user_list_enabled
  @segments = campaign_model.segments
  @key = campaign_model.key
  @type = campaign_model.type
  @salt = campaign_model.salt
end

#process_campaign_properties(campaign) ⇒ Object

Process campaign properties (metrics, variations, variables)



134
135
136
137
138
# File 'lib/wingify/models/campaign/campaign_model.rb', line 134

def process_campaign_properties(campaign)
  @variables = process_variables(campaign["variables"]) if campaign["variables"]
  @variations = process_variations(campaign["variations"]) if campaign["variations"]
  @metrics = process_metrics(campaign["metrics"]) if campaign["metrics"]
end

#process_metrics(metrics_list) ⇒ Object

Process metrics



169
170
171
172
# File 'lib/wingify/models/campaign/campaign_model.rb', line 169

def process_metrics(metrics_list)
  return [] if metrics_list.nil? || metrics_list.is_a?(Hash) # Handle empty cases
  metrics_list.map { |metric| MetricModel.new.model_from_dictionary(metric) }
end

#process_variables(variable_list) ⇒ Object

Process variables



157
158
159
160
# File 'lib/wingify/models/campaign/campaign_model.rb', line 157

def process_variables(variable_list)
  return [] if variable_list.nil? || variable_list.is_a?(Hash) # Handle empty cases
  variable_list.map { |variable| VariableModel.new.model_from_dictionary(variable) }
end

#process_variations(variation_list) ⇒ Object

Process variations



163
164
165
166
# File 'lib/wingify/models/campaign/campaign_model.rb', line 163

def process_variations(variation_list)
  return [] if variation_list.nil? || variation_list.is_a?(Hash) # Handle empty cases
  variation_list.map { |variation| VariationModel.new.model_from_dictionary(variation) }
end

#set_key(key) ⇒ Object



85
86
87
# File 'lib/wingify/models/campaign/campaign_model.rb', line 85

def set_key(key)
  @key = key
end

#set_rule_key(rule_key) ⇒ Object



129
130
131
# File 'lib/wingify/models/campaign/campaign_model.rb', line 129

def set_rule_key(rule_key)
  @rule_key = rule_key
end

#set_variations(variations) ⇒ Object



105
106
107
# File 'lib/wingify/models/campaign/campaign_model.rb', line 105

def set_variations(variations)
  @variations = variations
end