maestrano/mno-enterprise

View on GitHub
api/app/controllers/mno_enterprise/jpi/v1/admin/sub_tenants_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
module MnoEnterprise
  class Jpi::V1::Admin::SubTenantsController < Jpi::V1::Admin::BaseResourceController

    before_filter :check_sub_tenant_authorization, only: [:create, :update, :delete]

    # GET /mnoe/jpi/v1/admin/sub_tenants
    def index
      # Index mode
      @sub_tenants = MnoEnterprise::SubTenant
      @sub_tenants = @sub_tenants.limit(params[:limit]) if params[:limit]
      @sub_tenants = @sub_tenants.skip(params[:offset]) if params[:offset]
      @sub_tenants = @sub_tenants.order_by(params[:order_by]) if params[:order_by]
      @sub_tenants = @sub_tenants.where(params[:where]) if params[:where]
      @sub_tenants = @sub_tenants.all
      response.headers['X-Total-Count'] = @sub_tenants.metadata[:pagination][:count]
    end

    # GET /mnoe/jpi/v1/admin/sub_tenants/1
    def show
      @sub_tenant = MnoEnterprise::SubTenant.find(params[:id])
      @sub_tenant_clients = @sub_tenant.clients
      @sub_tenant_account_managers = @sub_tenant.account_managers
    end

    # POST /mnoe/jpi/v1/admin/sub_tenants
    def create
      @sub_tenant = MnoEnterprise::SubTenant.build(sub_tenant_params)
      if @sub_tenant.save
        render :show
      else
        render json: @sub_tenant.errors, status: :bad_request
      end
    end

    # PATCH /mnoe/jpi/v1/admin/sub_tenant/:id
    def update
      @sub_tenant = MnoEnterprise::SubTenant.find(params[:id])

      if @sub_tenant.update(sub_tenant_params)
        @sub_tenant_clients = @sub_tenant.clients
        @sub_tenant_account_managers = @sub_tenant.account_managers
        render :show
      else
        render json: @sub_tenant.errors, status: :bad_request
      end
    end

    # DELETE /mnoe/jpi/v1/admin/sub_tenant/1
    def destroy
      @sub_tenant = MnoEnterprise::SubTenant.find(params[:id])
      @sub_tenant.destroy
      head :no_content
    end

    def check_sub_tenant_authorization
      authorize! :manage_sub_tenant, MnoEnterprise::SubTenant
    end

    private
    def sub_tenant_params
      params.require(:sub_tenant).permit(:name, client_ids: [], account_manager_ids: [])
    end
  end
end