class Centaman::Service::PurchaseMembership

Attributes

add_ons[R]
checkout_service[R]
coupon[R]
coupon_service[R]
expiry_date[R]
has_card_discount[R]
is_new[R]
join_date[R]
members[R]
membership_type_id[R]
memberships[R]
order_info[R]
payment_reference[R]
purchaser_renewal[R]

Public Instance Methods

after_init(args={}) click to toggle source
# File lib/centaman/service/purchase_membership.rb, line 7
def after_init(args={})
  @payment_reference = args[:payment_reference]
  @order_info = args[:order_info]
  @is_new = args.fetch(:is_new, false)
  @has_card_discount = @order_info.fnbo_discount
  @checkout_service = args[:checkout_service]
  @coupon_service = args[:coupon_service]
  @membership_type_id = @order_info.membership_type_id
  @members = args.fetch(:members, [])
  @add_ons = @checkout_service.add_ons
  @memberships = []
  @coupon = @coupon_service.valid_coupon
  @join_date = args.fetch(:join_date, nil)
  @expiry_date = args.fetch(:expiry_date, nil)
  @purchaser_renewal = args.fetch(:purchaser_renewal, false)
end
build_membership_request() click to toggle source

def new_membership_request

p "building new_membership_request"
new_members.map do |m|
  order_info.add_ons_for_member(add_ons, m.member_type).each do |ao|
    @new_memberships << membership_payload(m, ao)
  end
end
@new_memberships = @new_memberships.uniq

end

# File lib/centaman/service/purchase_membership.rb, line 107
def build_membership_request
  p "build request"
  members.map do |m|
    order_info.add_ons_for_member(add_ons, m.member_type).each do |ao|
      @memberships << membership_payload(m, ao)
    end
  end
  @memberships
end
card_discount_args(add_on) click to toggle source
# File lib/centaman/service/purchase_membership.rb, line 58
def card_discount_args(add_on)
  return {} unless add_on.add_on_type == 'primary'
  {
    'CardDiscount': {
      'DiscountAmount': checkout_service.fnbo_amount,
      'StockID': checkout_service.fnbo_stock_id
    }
  }
end
coupon_args(add_on) click to toggle source
# File lib/centaman/service/purchase_membership.rb, line 47
def coupon_args(add_on)
  return {} unless coupon_service.coupon_applies(add_on)
  {
    'Coupon': {
      "CouponCode": coupon.coupon_code,
      "DiscountAmount": coupon_service.amount_saved(add_on),
      "StockID": coupon.coupon_stock_id
    }
  }
end
empty_card_args() click to toggle source
# File lib/centaman/service/purchase_membership.rb, line 78
def empty_card_args
  {
    'CardDiscount': {
      'DiscountAmount': 0,
      'StockID': nil
    }
  }
end
empty_coupon_args() click to toggle source
# File lib/centaman/service/purchase_membership.rb, line 68
def empty_coupon_args
  {
    'Coupon': {
      "CouponCode": nil,
      "DiscountAmount": 0,
      "StockID": nil
    }
  }
end
endpoint() click to toggle source
# File lib/centaman/service/purchase_membership.rb, line 24
def endpoint
  "/member_services/Membership?isNew=#{is_new}"
end
membership_payload(member, add_on) click to toggle source
# File lib/centaman/service/purchase_membership.rb, line 28
def membership_payload(member, add_on)
  p 'dates'
  p join_date, expiry_date
  payload = {
    'MemberCode': member.id,
    'TypeCode': add_on.id,
    'Cost': add_on.cost,
    'Tax': checkout_service.add_on_tax(add_on),
    'Paid': add_on.pay_price,
    'PackageID': membership_type_id,
    'PurchaserRenewal': purchaser_renewal,
    'PaymentGatewayReference': payment_reference,
    'JoinDate': join_date,
    'ExpiryDate': expiry_date
  }.compact
  payload = coupon.present? ? payload.merge(coupon_args(add_on)) : payload
  payload = has_card_discount ? payload.merge(card_discount_args(add_on)) : payload
end
options_hash() click to toggle source
# File lib/centaman/service/purchase_membership.rb, line 117
def options_hash
  p "*** PAYLOAD ***"
  p build_membership_request
  memberships.to_json
  # p @new_memberships if is_new
  # p @renewal_memberships if !is_new
end