centaman 6.0.8 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
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