houdini/lib/delete/delete_campaign_gift_option.rb

32 lines
1.3 KiB
Ruby
Raw Normal View History

# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
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