houdini/lib/delete/delete_campaign_gift_option.rb
2020-06-15 10:26:57 -05:00

32 lines
1.3 KiB
Ruby

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
module DeleteCampaignGiftOption
def self.delete(campaign, campaign_gift_option_id)
ParamValidation.new({ campaign: campaign,
campaign_gift_option_id: campaign_gift_option_id },
campaign: {
required: true,
is_a: Campaign
},
campaign_gift_option_id: {
required: true,
is_integer: true
})
Qx.transaction do
cgo = campaign.campaign_gift_options.where('id = ? ', campaign_gift_option_id).first
unless cgo
raise ParamValidation::ValidationError.new("#{campaign_gift_option_id} is not a valid gift option for campaign #{campaign.id}", key: :campaign_gift_option_id)
end
if cgo.campaign_gifts.any?
raise ParamValidation::ValidationError.new("#{campaign_gift_option_id} already has campaign gifts. It can't be deleted for safety reasons.", key: :campaign_gift_option_id)
end
cgo.destroy
return cgo
end
end
end