module EventbriteSDK class Organization < Resource ALL_DISCOUNTS = 'user', SINGLE_EVENT_DISCOUNTS = 'event', MULTI_EVENT_DISCOUNTS = 'multi_events', # Event search "order_by" values CREATED_NEWEST_FIRST = 'created_desc', CREATED_OLDEST_FIRST = 'created_asc', START_NEWEST_FIRST = 'start_desc', START_OLDEST_FIRST = 'start_asc', # Event search "status" values # ALL will cause the search to return any of the following: # canceled # ended # finalized # incomplete # live # started # payout_issued ALL = 'all', CANCELED = 'canceled', DRAFT = 'draft', # ENDED will return any of the following: # ended # finalized # payout_issued ENDED = 'ended', LIVE = 'live', STARTED = 'started' # Search order values SEARCH_ORDERS_STATUS_ALL = 'all_not_deleted' SEARCH_ORDERS_STATUS_ACTIVE = 'active' SEARCH_ORDERS_STATUS_INACTIVE = 'inactive' SEARCH_ORDERS_STATUS_ACTIVE_AND_INACTIVE = 'both' resource_path 'organizations/:id' has_many :discounts, object_class: 'OrgDiscount' has_many :organizers, object_class: 'Organizer', key: :organizers # Previously :owned_event_orders has_many :orders, object_class: 'Order', key: :orders # Previously :owned_events has_many :events, object_class: 'OrgEvent', key: :events has_many :ticket_classes, object_class: 'TicketClass' has_many :ticket_groups, object_class: 'TicketGroup' # Query for all events, ordered by start date in ascending order. # # order_by: Change the order they are returned. Supports: # created_asc # created_desc # start_asc # start_desc # # status: Status(es) of events you want. Supports single values or CSV: # all - all available statuses. Includes: # canceled - only canceled. # draft - only draft # ended - all ended statuses. Includes: # live - only live # started - only started # def upcoming_events(order_by: self.class::START_OLDEST_FIRST, status: self.class::ALL) EventbriteSDK::ResourceList.new( url_base: "#{path}/events", object_class: EventbriteSDK::Event, key: 'events', query: { order_by: order_by, status: status } ) end # # Retrieve all orders for the organization based on given search criteria. # changed_since - datetime - orders changed on or after the given datetime. # You can also pass a string formatted as %FT%TZ # exclude_emails - string array - do not include orders for these emails # only_emails - string array - only include orders for these emails # status - One of: all, active, inactive, active_and_inactive # # This method does no parameter validation. If you pass an unsupported status # or an invalid format changed_since you'll definitely hear about if from # the endpoint. # def search_orders(params={}) coerce_search_orders_params(params) EventbriteSDK::ResourceList.new( url_base: "#{path}/orders", object_class: EventbriteSDK::Order, key: :orders, query: params ) end # NOTE Shim to normalize API between a user/organization def owned_events events end private def coerce_search_orders_params(params) format_changed_since(params) format_emails(params) params end def format_changed_since(params) value = params[:changed_since] if value and value.respond_to?(:strftime) params[:changed_since] = value.strftime('%FT%TZ') end end def format_emails(params) for key in %i(exclude_emails only_emails) if params[key] and params[key].any? params[key] = params[key].join(',') end end end end end