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
         |