spaceship/lib/spaceship/tunes/availability.rb in fastlane-2.96.0.beta.20180517050058 vs spaceship/lib/spaceship/tunes/availability.rb in fastlane-2.96.0.beta.20180518050116
- old
+ new
@@ -1,7 +1,7 @@
require_relative 'territory'
-
+require_relative 'b2b_user'
module Spaceship
module Tunes
class Availability < TunesBase
# @return (Bool) Are future territories included?
attr_accessor :include_future_territories
@@ -13,17 +13,33 @@
attr_accessor :cleared_for_preorder
# @return (String) App available date in format of "YYYY-MM-DD"
attr_accessor :app_available_date
+ # @return (Bool) app enabled for b2b users
+ attr_accessor :b2b_app_enabled
+
+ # @return (Bool) app enabled for educational discount
+ attr_accessor :educational_discount
+
+ # @return (Bool) b2b available for distribution
+ attr_accessor :b2b_unavailable
+
+ # @return (Array of Spaceship::Tunes::B2bUser objects) A list of users set by user - if not
+ # then the b2b user list that is currently set
+ attr_accessor :b2b_users
+
attr_mapping(
'theWorld' => :include_future_territories,
'preOrder.clearedForPreOrder.value' => :cleared_for_preorder,
- 'preOrder.appAvailableDate.value' => :app_available_date
+ 'preOrder.appAvailableDate.value' => :app_available_date,
+ 'b2BAppFlagDisabled' => :b2b_unavailable
)
# Create a new object based on a set of territories.
+ # This will override any values already set for cleared_for_preorder, app_available_date, b2b_unavailable,
+ # b2b_app_enabled, and educational_discount
# @param territories (Array of String or Spaceship::Tunes::Territory objects): A list of the territories
# @param params (Hash): Optional parameters (include_future_territories (Bool, default: true) Are future territories included?)
def self.from_territories(territories = [], params = {})
# Initializes the DataHash with our preOrder structure so values
# that are being modified will be saved
@@ -49,18 +65,52 @@
territories
end
obj.include_future_territories = params.fetch(:include_future_territories, true)
obj.cleared_for_preorder = params.fetch(:cleared_for_preorder, false)
obj.app_available_date = params.fetch(:app_available_date, nil)
+ obj.b2b_unavailable = params.fetch(:b2b_unavailable, false)
+ obj.b2b_app_enabled = params.fetch(:b2b_app_enabled, false)
+ obj.educational_discount = params.fetch(:educational_discount, true)
return obj
end
def territories
@territories ||= raw_data['countries'].map { |info| Territory.new(info) }
end
+ def b2b_users
+ @b2b_users ||= raw_data['b2bUsers'].map { |user| B2bUser.new(user) }
+ end
+
+ def b2b_app_enabled
+ @b2b_app_enabled.nil? ? raw_data['b2bAppEnabled'] : @b2b_app_enabled
+ end
+
+ def educational_discount
+ @educational_discount.nil? ? raw_data['educationalDiscount'] : @educational_discount
+ end
+
def cleared_for_preorder
super || false
+ end
+
+ # Sets `b2b_app_enabled` to true and `educational_discount` to false
+ # Requires users to be added with `add_b2b_users` otherwise `update_availability` will error
+ def enable_b2b_app!
+ raise "Not possible to enable b2b on this app" if b2b_unavailable
+ @b2b_app_enabled = true
+ # need to set the educational discount to false
+ @educational_discount = false
+ self
+ end
+
+ # Adds users for b2b enabled apps
+ def add_b2b_users(user_list = [])
+ raise "Cannot add b2b users if b2b is not enabled" unless b2b_app_enabled
+ @b2b_users = user_list.map do |user|
+ B2bUser.from_username(user)
+ end
+ self
end
end
end
end