centaman 6.0.8 → 7.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4fb7cf9b7621d2b15606e6312e1c2dbd40020ccde962778ce11d79f7262e4b7
4
- data.tar.gz: 3d95a70556d7a770bc181b35041c188f9e0da4d68b3fb80845fb9689bb0a8281
3
+ metadata.gz: cb017476456c19f23aa1714a92f7a0e8003cde93a90716987a329794c93a79e9
4
+ data.tar.gz: 89d82fcdd5af9127df8f4665175b9ebdaea0b7c01734fb59bc9963dfeb607381
5
5
  SHA512:
6
- metadata.gz: 7b464fa70365e219406c9fae146c2524e914553af8da3b51bfc37cd969079cc54989bd7c9b27caff7c64a498d0705262cab16e1cbf19370e2e7eb999a297e0cb
7
- data.tar.gz: 389c4574d4a3fdd787a29a587bab6cfde9ef4df98713e4e5adcdd6044a013ce6f3f274e665c125fd16806797ae870b9a9e2ff8a10ac2142b13d8f14a3b60a1e3
6
+ metadata.gz: d089bd7202c749abd27376b27ad383bdb075a9566b1fadd201735ad7d2681331e9e233b51ffa0ded80a38f03c50a7f48b3d92233c32e38b41de5a7e1e906d4a4
7
+ data.tar.gz: caea38743761e08eab5941efbd4cedfb93ea2b62de0bc911bf10a17af4c123a7f59ed759c28d76e8b23249fc6cd1fcbee0aceee68d82e128b29ff8b9e4d644df
@@ -29,6 +29,7 @@ require 'centaman/service/purchase_membership'
29
29
  require 'centaman/service/purchase_ticket'
30
30
  require 'centaman/service/update_member'
31
31
  require 'centaman/service/ticket_type'
32
+ require 'centaman/object/attendee_detail'
32
33
  require 'centaman/object/booking_time'
33
34
  require 'centaman/object/booking_type'
34
35
  require 'centaman/object/capacity'
@@ -46,6 +47,7 @@ require 'centaman/object/purchased_ticket'
46
47
  require 'centaman/object/purchased_timed_ticket'
47
48
  require 'centaman/object/purchased_general_admission_ticket'
48
49
  require 'centaman/object/ticket_type'
50
+ require 'centaman/object/udf'
49
51
  require 'centaman/configuration'
50
52
 
51
53
  module Centaman
@@ -0,0 +1,61 @@
1
+ module Centaman
2
+ class Object::AttendeeDetail < Centaman::Object
3
+ attr_accessor :ticket_type, :ticket_id, :udfs
4
+
5
+ def after_init(args= {})
6
+ @ticket_type = args.fetch(:ticket_type, nil)
7
+ @ticket_id = args.fetch(:ticket_id, nil)
8
+ @udfs = set_attendee_udfs(args[:udfs] || [])
9
+ end
10
+
11
+ def json
12
+ {
13
+ 'AttendeeFirstName': first_name,
14
+ 'AttendeeLastName': last_name,
15
+ 'AttendeeMemberCode': member_code || ''
16
+ }.as_json
17
+ end
18
+
19
+ def set_attendee_udfs(attendee_udfs)
20
+ attendee_udfs.map do |u|
21
+ Centaman::Object::Udf.new(
22
+ is_email: u[:is_email],
23
+ value: u[:value],
24
+ field_name: u[:field_name],
25
+ field_type: u[:field_type],
26
+ field_length: u[:field_length],
27
+ tab_name: u[:tab_name]
28
+ )
29
+ end
30
+ end
31
+
32
+ def full_name
33
+ [first_name, last_name].compact.join(' ')
34
+ end
35
+
36
+ def attributes
37
+ [
38
+ Centaman::Attribute.new(
39
+ centaman_key: 'MemberCode',
40
+ app_key: :member_code,
41
+ type: :integer
42
+ ),
43
+ Centaman::Attribute.new(
44
+ centaman_key: 'FirstName',
45
+ app_key: :first_name,
46
+ type: :string
47
+ ),
48
+ Centaman::Attribute.new(
49
+ centaman_key: 'LastName',
50
+ app_key: :last_name,
51
+ type: :string
52
+ ),
53
+ Centaman::Attribute.new(
54
+ centaman_key: 'Email',
55
+ app_key: :email,
56
+ type: :string
57
+ )
58
+ ]
59
+ end
60
+ end
61
+ end
@@ -1,9 +1,16 @@
1
1
  module Centaman
2
2
  class Object::Customer < Centaman::Object
3
- attr_reader :phone
3
+ attr_reader :address, :phone, :attendees
4
4
  # rubocop:disable Metrics/MethodLength
5
+
5
6
  def after_init(args)
7
+ @address = args["Address"]
6
8
  @phone = args["Address"]["HomePhone"]
9
+ @attendees = build_booking_attendees(args["BookingAttendee"])
10
+ end
11
+
12
+ def build_booking_attendees(booking_attendees = [])
13
+ booking_attendees.map { |a| Centaman::Object::AttendeeDetail.new(a) }
7
14
  end
8
15
 
9
16
  def attributes
@@ -13,11 +20,6 @@ module Centaman
13
20
  app_key: :member_code,
14
21
  type: :integer
15
22
  ),
16
- Centaman::Attribute.new(
17
- centaman_key: 'MemberNumber',
18
- app_key: :member_number,
19
- type: :integer
20
- ),
21
23
  Centaman::Attribute.new(
22
24
  centaman_key: 'FirstName',
23
25
  app_key: :first_name,
@@ -0,0 +1,20 @@
1
+ module Centaman
2
+ class Object::Udf < Centaman::Object
3
+ attr_accessor :value, :field_name, :field_type, :field_length, :tab_name,
4
+ :options, :is_member_waiver, :is_booking_waiver, :is_attendee_udf,
5
+ :is_email
6
+
7
+ def after_init(args)
8
+ @value = args[:value]
9
+ @field_name = args[:field_name]
10
+ @field_type = args[:field_type]
11
+ @field_length = args[:field_length]
12
+ @is_member_waiver = args[:is_member_waiver]
13
+ @is_booking_waiver = args[:is_booking_waiver]
14
+ @is_attendee_udf = args[:is_attendee_udf]
15
+ @tab_name = args[:tab_name]
16
+ @options = args[:options]
17
+ @is_email = args[:is_email]
18
+ end
19
+ end
20
+ end
@@ -2,13 +2,15 @@ module Centaman
2
2
  #:nodoc:
3
3
  class Service::CreateCustomer < Centaman::Service
4
4
  include Centaman::JsonWrapper
5
- attr_reader :first_name, :last_name, :email, :phone
5
+ attr_accessor :first_name, :last_name, :email, :phone, :address, :attendees
6
6
 
7
7
  def after_init(args)
8
- @first_name = args[:first_name]
9
- @last_name = args[:last_name]
10
- @email = args[:email]
11
- @phone = args[:phone]
8
+ @first_name = args.fetch(:first_name, nil)
9
+ @last_name = args.fetch(:last_name, nil)
10
+ @email = args.fetch(:email, nil)
11
+ @phone = args.fetch(:phone, nil)
12
+ @address = args.fetch(:address, nil) || {}
13
+ @attendees = args.fetch(:attendees, nil) || []
12
14
  end
13
15
 
14
16
  def endpoint
@@ -19,30 +21,48 @@ module Centaman
19
21
  Centaman::Object::Customer
20
22
  end
21
23
 
22
- # rubocop:disable Metrics/MethodLength
23
- def address
24
+ def build_address
24
25
  {
25
- 'Street1' => '',
26
- 'Street2' => '',
27
- 'City' => '',
28
- 'State' => '',
29
- 'Postalcode' => '',
30
- 'Country' => '',
26
+ 'Street1' => address[:street_address] || '',
27
+ 'Street2' => address[:street_address_2] || '',
28
+ 'City' => address[:city] || '',
29
+ 'State' => address[:state] || '',
30
+ 'Postalcode' => address[:zip] || '',
31
+ 'Country' => address[:country] || '',
31
32
  'HomePhone' => phone || '',
32
33
  'WorkPhone' => '',
33
34
  'MobilePhone' => ''
34
35
  }
35
36
  end
36
- # rubocop:enable Metrics/MethodLength
37
37
 
38
- # rubocop:disable Metrics/MethodLength
38
+ def build_booking_attendees
39
+ attendees.map do |attendee|
40
+ udfs = attendee.try(:attendee_udfs)
41
+ attendee_email = udfs && udfs.detect { |u| u.try(:is_email) && u.try(:value).present? }.try(:value)
42
+ {
43
+ 'FirstName': attendee.first_name,
44
+ 'LastName': attendee.last_name,
45
+ 'Email': attendee.email.present? ? attendee.email : (attendee_email || random_email(attendee))
46
+ }
47
+ end
48
+ end
49
+
50
+ def random_email(attendee)
51
+ # force creation of new member by setting new email
52
+ [attendee.first_name.try(:squish), attendee.last_name.try(:squish), SecureRandom.hex(2)]
53
+ .reject { |obj| obj.blank? }
54
+ .join('.') + '@example.com'
55
+ .squish
56
+ end
57
+
39
58
  def options_hash
40
59
  {
41
- 'FirstName' => first_name,
42
- 'LastName' => last_name,
60
+ 'FirstName' => first_name || '',
61
+ 'LastName' => last_name || '',
43
62
  'Email' => email,
44
- 'Address' => address
45
- }.to_json
63
+ 'Address' => build_address,
64
+ 'BookingAttendee': build_booking_attendees
65
+ }.compact.to_json
46
66
  end
47
67
  end
48
68
  end
@@ -1,5 +1,4 @@
1
1
  module Centaman
2
- #:nodoc:
3
2
  class Service::CreateRetailCustomer < Centaman::Service::CreateCustomer
4
3
  def endpoint
5
4
  '/retail_services/RetailContact'
@@ -1,3 +1,3 @@
1
1
  module Centaman
2
- VERSION = "6.0.8"
2
+ VERSION = "7.0.0"
3
3
  end
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: 6.0.8
4
+ version: 7.0.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-10-24 00:00:00.000000000 Z
12
+ date: 2018-10-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -94,6 +94,7 @@ files:
94
94
  - lib/centaman/json_wrapper.rb
95
95
  - lib/centaman/object.rb
96
96
  - lib/centaman/object/add_on.rb
97
+ - lib/centaman/object/attendee_detail.rb
97
98
  - lib/centaman/object/booking_time.rb
98
99
  - lib/centaman/object/booking_type.rb
99
100
  - lib/centaman/object/capacity.rb
@@ -110,6 +111,7 @@ files:
110
111
  - lib/centaman/object/purchased_ticket.rb
111
112
  - lib/centaman/object/purchased_timed_ticket.rb
112
113
  - lib/centaman/object/ticket_type.rb
114
+ - lib/centaman/object/udf.rb
113
115
  - lib/centaman/service.rb
114
116
  - lib/centaman/service/add_on.rb
115
117
  - lib/centaman/service/authenticate_member.rb