Class: Active::Services::ATS

Inherits:
IActivity show all
Defined in:
lib/services/ats.rb,
lib/services/_ats.rb

Instance Attribute Summary collapse

Attributes inherited from IActivity

#asset_id, #asset_type_id, #data, #online_registration

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from IActivity

#validated_address

Constructor Details

#initialize(data = {}, preload_metadata = false) ⇒ ATS

EXAMPLE Data hash “assetId”=>“A9EF9D79-F859-4443-A9BB-91E1833DF2D5”, “substitutionUrl”=>“1878023”, “city”=>“Antioch”, “contactName”=>“City of Antioch”, “trackbackurl”=>“www.active.com/page/Event_Details.htm?event_id=1878023&assetId=A9EF9D79-F859-4443-A9BB-91E1833DF2D5”, “category”=>“Activities”, “zip”=>“94531”, “userCommentText”=>nil, “location”=>“Multi-use Room (prewett) - Prewett Family Park & Center”, “latitude”=>“37.95761”, :asset_id=>“A9EF9D79-F859-4443-A9BB-91E1833DF2D5”, “searchWeight”=>“1”, “country”=>“United States”, “participationCriteria”=>“All”, “dma”=>“San Francisco - Oakland - San Jose”, “isSearchable”=>“true”, :asset_name=>“Fitness, Pilates Mat Class (16 Yrs. & Up)”, :substitution_url=>“1878023”, :asset_type_id=>“EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65”, “row”=>“1”, “image1”=>“”, “startDate”=>“2010-09-13”, “contactPhone”=>“925-779-7070”, :asset_type_name=>“Active.com Event Registration”, “onlineDonationAvailable”=>“0”, “avgUserRating”=>nil, “market”=>“San Francisco - Oakland - San Jose”, “assetTypeId”=>“EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65”, “assetName”=>“Fitness, Pilates Mat Class (16 Yrs. & Up)”, “channel”=>“Not Specified”, “seourl”=>“www.active.com/not-specified-recware-activities/antioch-ca/fitness-pilates-mat-class-16-yrs-and-up-2010”, :xmlns=>“api.asset.services.active.com”, :url=>“www.active.com/page/Event_Details.htm?event_id=1878023”, “mediaType”=>“Recware Activities”, “startTime”=>“18:15:00”, “endTime”=>“18:15:00”, “contactEmail”=>“[email protected]”, “eventResults”=>nil, “longitude”=>“-121.7936”, “endDate”=>“2010-09-13”, “onlineRegistrationAvailable”=>“true”, “onlineMembershipAvailable”=>“0”, “state”=>“California” “assetId”=>“D9A22F33-8A14-4175-8D5B-D11578212A98”, “substitutionUrl”=>“1847738”, “city”=>“Encino”, “contactName”=>“Lilliane Ballesteros”, “trackbackurl”=>“www.active.com/page/Event_Details.htm?event_id=1847738&assetId=D9A22F33-8A14-4175-8D5B-D11578212A98”, “category”=>“Activities”, “zip”=>“91406”, “userCommentText”=>nil, “location”=>“Balboa Park/Lake Balboa”, “latitude”=>“34.19933”, :asset_id=>“D9A22F33-8A14-4175-8D5B-D11578212A98”, “searchWeight”=>“1”, “country”=>“United States”, “participationCriteria”=>“All”, “dma”=>“Los Angeles”, “isSearchable”=>“1”, :asset_name=>“2nd Annual weSPARK 10K Run & 5K Run Walk”, :substitution_url=>“1847738”, :asset_type_id=>“EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65”, “row”=>“1”, “image1”=>“”, “startDate”=>“2010-11-14”, “contactPhone”=>“818-906-3022”, :asset_type_name=>“Active.com Event Registration”, “onlineDonationAvailable”=>“0”, “avgUserRating”=>nil, “market”=>“Los Angeles”, “assetTypeId”=>“EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65”, “assetName”=>“2nd Annual weSPARK 10K Run & 5K Run Walk”, “channel”=>[“Running”, “Walking”], “seourl”=>“www.active.com/running/encino-ca/2nd-annual-wespark-10k-run-and-5k-run-walk-2010”, :xmlns=>“api.asset.services.active.com”, :url=>“www.active.com/page/Event_Details.htm?event_id=1847738”, “mediaType”=>[“Event”, “Event\10K”, “Event\5K”], “startTime”=>“8:00:00”, “endTime”=>“8:00:00”, “contactEmail”=>“[email protected]”, “eventResults”=>nil, “longitude”=>“-118.4924”, “endDate”=>“2010-11-14”, “onlineRegistrationAvailable”=>“1”, “onlineMembershipAvailable”=>“0”, “state”=>“California”, “estParticipants”=>“1400”, “eventURL”=>“www.wespark.org



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/services/ats.rb', line 14

def initialize(data={},=false)
  # need to hold on to original data
  @data             = data
  @asset_id         = data[:asset_id]
  @url              = data[:url]
  @asset_type_id    = data[:asset_type_id]
  @title            = data[:asset_name] if data[:asset_name]
  @substitution_url = data[:substitution_url]
  # @metadata_loaded = false
  # load_metadata if preload_metadata
end

Instance Attribute Details

#metadata_loadedObject (readonly)

Returns the value of attribute metadata_loaded.



9
10
11
# File 'lib/services/ats.rb', line 9

def 
  @metadata_loaded
end

Class Method Details

.find_by_id(id) ⇒ Object

EXAMPLE lazy load the data for some_crazy_method def some_crazy

return @some_crazy unless @some_crazy.nil?
@some_crazy = @data[:some_crazy_method_from_ats].split replace twist bla bla bla

end



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/services/ats.rb', line 157

def self.find_by_id(id)
  begin
    c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
    c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
    r = c.get_asset_by_id! do |soap|
      soap.namespace = "http://api.asset.services.active.com"
      soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
    end
    ats = ATS.new(r.to_hash[:get_asset_by_id_response][:out])
    ats.

    return ats

  rescue Savon::SOAPFault => e
    raise ATSError, "Couldn't find activity with the id of #{id} error #{e.inspect}"
    return
  end
end

Instance Method Details

#addressObject



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/services/ats.rb', line 61

def address
  # load_metadata unless @metadata_loaded
  @address = validated_address({
    :name    => @data["location"],
    :address => @data["address"],
    :city    => @data["city"],
    :state   => @data["state"],
    :zip     => @data["zip"],
    :lat     => @data["latitude"],
    :lng     => @data["longitude"],
    :country => @data["country"]
  })
end

#categoriesObject



51
52
53
54
55
56
57
58
59
# File 'lib/services/ats.rb', line 51

def categories
  # load_metadata unless @metadata_loaded
  categories = @data["channel"]
  if categories.class==String
    [@data["channel"]]
  else
    @data["channel"]
  end
end

#categoryObject



110
111
112
# File 'lib/services/ats.rb', line 110

def category
  categories.first
end

#contact_emailObject



128
129
130
131
# File 'lib/services/ats.rb', line 128

def contact_email
  # load_metadata unless @metadata_loaded
  @data["contactEmail"] if @data.has_key?("contactEmail")
end

#contact_nameObject



123
124
125
126
# File 'lib/services/ats.rb', line 123

def contact_name
  # load_metadata unless @metadata_loaded
  @data["contactName"] if @data.has_key?("contactName")
end

#contact_phoneObject



132
133
134
# File 'lib/services/ats.rb', line 132

def contact_phone
  @data["contactPhone"]  if @data.has_key?("contactPhone")
end

#descObject



114
115
116
117
118
119
120
121
# File 'lib/services/ats.rb', line 114

def desc
  # load_metadata unless @metadata_loaded
  if @data.has_key?("allText")
    @data["allText"]
  elsif @data.has_key?("summary")
    @data["summary"]
  end
end

#end_dateObject



92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/services/ats.rb', line 92

def end_date
  # load_metadata unless @metadata_loaded
  if @data.has_key?("endDate")
    if @data.has_key?("endTime")
      (DateTime.parse "#{@data["endDate"]} #{@data["endTime"]}")
    else
      (DateTime.parse @data["endDate"])
    end
  else
    nil
  end
end

#end_timeObject



105
106
107
# File 'lib/services/ats.rb', line 105

def end_time
  end_date
end

#load_metadataObject



176
177
178
179
180
# File 'lib/services/ats.rb', line 176

def 
   = ATS.(@asset_id)
  @data.merge! Hash.from_xml(.to_hash[:get_asset_metadata_response][:out])["importSource"]["asset"]
  @metadata_loaded=true
end

#sourceObject



26
27
28
# File 'lib/services/ats.rb', line 26

def source
  :ats
end

#start_dateObject



75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/services/ats.rb', line 75

def start_date
  # load_metadata unless @metadata_loaded
  if @data.has_key?("startDate")
    if @data.has_key?("startTime")
      (DateTime.parse "#{@data["startDate"]} #{@data["startTime"]}")
    else
      (DateTime.parse @data["startDate"])
    end
  else
    nil
  end
end

#start_timeObject



88
89
90
# File 'lib/services/ats.rb', line 88

def start_time
  start_date
end

#substitutionUrlObject



136
137
138
# File 'lib/services/ats.rb', line 136

def substitutionUrl
  @data[:substitution_url]
end

#titleObject



31
32
33
34
35
36
37
38
# File 'lib/services/ats.rb', line 31

def title
  # load_metadata unless @metadata_loaded
  # if @data.has_key?("assetName")
  @data["assetName"]
  # else
  #   @title
  # end
end

#urlObject



40
41
42
43
44
45
46
47
48
49
# File 'lib/services/ats.rb', line 40

def url
  # load_metadata unless @metadata_loaded
  if @data.has_key?("seourl")
    @data["seourl"]
  elsif @data.has_key?("trackbackurl")
    @data["trackbackurl"]
  else
    @url
  end
end

#userObject



140
141
142
143
144
145
146
147
# File 'lib/services/ats.rb', line 140

def user
  email        = contact_email
  u            = User.new
  u.email      = email if Validators.email(email)
  u.first_name = contact_name
  u.phone      = contact_phone
  u
end