3scale/porta

View on GitHub
app/controllers/api/service_plans_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class Api::ServicePlansController < Api::PlansBaseController
  before_action :authorize_service_plans!

  activate_menu :serviceadmin, :subscriptions, :service_plans
  sublayout 'api/service'

  helper_method :plans_index_data
  delegate :plans_index_data, to: :presenter

  alias service_plans plans

  # rubocop:disable Lint/UselessMethodDefinition We need these, otherwise integration tests will fail
  def create
    super
  end

  def update
    super
  end

  def destroy
    super
  end
  # rubocop:enable Lint/UselessMethodDefinition

  def masterize
    super(service, :default_service_plan)
  end

  protected

  def plan_type
    :service_plan
  end

  def collection(service_id = params[:service_id].presence)
    # start of our scope is current_account
    scope = current_account
    # if we have :service_id, then lookup service first
    scope = scope.accessible_services.find(service_id) if service_id
    # then return all service plans of current scope
    scope.service_plans
  end

  def authorize_service_plans!
    authorize! :manage, :service_plans
  end

  def presenter
    @presenter ||= Api::ServicePlansPresenter.new(service: service, params: params, user: current_user)
  end

end