houdini/app/controllers/event_discounts_controller.rb

49 lines
1.3 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class EventDiscountsController < ApplicationController
include Controllers::Event::Current
include Controllers::Event::Authorization
before_action :authenticate_event_editor!, except: [:index]
def create
event_discount_params[:event_id] = current_event.id
render JsonResp.new(event_discount_params) do |_data|
requires(:code, :name).as_string
requires(:event_id, :percent).as_int
end.when_valid do |data|
{ status: 200, json: { event_discount: current_event.event_discounts.create(data) } }
end
end
def index
render json: QueryEventDiscounts.with_event_ids([current_event.id])
end
def update
discount = Hamster.to_ruby(
Psql.execute(
Qexpr.new.update(:event_discounts, event_discount_params)
.where('id=$id', id: params[:id])
.returning('*')
).first
)
render json: { status: 200, data: discount }
end
def destroy
Psql.execute(
Qexpr.new.delete_from('event_discounts')
.where('event_discounts.event_id=$id', id: params['event_id'])
.where('event_discounts.id=$id', id: params['id'])
)
end
private
def event_discount_params
params.required(:event_discount).permit(:code, :event_id, :name, :percent)
end
end