diff --git a/app/controllers/spree/api/v2/organizer/base_controller.rb b/app/controllers/spree/api/v2/organizer/base_controller.rb new file mode 100644 index 000000000..57c195009 --- /dev/null +++ b/app/controllers/spree/api/v2/organizer/base_controller.rb @@ -0,0 +1,15 @@ +module Spree + module Api + module V2 + module Organizer + class BaseController < ::Spree::Api::V2::BaseController + include Spree::Api::V2::CollectionOptionsHelpers + + def render_serialized_payload(status = 200) + render json: yield, status: status, content_type: content_type + end + end + end + end + end +end diff --git a/app/controllers/spree/api/v2/organizer/tickets_controller.rb b/app/controllers/spree/api/v2/organizer/tickets_controller.rb new file mode 100644 index 000000000..dcbe6ee3e --- /dev/null +++ b/app/controllers/spree/api/v2/organizer/tickets_controller.rb @@ -0,0 +1,34 @@ +module Spree + module Api + module V2 + module Organizer + class TicketsController < ::Spree::Api::V2::Organizer::BaseController + def index + event = Spree::Taxon.find(params[:event_id]) + + resource = event.products.page(params[:page]).per(params[:per_page]) + + render_serialized_payload do + collection_serializer.new( + resource, + collection_options(resource) + ).serializable_hash + end + end + + def show + resource = Spree::Product.find(params[:id]) + + render_serialized_payload do + Spree::V2::Organizer::TicketSerializer.new(resource).serializable_hash + end + end + + def collection_serializer + ::Spree::V2::Organizer::TicketSerializer + end + end + end + end + end +end diff --git a/app/serializers/spree/v2/organizer/base_serializer.rb b/app/serializers/spree/v2/organizer/base_serializer.rb new file mode 100644 index 000000000..f9b37d82e --- /dev/null +++ b/app/serializers/spree/v2/organizer/base_serializer.rb @@ -0,0 +1,9 @@ +module Spree + module V2 + module Organizer + class BaseSerializer + include JSONAPI::Serializer + end + end + end +end diff --git a/app/serializers/spree/v2/organizer/ticket_serializer.rb b/app/serializers/spree/v2/organizer/ticket_serializer.rb new file mode 100644 index 000000000..905b729fa --- /dev/null +++ b/app/serializers/spree/v2/organizer/ticket_serializer.rb @@ -0,0 +1,10 @@ +module Spree + module V2 + module Organizer + class TicketSerializer < BaseSerializer + set_type :ticket + attributes :name, :price, :compare_at_price, :available_on, :kyc, :description, :shipping_category_id, :product_type, :status + end + end + end +end diff --git a/config/routes.rb b/config/routes.rb index 6a772414d..4729818fe 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -384,6 +384,10 @@ resources :places end + namespace :organizer do + resources :tickets + end + namespace :storefront do resources :waiting_room_sessions, only: :create