stbaldricks 1.5.1.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/lib/stbaldricks.rb +2 -0
  4. data/lib/stbaldricks/api.rb +7 -0
  5. data/lib/stbaldricks/api_connector.rb +47 -0
  6. data/lib/stbaldricks/client.rb +7 -0
  7. data/lib/stbaldricks/configuration.rb +47 -0
  8. data/lib/stbaldricks/default_logger.rb +24 -0
  9. data/lib/stbaldricks/endpoints/communicate.rb +67 -0
  10. data/lib/stbaldricks/endpoints/config.rb +18 -0
  11. data/lib/stbaldricks/endpoints/contact.rb +12 -0
  12. data/lib/stbaldricks/endpoints/event.rb +39 -0
  13. data/lib/stbaldricks/endpoints/event_application.rb +32 -0
  14. data/lib/stbaldricks/endpoints/fund.rb +24 -0
  15. data/lib/stbaldricks/endpoints/kid.rb +24 -0
  16. data/lib/stbaldricks/endpoints/kid_honor.rb +17 -0
  17. data/lib/stbaldricks/endpoints/lib/entity.rb +247 -0
  18. data/lib/stbaldricks/endpoints/message.rb +27 -0
  19. data/lib/stbaldricks/endpoints/newsletter_recipient.rb +41 -0
  20. data/lib/stbaldricks/endpoints/participant.rb +66 -0
  21. data/lib/stbaldricks/endpoints/photo.rb +51 -0
  22. data/lib/stbaldricks/endpoints/recurring_gift.rb +18 -0
  23. data/lib/stbaldricks/endpoints/search.rb +63 -0
  24. data/lib/stbaldricks/endpoints/shave_schedule.rb +28 -0
  25. data/lib/stbaldricks/endpoints/user.rb +106 -0
  26. data/lib/stbaldricks/entities/batch.rb +29 -0
  27. data/lib/stbaldricks/entities/campaign.rb +37 -0
  28. data/lib/stbaldricks/entities/communicate.rb +20 -0
  29. data/lib/stbaldricks/entities/config.rb +41 -0
  30. data/lib/stbaldricks/entities/contact.rb +40 -0
  31. data/lib/stbaldricks/entities/contact_group.rb +29 -0
  32. data/lib/stbaldricks/entities/document_library.rb +19 -0
  33. data/lib/stbaldricks/entities/document_library_category.rb +14 -0
  34. data/lib/stbaldricks/entities/donation.rb +372 -0
  35. data/lib/stbaldricks/entities/donation/donor_type.rb +13 -0
  36. data/lib/stbaldricks/entities/donation/how_created.rb +22 -0
  37. data/lib/stbaldricks/entities/donation/payment_type.rb +17 -0
  38. data/lib/stbaldricks/entities/donation/promo_code.rb +22 -0
  39. data/lib/stbaldricks/entities/donation/recipient_type.rb +17 -0
  40. data/lib/stbaldricks/entities/donation/special_donation_type.rb +78 -0
  41. data/lib/stbaldricks/entities/donation/status.rb +12 -0
  42. data/lib/stbaldricks/entities/donation/submitter_type.rb +13 -0
  43. data/lib/stbaldricks/entities/donor.rb +15 -0
  44. data/lib/stbaldricks/entities/event.rb +173 -0
  45. data/lib/stbaldricks/entities/event/fund_relationship_type.rb +15 -0
  46. data/lib/stbaldricks/entities/event/how_created.rb +14 -0
  47. data/lib/stbaldricks/entities/event/promo_code.rb +11 -0
  48. data/lib/stbaldricks/entities/event/status.rb +13 -0
  49. data/lib/stbaldricks/entities/event/sub_type.rb +16 -0
  50. data/lib/stbaldricks/entities/event/type.rb +12 -0
  51. data/lib/stbaldricks/entities/event_application.rb +135 -0
  52. data/lib/stbaldricks/entities/event_application/model_type.rb +15 -0
  53. data/lib/stbaldricks/entities/event_application/status.rb +23 -0
  54. data/lib/stbaldricks/entities/event_donation_summary.rb +18 -0
  55. data/lib/stbaldricks/entities/event_participant_summary.rb +17 -0
  56. data/lib/stbaldricks/entities/event_supporter.rb +24 -0
  57. data/lib/stbaldricks/entities/fund.rb +98 -0
  58. data/lib/stbaldricks/entities/fundraiser.rb +124 -0
  59. data/lib/stbaldricks/entities/international_partner.rb +58 -0
  60. data/lib/stbaldricks/entities/kid.rb +190 -0
  61. data/lib/stbaldricks/entities/kid_honor.rb +123 -0
  62. data/lib/stbaldricks/entities/lib/address.rb +25 -0
  63. data/lib/stbaldricks/entities/lib/base.rb +505 -0
  64. data/lib/stbaldricks/entities/lib/cacheable.rb +43 -0
  65. data/lib/stbaldricks/entities/lib/default_cacheable.rb +17 -0
  66. data/lib/stbaldricks/entities/lib/email_address.rb +15 -0
  67. data/lib/stbaldricks/entities/lib/error.rb +38 -0
  68. data/lib/stbaldricks/entities/lib/fundraising_page.rb +20 -0
  69. data/lib/stbaldricks/entities/lib/geo_location.rb +9 -0
  70. data/lib/stbaldricks/entities/lib/location.rb +27 -0
  71. data/lib/stbaldricks/entities/lib/name.rb +17 -0
  72. data/lib/stbaldricks/entities/lib/not_implemented_object.rb +32 -0
  73. data/lib/stbaldricks/entities/lib/opt_out_settings.rb +21 -0
  74. data/lib/stbaldricks/entities/lib/payment.rb +86 -0
  75. data/lib/stbaldricks/entities/lib/permissions.rb +33 -0
  76. data/lib/stbaldricks/entities/lib/phone.rb +29 -0
  77. data/lib/stbaldricks/entities/lib/third_party_media.rb +20 -0
  78. data/lib/stbaldricks/entities/lib/top_level.rb +99 -0
  79. data/lib/stbaldricks/entities/lib/venue.rb +18 -0
  80. data/lib/stbaldricks/entities/memorial.rb +61 -0
  81. data/lib/stbaldricks/entities/message.rb +65 -0
  82. data/lib/stbaldricks/entities/newsletter_recipient.rb +17 -0
  83. data/lib/stbaldricks/entities/organization.rb +90 -0
  84. data/lib/stbaldricks/entities/page.rb +49 -0
  85. data/lib/stbaldricks/entities/participant.rb +216 -0
  86. data/lib/stbaldricks/entities/person.rb +403 -0
  87. data/lib/stbaldricks/entities/photo.rb +260 -0
  88. data/lib/stbaldricks/entities/recurring_gift.rb +215 -0
  89. data/lib/stbaldricks/entities/response.rb +37 -0
  90. data/lib/stbaldricks/entities/search.rb +223 -0
  91. data/lib/stbaldricks/entities/section.rb +15 -0
  92. data/lib/stbaldricks/entities/shave_schedule.rb +69 -0
  93. data/lib/stbaldricks/entities/summary.rb +32 -0
  94. data/lib/stbaldricks/entities/team.rb +95 -0
  95. data/lib/stbaldricks/entities/user.rb +76 -0
  96. data/lib/stbaldricks/enums/country.rb +223 -0
  97. data/lib/stbaldricks/enums/feature.rb +29 -0
  98. data/lib/stbaldricks/enums/league_status.rb +16 -0
  99. data/lib/stbaldricks/enums/model_type.rb +39 -0
  100. data/lib/stbaldricks/enums/permission.rb +223 -0
  101. data/lib/stbaldricks/enums/permission_model_type.rb +21 -0
  102. data/lib/stbaldricks/enums/province.rb +39 -0
  103. data/lib/stbaldricks/enums/state.rb +137 -0
  104. data/lib/stbaldricks/enums/top_level_category_type.rb +25 -0
  105. data/lib/stbaldricks/errors.rb +18 -0
  106. data/lib/stbaldricks/log.rb +16 -0
  107. data/lib/stbaldricks/patches/array.rb +6 -0
  108. data/lib/stbaldricks/patches/boolean.rb +25 -0
  109. data/lib/stbaldricks/patches/class.rb +13 -0
  110. data/lib/stbaldricks/patches/float.rb +9 -0
  111. data/lib/stbaldricks/patches/hash.rb +16 -0
  112. data/lib/stbaldricks/patches/integer.rb +9 -0
  113. data/lib/stbaldricks/patches/nil.rb +25 -0
  114. data/lib/stbaldricks/patches/string.rb +54 -0
  115. data/lib/stbaldricks/request.rb +146 -0
  116. data/lib/stbaldricks/version.rb +5 -0
  117. metadata +215 -0
@@ -0,0 +1,16 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+
3
+ module SBF
4
+ module Client
5
+ class Event < SBF::Client::TopLevelEntity
6
+ module SubType
7
+ NONE = 'none'
8
+ VIRTUAL = 'virtual'
9
+ CAMPUS = 'campus'
10
+ COMMUNITY = 'community'
11
+ CORPORATE = 'corporate'
12
+ SCHOOL = 'school'
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+
3
+ module SBF
4
+ module Client
5
+ class Event < SBF::Client::TopLevelEntity
6
+ module Type
7
+ HEAD_SHAVING = 'head-shaving'
8
+ OTHER = 'other'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,135 @@
1
+ require 'stbaldricks/endpoints/event_application'
2
+ require 'stbaldricks/entities/fund'
3
+ require 'stbaldricks/entities/campaign'
4
+ require 'stbaldricks/entities/event'
5
+ require 'stbaldricks/entities/team'
6
+ require 'stbaldricks/entities/participant'
7
+ require 'stbaldricks/entities/fundraiser'
8
+ require 'stbaldricks/entities/lib/address'
9
+ require 'stbaldricks/entities/lib/base'
10
+ require 'stbaldricks/entities/lib/top_level'
11
+ require 'stbaldricks/entities/lib/name'
12
+
13
+ module SBF
14
+ module Client
15
+ class EventApplication < SBF::Client::TopLevelEntity
16
+ endpoint SBF::Client::EventApplicationEndpoint
17
+ actions DEFAULT_CRUD_ACTIONS
18
+ blacklist_action :delete
19
+
20
+ class FullParticipant < SBF::Client::FullParticipant
21
+ attr_reader :model_type
22
+
23
+ def model_type
24
+ SBF::Client::EventApplication::ModelType::PARTICIPANT
25
+ end
26
+ end
27
+
28
+ class PartialParticipant < SBF::Client::PartialParticipant
29
+ attr_reader :model_type
30
+ attr_accessor :year
31
+
32
+ def model_type
33
+ SBF::Client::EventApplication::ModelType::PARTICIPANT
34
+ end
35
+ end
36
+
37
+ class FullFundraiser < SBF::Client::FullFundraiser
38
+ attr_reader :model_type
39
+
40
+ def model_type
41
+ SBF::Client::EventApplication::ModelType::FUNDRAISER
42
+ end
43
+ end
44
+
45
+ class PartialFundraiser < SBF::Client::PartialFundraiser
46
+ attr_reader :model_type
47
+ attr_accessor :year
48
+
49
+ def model_type
50
+ SBF::Client::EventApplication::ModelType::FUNDRAISER
51
+ end
52
+ end
53
+
54
+ class FullTeam < SBF::Client::FullTeam
55
+ attr_reader :model_type
56
+
57
+ def model_type
58
+ SBF::Client::EventApplication::ModelType::TEAM
59
+ end
60
+ end
61
+
62
+ class PartialTeam < SBF::Client::PartialTeam
63
+ attr_reader :model_type
64
+ attr_accessor :year
65
+
66
+ def model_type
67
+ SBF::Client::EventApplication::ModelType::TEAM
68
+ end
69
+ end
70
+
71
+ class FullEvent < SBF::Client::FullEvent
72
+ attr_reader :model_type
73
+
74
+ def model_type
75
+ SBF::Client::EventApplication::ModelType::EVENT
76
+ end
77
+ end
78
+
79
+ class PartialEvent < SBF::Client::PartialEvent
80
+ attr_reader :model_type
81
+
82
+ def model_type
83
+ SBF::Client::EventApplication::ModelType::EVENT
84
+ end
85
+ end
86
+
87
+ class Requestor < SBF::Client::BaseEntity
88
+ attr_accessor :name
89
+ entity_attr_accessor :name_pieces, 'SBF::Client::NamePieces'
90
+ entity_attr_accessor :email_address, 'SBF::Client::EmailAddress'
91
+ entity_attr_accessor :phone, 'SBF::Client::Phone'
92
+ entity_attr_accessor :address, 'SBF::Client::Address'
93
+ end
94
+
95
+ attr_accessor :id
96
+ attr_accessor :requested_event_title
97
+ attr_accessor :status
98
+ attr_accessor :is_archived
99
+ attr_accessor :no_conversion_reason
100
+ attr_accessor :promotional_code
101
+ attr_accessor :created_at, :modified_at
102
+ entity_attr_accessor :requestor, 'SBF::Client::EventApplication::Requestor'
103
+ entity_attr_accessor :qualifier, 'SBF::Client::FullPerson', 'SBF::Client::PartialPerson', true
104
+ entity_attr_accessor :fund, 'SBF::Client::FullFund', 'SBF::Client::PartialFund', true
105
+ entity_attr_accessor :campaign, 'SBF::Client::FullCampaign', 'SBF::Client::PartialCampaign', true
106
+
107
+ multitype_attr_accessor(
108
+ :model,
109
+ [
110
+ [
111
+ ->(v) { v[:model_type] == SBF::Client::EventApplication::ModelType::PARTICIPANT },
112
+ 'SBF::Client::EventApplication::FullParticipant',
113
+ 'SBF::Client::EventApplication::PartialParticipant'
114
+ ],
115
+ [
116
+ ->(v) { v[:model_type] == SBF::Client::EventApplication::ModelType::FUNDRAISER },
117
+ 'SBF::Client::EventApplication::FullFundraiser',
118
+ 'SBF::Client::EventApplication::PartialFundraiser'
119
+ ],
120
+ [
121
+ ->(v) { v[:model_type] == SBF::Client::EventApplication::ModelType::TEAM },
122
+ 'SBF::Client::EventApplication::FullTeam',
123
+ 'SBF::Client::EventApplication::PartialTeam'
124
+ ],
125
+ [
126
+ ->(v) { v[:model_type] == SBF::Client::EventApplication::ModelType::EVENT },
127
+ 'SBF::Client::EventApplication::FullEvent',
128
+ 'SBF::Client::EventApplication::PartialEvent'
129
+ ]
130
+ ],
131
+ optional: true
132
+ )
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,15 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+
3
+ module SBF
4
+ module Client
5
+ class EventApplication < SBF::Client::TopLevelEntity
6
+ module ModelType
7
+ EVENT = 'event'
8
+ TEAM = 'team'
9
+ PARTICIPANT = 'participant'
10
+ FUNDRAISER = 'fundraiser'
11
+ MEMORIAL = 'memorial'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+
3
+ module SBF
4
+ module Client
5
+ class EventApplication < SBF::Client::TopLevelEntity
6
+ module Status
7
+ NEW = 'new'
8
+ REACHED_OUT = 'reached_out'
9
+ CREATED_EVENT = 'created_event'
10
+ CREATED_PARTICIPANT = 'created_participant'
11
+ CREATED_TEAM = 'created_team'
12
+ CREATED_FUNDRAISER = 'created_fundraiser'
13
+ NO_CONVERSION = 'no_conversion'
14
+ CONNECTED = 'connected'
15
+ DUPLICATE = 'duplicate'
16
+ CREATED_DONOR = 'created_donor'
17
+ NEXT_YEAR = 'next_year'
18
+ FINALIZING = 'finalizing'
19
+ CREATED_MEMORIAL = 'created_memorial'
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+
3
+ module SBF
4
+ module Client
5
+ class EventDonationSummary < SBF::Client::TopLevelEntity
6
+ actions DEFAULT_CRUD_ACTIONS
7
+ blacklist_action :get
8
+ blacklist_action :create
9
+ blacklist_action :update
10
+ blacklist_action :delete
11
+
12
+ attr_accessor :amount_raised
13
+ attr_accessor :donations
14
+ attr_accessor :direct_amount_raised
15
+ attr_accessor :direct_donations
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+
3
+ module SBF
4
+ module Client
5
+ class EventParticipantSummary < SBF::Client::TopLevelEntity
6
+ actions DEFAULT_CRUD_ACTIONS
7
+ blacklist_action :get
8
+ blacklist_action :create
9
+ blacklist_action :update
10
+ blacklist_action :delete
11
+
12
+ attr_accessor :shavees
13
+ attr_accessor :non_shavees
14
+ attr_accessor :participants
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,24 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+ require 'stbaldricks/entities/event'
3
+ require 'htmlentities'
4
+
5
+ module SBF
6
+ module Client
7
+ class EventSupporter < SBF::Client::TopLevelEntity
8
+ actions DEFAULT_CRUD_ACTIONS
9
+
10
+ disallow_instantiation
11
+ attr_accessor :id, :sort_order
12
+ end
13
+
14
+ class PartialEventSupporter < EventSupporter
15
+ end
16
+
17
+ class FullEventSupporter < EventSupporter
18
+ attr_accessor :photo_url
19
+ attr_accessor :name, :url
20
+ entity_attr_accessor :event, 'SBF::Client::FullEvent', 'SBF::Client::PartialEvent', true
21
+ entity_attr_accessor :photo, 'SBF::Client::Photo'
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,98 @@
1
+ require 'stbaldricks/entities/fund'
2
+ require 'stbaldricks/entities/lib/top_level'
3
+ require 'stbaldricks/entities/lib/fundraising_page'
4
+ require 'stbaldricks/endpoints/fund'
5
+ require 'htmlentities'
6
+
7
+ module SBF
8
+ module Client
9
+ class Fund < SBF::Client::TopLevelEntity
10
+ endpoint SBF::Client::FundEndpoint
11
+ action :allowed_entities
12
+ action :get
13
+ action :find
14
+ action :find_first
15
+ action :update
16
+
17
+ disallow_instantiation
18
+
19
+ class Photos < SBF::Client::BaseEntity
20
+ attr_reader :avatar, :default
21
+ end
22
+
23
+ class YearlyTotals < SBF::Client::BaseEntity
24
+ attr_reader :year
25
+ attr_reader :fundraisers
26
+ attr_reader :participants
27
+ attr_reader :shavees
28
+ attr_reader :non_shavees
29
+ attr_reader :teams
30
+ attr_reader :events
31
+ attr_reader :amount_raised
32
+
33
+ def to_hash
34
+ {}.tap do |hsh|
35
+ self.class.attributes.each { |name| hsh[name] = send(name.to_sym) unless name.to_sym == :year }
36
+ end
37
+ end
38
+ end
39
+
40
+ class Totals < SBF::Client::BaseEntity
41
+ attr_reader :fundraisers
42
+ attr_reader :participants
43
+ attr_reader :shavees
44
+ attr_reader :non_shavees
45
+ attr_reader :teams
46
+ attr_reader :events
47
+ attr_reader :amount_raised
48
+ end
49
+
50
+ class Photos < SBF::Client::BaseEntity
51
+ attr_reader :avatar, :default
52
+ end
53
+ end
54
+
55
+ class PartialFund < Fund
56
+ attr_accessor :id
57
+ end
58
+
59
+ class FullFund < Fund
60
+ attr_accessor :id
61
+ attr_reader :display_name
62
+ attr_accessor :name
63
+ attr_accessor :disabled
64
+ attr_accessor :description
65
+ entity_attr_accessor :photos, 'SBF::Client::Fund::Photos'
66
+ entity_attr_reader :totals, 'SBF::Client::Fund::Totals'
67
+ entity_collection_attr_accessor :totals_by_year, 'SBF::Client::Fund::Total'
68
+ entity_attr_accessor :fundraising_page, 'SBF::Client::FundraisingPage', nil, true
69
+ entity_attr_accessor :photos, 'SBF::Client::Fund::Photos'
70
+ attr_accessor :kid_name
71
+ attr_accessor :offline_donation_uuid, :offline_donation_form
72
+
73
+ def display_name
74
+ HTMLEntities.new.decode(@display_name)
75
+ end
76
+
77
+ def totals_by_year=(value)
78
+ return [] if value.nil? || value.empty?
79
+
80
+ @totals_by_year = value.map { |k, v|
81
+ SBF::Client::Fund::YearlyTotals.new(v.merge(year: k.to_s.to_i))
82
+ }
83
+ end
84
+
85
+ def to_hash
86
+ hsh = super.to_hash
87
+ return hsh if @totals_by_year.nil?
88
+
89
+ hsh[:totals_by_year] = {}
90
+ @totals_by_year.each do |year_total|
91
+ hsh[:totals_by_year][year_total.year.to_s.to_sym] = year_total.to_hash
92
+ end
93
+
94
+ hsh
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,124 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+ require 'stbaldricks/entities/person'
3
+ require 'stbaldricks/entities/fund'
4
+ require 'stbaldricks/entities/event'
5
+ require 'stbaldricks/entities/team'
6
+ require 'stbaldricks/entities/lib/fundraising_page'
7
+ require 'stbaldricks/entities/lib/venue'
8
+ require 'stbaldricks/entities/lib/permissions'
9
+ require 'htmlentities'
10
+ require 'stbaldricks/entities/lib/default_cacheable'
11
+
12
+ module SBF
13
+ module Client
14
+ class Fundraiser < SBF::Client::TopLevelEntity
15
+ include Entities::DefaultCacheable
16
+ actions DEFAULT_CRUD_ACTIONS
17
+
18
+ disallow_instantiation
19
+
20
+ module Status
21
+ ACTIVE = 'active'
22
+ PENDING = 'pending'
23
+ end
24
+
25
+ module HowCreated
26
+ WEBSITE = 'website'
27
+ ADMIN_CONTROL_PANEL = 'admin_control_panel'
28
+ ADMIN_IMPORT = 'admin_import'
29
+ LEGACY = 'legacy'
30
+ MOBILE = 'mobile'
31
+ end
32
+
33
+ module FundRelationshipType
34
+ NO_ASSOCIATION = 'no_association'
35
+ INDIRECT_ONE = 'indirect_one'
36
+ INDIRECT_MULTIPLE = 'indirect_multiple'
37
+ DIRECT = 'direct'
38
+ DIRECT_BUT_LOCKED = 'direct_but_locked'
39
+ INHERITED_TEAM = 'inherited_team'
40
+ INHERITED_EVENT = 'inherited_event'
41
+ INHERITED_TEAMS_EVENT = 'inherited_teams_event'
42
+ INHERITED_BOTH_TEAM_AND_EVENT = 'inherited_both_team_and_event'
43
+ end
44
+
45
+ class Photos < SBF::Client::BaseEntity
46
+ attr_reader :avatar, :default
47
+ end
48
+
49
+ class Policies < SBF::Client::BaseEntity
50
+ attr_accessor :is_waiver_policy_accepted
51
+ end
52
+
53
+ class Totals < SBF::Client::BaseEntity
54
+ attr_reader :amount_raised
55
+ attr_reader :donations
56
+ end
57
+
58
+ class Rankings < SBF::Client::BaseEntity
59
+ class Ranking < SBF::Client::BaseEntity
60
+ attr_reader :rank, :total
61
+ end
62
+
63
+ entity_attr_reader :team, 'SBF::Client::Fundraiser::Rankings::Ranking'
64
+ entity_attr_reader :event, 'SBF::Client::Fundraiser::Rankings::Ranking'
65
+ end
66
+
67
+ class Venue < SBF::Client::BaseEntity
68
+ entity_attr_accessor :location, 'SBF::Client::Fundraiser::Location'
69
+ end
70
+
71
+ class Location < SBF::Client::BaseEntity
72
+ attr_accessor :name
73
+ entity_attr_accessor :address, 'SBF::Client::Address'
74
+
75
+ def name
76
+ HTMLEntities.new.decode(@name)
77
+ end
78
+ end
79
+ end
80
+
81
+ class PartialFundraiser < Fundraiser
82
+ attr_accessor :id
83
+ end
84
+
85
+ class FullFundraiser < Fundraiser
86
+ attr_accessor :id
87
+ attr_accessor :status
88
+ attr_accessor :title
89
+ attr_accessor :display_name_override
90
+ attr_reader :display_name
91
+ entity_attr_accessor :owner, 'SBF::Client::FullPerson'
92
+ attr_accessor :start_date, :end_date
93
+ attr_accessor :start_time, :end_time
94
+ attr_accessor :offline_donation_uuid, :offline_donation_form
95
+ attr_accessor :fundraising_goal, :fundraising_message
96
+ entity_attr_accessor :fundraising_page, 'SBF::Client::FundraisingPage', nil, true
97
+ entity_attr_accessor :event, 'SBF::Client::FullEvent', 'SBF::Client::PartialEvent', true
98
+ entity_attr_accessor :team, 'SBF::Client::FullTeam', 'SBF::Client::PartialTeam', true
99
+ entity_attr_accessor :fund, 'SBF::Client::FullFund', 'SBF::Client::PartialFund', true
100
+ attr_accessor :fund_relationship_type
101
+ entity_attr_accessor :venue, 'SBF::Client::Fundraiser::Venue'
102
+ entity_attr_accessor :photos, 'SBF::Client::Fundraiser::Photos'
103
+ entity_attr_accessor :policies, 'SBF::Client::Fundraiser::Policies'
104
+ entity_attr_reader :rankings, 'SBF::Client::Fundraiser::Rankings', nil, true
105
+ entity_attr_reader :totals, 'SBF::Client::Fundraiser::Totals'
106
+ attr_reader :created_at, :modified_at
107
+ attr_accessor :modified_by
108
+ attr_accessor :how_created
109
+ entity_attr_reader :permissions, 'SBF::Client::Permissions', nil, true
110
+
111
+ def active?
112
+ status == SBF::Client::Fundraiser::Status::ACTIVE
113
+ end
114
+
115
+ def display_name
116
+ HTMLEntities.new.decode(@display_name)
117
+ end
118
+
119
+ def title
120
+ HTMLEntities.new.decode(@title)
121
+ end
122
+ end
123
+ end
124
+ end