centaman 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/centaman.rb +5 -1
- data/lib/centaman/object/member.rb +66 -5
- data/lib/centaman/service.rb +10 -0
- data/lib/centaman/service/authenticate_member.rb +4 -1
- data/lib/centaman/service/create_primary_member.rb +49 -0
- data/lib/centaman/service/create_secondary_member.rb +51 -0
- data/lib/centaman/service/member.rb +17 -3
- data/lib/centaman/service/purchase_membership.rb +48 -0
- data/lib/centaman/service/update_member.rb +74 -0
- data/lib/centaman/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b086304bfe0d8678a187a7d43058fe00087fef991beb64217bb2ae125beccc56
|
4
|
+
data.tar.gz: a59a1b24532da83778e575e177991f9aefd1e7ceaef09cdc633cdc8ba95100f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8caa51a4d4a4504b243d0a70144090afeed1eb7bbbca210784e9e33987af853a4b58f19d265e8ba1df50cdf938d3748cb8ec9e8d917a8d06281932ebb1406ae5
|
7
|
+
data.tar.gz: 9c4b8cfeb6feaffd1b0901b74dc6b20ac8e9209ef07c0d6d8ce7013403797467e892243fe4109cff3f4f56954ed20fb49e75a000b1678727415b1acce0273524
|
data/lib/centaman.rb
CHANGED
@@ -7,20 +7,24 @@ require 'centaman/json_wrapper'
|
|
7
7
|
require 'centaman/object'
|
8
8
|
require 'centaman/filter'
|
9
9
|
require 'centaman/attribute'
|
10
|
+
require 'centaman/service/add_on'
|
10
11
|
require 'centaman/service/authenticate_member'
|
11
12
|
require 'centaman/service/booking_time'
|
12
13
|
require 'centaman/service/booking_type'
|
13
14
|
require 'centaman/service/capacity'
|
14
15
|
require 'centaman/service/coupon_check'
|
15
16
|
require 'centaman/service/create_customer'
|
17
|
+
require 'centaman/service/create_primary_member'
|
18
|
+
require 'centaman/service/create_secondary_member'
|
16
19
|
require 'centaman/service/extra'
|
17
20
|
require 'centaman/service/gift_ticket'
|
18
21
|
require 'centaman/service/general_admission_ticket'
|
19
22
|
require 'centaman/service/hold_ticket'
|
20
23
|
require 'centaman/service/membership_type'
|
21
24
|
require 'centaman/service/member'
|
22
|
-
require 'centaman/service/
|
25
|
+
require 'centaman/service/purchase_membership'
|
23
26
|
require 'centaman/service/purchase_ticket'
|
27
|
+
require 'centaman/service/update_member'
|
24
28
|
require 'centaman/service/ticket_type'
|
25
29
|
require 'centaman/object/booking_time'
|
26
30
|
require 'centaman/object/booking_type'
|
@@ -1,11 +1,60 @@
|
|
1
1
|
module Centaman
|
2
2
|
class Object::Member < Centaman::Object
|
3
3
|
# rubocop:disable Metrics/MethodLength
|
4
|
-
attr_reader :id, :package_id
|
4
|
+
attr_reader :id, :package_id, :address, :memberships, :phone
|
5
5
|
|
6
6
|
def define_variables(args)
|
7
7
|
super
|
8
|
-
@id = member_code
|
8
|
+
@id = member_code
|
9
|
+
@address = set_address
|
10
|
+
@phone = @address ? @address[:phone] : nil
|
11
|
+
@memberships = set_memberships
|
12
|
+
end
|
13
|
+
|
14
|
+
def full_name
|
15
|
+
[first_name, last_name].join(' ')
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_address
|
19
|
+
return unless home_address
|
20
|
+
{
|
21
|
+
street_address: home_address['Street1'],
|
22
|
+
street_address_two: home_address['Street2'],
|
23
|
+
suburb: home_address['Suburb'],
|
24
|
+
state: home_address['State'],
|
25
|
+
zip: home_address['Postcode'],
|
26
|
+
city: home_address['City'],
|
27
|
+
country: home_address['Country'],
|
28
|
+
phone: home_address['HomePhone'],
|
29
|
+
work_phone: home_address['WorkPhone'],
|
30
|
+
mobile_phone: home_address['MobilePhone']
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
def set_memberships
|
35
|
+
return [] unless membership_list && membership_list.any?
|
36
|
+
membership_list.map { |m| set_membership(m) }
|
37
|
+
end
|
38
|
+
|
39
|
+
def set_membership(membership)
|
40
|
+
{
|
41
|
+
linkfield: membership['Linkfield'],
|
42
|
+
type_name: membership['TypeName'],
|
43
|
+
cancelled: membership['Cancelled'],
|
44
|
+
activated: membership['Activated'],
|
45
|
+
unique_package_id: membership['UniquePackageId'],
|
46
|
+
member_code: membership['MemberCode'],
|
47
|
+
type_code: membership['TypeCode'],
|
48
|
+
cost: membership['Cost'],
|
49
|
+
tax: membership['Tax'],
|
50
|
+
paid: membership['Paid'],
|
51
|
+
join_date: membership['JoinDate'],
|
52
|
+
expiry_date: membership['ExpiryDate'],
|
53
|
+
is_gift: membership['IsGift'],
|
54
|
+
purchaser_renewal: membership['PurchaserRenewal'],
|
55
|
+
package_id: membership['PackageID'],
|
56
|
+
payment_gateway_reference: membership['PaymentGatewayReference']
|
57
|
+
}
|
9
58
|
end
|
10
59
|
|
11
60
|
def json
|
@@ -15,6 +64,7 @@ module Centaman
|
|
15
64
|
member_number: member_number,
|
16
65
|
first_name: first_name,
|
17
66
|
last_name: last_name,
|
67
|
+
full_name: full_name,
|
18
68
|
title: title,
|
19
69
|
email: email,
|
20
70
|
gender: gender,
|
@@ -25,6 +75,7 @@ module Centaman
|
|
25
75
|
gift_purchaser_id: gift_purchaser_id,
|
26
76
|
concession_card_number: concession_card_number,
|
27
77
|
incomplete: incomplete,
|
78
|
+
member_photo: member_photo,
|
28
79
|
memberships: memberships
|
29
80
|
}
|
30
81
|
end
|
@@ -43,7 +94,7 @@ module Centaman
|
|
43
94
|
),
|
44
95
|
Centaman::Attribute.new(
|
45
96
|
centaman_key: 'Memberships',
|
46
|
-
app_key: :
|
97
|
+
app_key: :membership_list,
|
47
98
|
type: :string
|
48
99
|
),
|
49
100
|
Centaman::Attribute.new(
|
@@ -66,6 +117,11 @@ module Centaman
|
|
66
117
|
app_key: :email,
|
67
118
|
type: :string
|
68
119
|
),
|
120
|
+
Centaman::Attribute.new(
|
121
|
+
centaman_key: 'Password',
|
122
|
+
app_key: :password,
|
123
|
+
type: :string
|
124
|
+
),
|
69
125
|
Centaman::Attribute.new(
|
70
126
|
centaman_key: 'Gender',
|
71
127
|
app_key: :gender,
|
@@ -78,7 +134,7 @@ module Centaman
|
|
78
134
|
),
|
79
135
|
Centaman::Attribute.new(
|
80
136
|
centaman_key: 'HomeAddress',
|
81
|
-
app_key: :
|
137
|
+
app_key: :home_address,
|
82
138
|
type: :string
|
83
139
|
),
|
84
140
|
Centaman::Attribute.new(
|
@@ -99,12 +155,17 @@ module Centaman
|
|
99
155
|
Centaman::Attribute.new(
|
100
156
|
centaman_key: 'ConcessionCardNumber',
|
101
157
|
app_key: :concession_card_number,
|
102
|
-
type: :integer
|
158
|
+
type: :integer
|
103
159
|
),
|
104
160
|
Centaman::Attribute.new(
|
105
161
|
centaman_key: 'Incomplete',
|
106
162
|
app_key: :incomplete,
|
107
163
|
type: :boolean
|
164
|
+
),
|
165
|
+
Centaman::Attribute.new(
|
166
|
+
centaman_key: 'MemberPhoto',
|
167
|
+
app_key: :member_photo,
|
168
|
+
type: :string
|
108
169
|
)
|
109
170
|
]
|
110
171
|
end
|
data/lib/centaman/service.rb
CHANGED
@@ -44,6 +44,16 @@ module Centaman
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
def put
|
48
|
+
@put_request ||= begin
|
49
|
+
req = Proc.new do
|
50
|
+
self.class.put(endpoint, payload(:put))
|
51
|
+
end
|
52
|
+
resp = wrap_request_in_case_of_timeout(req)
|
53
|
+
self.respond_to?(:build_object) ? after_post(resp) : resp
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
47
57
|
def after_post(response)
|
48
58
|
build_object(response)
|
49
59
|
end
|
@@ -38,7 +38,10 @@ module Centaman
|
|
38
38
|
private
|
39
39
|
|
40
40
|
def auth_error(resp)
|
41
|
-
|
41
|
+
p "error from #{self.class.name}"
|
42
|
+
|
43
|
+
message = { error: resp.parsed_response || 'Authentication Failed. Invalid login credentials.' }
|
44
|
+
raise message[:error]
|
42
45
|
end
|
43
46
|
end
|
44
47
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
|
3
|
+
module Centaman
|
4
|
+
class Service::CreatePrimaryMember < Centaman::Service
|
5
|
+
include Centaman::JsonWrapper
|
6
|
+
|
7
|
+
attr_reader :first_name, :last_name, :email, :password
|
8
|
+
|
9
|
+
def after_init(args)
|
10
|
+
@first_name = args[:first_name]
|
11
|
+
@last_name = args[:last_name]
|
12
|
+
@email = args[:email]
|
13
|
+
@password = args[:password] || SecureRandom.hex
|
14
|
+
end
|
15
|
+
|
16
|
+
def endpoint
|
17
|
+
'/member_services/Member'
|
18
|
+
end
|
19
|
+
|
20
|
+
def object_class
|
21
|
+
Centaman::Object::Member
|
22
|
+
end
|
23
|
+
|
24
|
+
def build_object(resp)
|
25
|
+
return build_objects(resp) if resp.respond_to?(:map)
|
26
|
+
return create_error(resp) unless resp.respond_to?(:merge)
|
27
|
+
@build_object ||= object_class.new(resp.merge(additional_hash_to_serialize_after_response))
|
28
|
+
end
|
29
|
+
|
30
|
+
def options_hash
|
31
|
+
[
|
32
|
+
{
|
33
|
+
'FirstName' => first_name,
|
34
|
+
'LastName' => last_name,
|
35
|
+
'Email' => email,
|
36
|
+
'Password' => password,
|
37
|
+
'IsPrimary' => true
|
38
|
+
}
|
39
|
+
].to_json
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def create_error(resp)
|
45
|
+
message = { error: resp.parsed_response || 'Unable to create primary member record.' }
|
46
|
+
raise message[:error]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
|
3
|
+
module Centaman
|
4
|
+
class Service::CreateSecondaryMember < Centaman::Service
|
5
|
+
include Centaman::JsonWrapper
|
6
|
+
|
7
|
+
attr_reader :primary_member_id, :secondary_members
|
8
|
+
|
9
|
+
def after_init(args)
|
10
|
+
@primary_member_id = args.fetch(:primary_member_id, nil)
|
11
|
+
@secondary_members = args.fetch(:secondary_members, [])
|
12
|
+
end
|
13
|
+
|
14
|
+
def endpoint
|
15
|
+
'/member_services/Member'
|
16
|
+
end
|
17
|
+
|
18
|
+
def object_class
|
19
|
+
Centaman::Object::Member
|
20
|
+
end
|
21
|
+
|
22
|
+
def build_object(resp)
|
23
|
+
return build_objects(resp) if resp.respond_to?(:map)
|
24
|
+
|
25
|
+
return create_error(resp) unless resp.respond_to?(:merge)
|
26
|
+
@build_object ||= object_class.new(resp.merge(additional_hash_to_serialize_after_response))
|
27
|
+
end
|
28
|
+
|
29
|
+
def options_hash
|
30
|
+
request_body = secondary_members.map { |m| build_member(m) }
|
31
|
+
request_body.to_json
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def build_member(member)
|
37
|
+
{
|
38
|
+
'FirstName' => member.first_name,
|
39
|
+
'LastName' => member.last_name,
|
40
|
+
'Title' => member.title,
|
41
|
+
'IsPrimary' => false,
|
42
|
+
'PrimaryMemberId' => primary_member_id
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
def create_error(resp)
|
47
|
+
message = { error: resp.parsed_response || 'Unable to create the member record(s).' }
|
48
|
+
raise message[:error]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -25,13 +25,27 @@ module Centaman
|
|
25
25
|
@build_object ||= object_class.new(resp.merge(additional_hash_to_serialize_after_response))
|
26
26
|
end
|
27
27
|
|
28
|
+
# given primary member id, returns array with primary and associated secondary member records
|
28
29
|
def self.find(id)
|
29
|
-
|
30
|
-
|
30
|
+
members = self.find_members_by_id(id)
|
31
|
+
return unless members && members.any?
|
32
|
+
return members if members.detect { |obj| obj.is_primary }
|
33
|
+
find_members_by_id(members[0].primary_member_id)
|
34
|
+
end
|
35
|
+
|
36
|
+
# returns individual member object matching the given id
|
37
|
+
def self.find_member(id)
|
38
|
+
member_array = find(id) || []
|
39
|
+
member_array.detect { |obj| obj.id == id }
|
31
40
|
end
|
32
41
|
|
33
42
|
private
|
34
43
|
|
44
|
+
def self.find_members_by_id(id)
|
45
|
+
obj = new(member_code: id)
|
46
|
+
obj.objects
|
47
|
+
end
|
48
|
+
|
35
49
|
def member_endpoint(attr_key)
|
36
50
|
attr_val = self.send(attr_key)
|
37
51
|
endpoint_url(attr_key, attr_val)
|
@@ -53,7 +67,7 @@ module Centaman
|
|
53
67
|
raise "missing required arguments. #{self.class} must be instantiated with a :member_code or :email" if args_missing
|
54
68
|
end
|
55
69
|
|
56
|
-
def not_found(resp)
|
70
|
+
def not_found(resp={})
|
57
71
|
{ error: resp.parsed_response || 'Member not found' }
|
58
72
|
end
|
59
73
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Centaman
|
2
|
+
class Service::PurchaseMembership < Centaman::Service
|
3
|
+
attr_reader :payment_reference, :order_info, :checkout_service,
|
4
|
+
:members, :memberships, :add_ons, :membership_type_id,
|
5
|
+
:is_new, :purchaser_renewal
|
6
|
+
|
7
|
+
def after_init(args)
|
8
|
+
@payment_reference = args[:payment_reference]
|
9
|
+
@is_new = args.fetch(:is_new, true)
|
10
|
+
@order_info = args[:order_info]
|
11
|
+
@purchaser_renewal = order_info.is_renewal
|
12
|
+
@checkout_service = args[:checkout_service]
|
13
|
+
@membership_type_id = @order_info.membership_type_id
|
14
|
+
@members = @order_info.members
|
15
|
+
@add_ons = @checkout_service.add_ons
|
16
|
+
@memberships = []
|
17
|
+
build_membership_request
|
18
|
+
end
|
19
|
+
|
20
|
+
def endpoint
|
21
|
+
"/member_services/Membership?isNew=#{is_new}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def membership_payload(member_id, add_on)
|
25
|
+
{
|
26
|
+
'MemberCode': member_id,
|
27
|
+
'TypeCode': add_on.id,
|
28
|
+
'Cost': add_on.cost,
|
29
|
+
'Tax': 0,
|
30
|
+
'Paid': add_on.cost,
|
31
|
+
'PackageID': membership_type_id,
|
32
|
+
'PurchaserRenewal': purchaser_renewal
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def build_membership_request
|
37
|
+
members.map do |m|
|
38
|
+
order_info.add_ons_for_member(add_ons, m.member_type).each do |ao|
|
39
|
+
@memberships << membership_payload(m.id, ao)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def options_hash
|
45
|
+
memberships.to_json
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
|
3
|
+
module Centaman
|
4
|
+
class Service::UpdateMember < Centaman::Service
|
5
|
+
include Centaman::JsonWrapper
|
6
|
+
|
7
|
+
attr_reader :id, :first_name, :last_name, :address,
|
8
|
+
:gender, :phone, :email, :password, :is_primary
|
9
|
+
|
10
|
+
def after_init(args)
|
11
|
+
@id = args[:id].try(:to_i)
|
12
|
+
@first_name = args[:first_name]
|
13
|
+
@last_name = args[:last_name]
|
14
|
+
@address = args[:address].try(:symbolize_keys)
|
15
|
+
@gender = args[:gender]
|
16
|
+
@phone = args[:phone]
|
17
|
+
@email = args[:email]
|
18
|
+
@password = args[:password]
|
19
|
+
@is_primary = args[:is_primary]
|
20
|
+
end
|
21
|
+
|
22
|
+
def endpoint
|
23
|
+
"/member_services/Member/#{id}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def object_class
|
27
|
+
Centaman::Object::Member
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_object(resp)
|
31
|
+
return update_error(resp) unless resp.respond_to?(:merge)
|
32
|
+
@build_object ||= object_class.new(resp.merge(additional_hash_to_serialize_after_response))
|
33
|
+
end
|
34
|
+
|
35
|
+
def options_hash_no_json
|
36
|
+
{
|
37
|
+
'FirstName' => first_name,
|
38
|
+
'LastName' => last_name,
|
39
|
+
'homeAddress' => home_address,
|
40
|
+
'Gender' => gender,
|
41
|
+
'Email' => email,
|
42
|
+
'Password' => password,
|
43
|
+
'IsPrimary' => is_primary
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
def options_hash
|
48
|
+
options_hash_no_json.compact.to_json
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def home_address
|
54
|
+
return if !address
|
55
|
+
{
|
56
|
+
'street1': address[:street_address],
|
57
|
+
'street2': '',
|
58
|
+
'suburb': address[:city],
|
59
|
+
'city': address[:city],
|
60
|
+
'state': address[:state],
|
61
|
+
'postcode': address[:zip],
|
62
|
+
'country': address[:country],
|
63
|
+
'homePhone': phone,
|
64
|
+
'workPhone': '',
|
65
|
+
'mobilePhone': ''
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
def update_error(resp)
|
70
|
+
message = { error: resp.parsed_response || 'Unable to update member record.' }
|
71
|
+
raise message[:error]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/lib/centaman/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: centaman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- francirp
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-02-
|
12
|
+
date: 2018-02-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -114,14 +114,18 @@ files:
|
|
114
114
|
- lib/centaman/service/capacity.rb
|
115
115
|
- lib/centaman/service/coupon_check.rb
|
116
116
|
- lib/centaman/service/create_customer.rb
|
117
|
+
- lib/centaman/service/create_primary_member.rb
|
118
|
+
- lib/centaman/service/create_secondary_member.rb
|
117
119
|
- lib/centaman/service/extra.rb
|
118
120
|
- lib/centaman/service/general_admission_ticket.rb
|
119
121
|
- lib/centaman/service/gift_ticket.rb
|
120
122
|
- lib/centaman/service/hold_ticket.rb
|
121
123
|
- lib/centaman/service/member.rb
|
122
124
|
- lib/centaman/service/membership_type.rb
|
125
|
+
- lib/centaman/service/purchase_membership.rb
|
123
126
|
- lib/centaman/service/purchase_ticket.rb
|
124
127
|
- lib/centaman/service/ticket_type.rb
|
128
|
+
- lib/centaman/service/update_member.rb
|
125
129
|
- lib/centaman/version.rb
|
126
130
|
- lib/centaman/wrapper.rb
|
127
131
|
homepage: https://github.com/LaunchPadLab/centaman
|