chatwoot-develop/enterprise/app/controllers/api/v1/accounts/captain/pricings_controller.rb

60 lines
1.3 KiB
Ruby

class Api::V1::Accounts::Captain::PricingsController < Api::V1::Accounts::BaseController
before_action :fetch_pricing, only: [:show, :update, :destroy]
def index
@pricings = Current.account.captain_pricings.includes(:brand, :inbox)
end
def show; end
def create
@pricing = Current.account.captain_pricings.new(pricing_params.except(:inbox_ids))
@pricing.save!
sync_inboxes(@pricing, pricing_params[:inbox_ids])
render :show, status: :created
end
def update
@pricing.update!(pricing_params.except(:inbox_ids))
sync_inboxes(@pricing, pricing_params[:inbox_ids])
render :show
end
def destroy
@pricing.destroy!
head :no_content
end
private
def fetch_pricing
@pricing = Current.account.captain_pricings.find(params[:id])
end
def pricing_params
params.require(:pricing).permit(
:captain_brand_id,
:inbox_id,
:day_range,
:suite_category,
:duration,
:price,
:keywords,
inbox_ids: []
)
end
def sync_inboxes(pricing, inbox_ids)
return if inbox_ids.nil?
ids = Array(inbox_ids).reject(&:blank?).map(&:to_i)
if ids.empty?
pricing.inboxes.clear
return
end
inboxes = Current.account.inboxes.where(id: ids)
pricing.inboxes = inboxes
end
end