class API::PricesController < API::ApiController before_action :authenticate_user! def index authorize Price @prices = Price.all if params[:priceable_type] @prices = @prices.where(priceable_type: params[:priceable_type]) if params[:priceable_id] @prices = @prices.where(priceable_id: params[:priceable_id]) end end if params[:plan_id] if params[:plan_id] =~ /no|nil|null|undefined/i plan_id = nil else plan_id = params[:plan_id] end @prices = @prices.where(plan_id: plan_id) end if params[:group_id] @prices = @prices.where(group_id: params[:group_id]) end end def update authorize Price @price = Price.find(params[:id]) _price_params = price_params _price_params[:amount] = _price_params[:amount] * 100 if @price.update(_price_params) render status: :ok else render status: :unprocessable_entity end end def compute _price_params = compute_price_params # user _user = User.find(_price_params[:user_id]) # reservable if _price_params[:reservable_id].nil? @amount = {elements: nil, total: 0, before_coupon: 0} else _reservable = _price_params[:reservable_type].constantize.find(_price_params[:reservable_id]) @amount = Price.compute(current_user.is_admin?, _user, _reservable, _price_params[:slots_attributes], _price_params[:plan_id], _price_params[:nb_reserve_places], _price_params[:tickets_attributes], coupon_params[:coupon_code]) end if @amount.nil? render status: :unprocessable_entity else render status: :ok end end private def price_params params.require(:price).permit(:amount) end def compute_price_params params.require(:reservation).permit(:reservable_id, :reservable_type, :plan_id, :user_id, :nb_reserve_places, tickets_attributes: [:event_price_category_id, :booked], slots_attributes: [:id, :start_at, :end_at, :availability_id, :offered]) end def coupon_params params.permit(:coupon_code) end end