centaman 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|