# frozen_string_literal: true # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later module InsertSourceToken def self.create_record(tokenizable, params = {}) ParamValidation.new({ tokenizable: tokenizable }.merge(params), tokenizable: { required: true }, event: { is_a: Event }, expiration_time: { is_integer: true, min: 1 }, max_uses: { is_integer: true, min: 1 }) if !params[:event].nil? max_uses = params[:max_uses] || Settings.source_tokens.event_donation_source.max_uses expiration_diff = params[:expiration_time] || Settings.source_tokens.event_donation_source.time_after_event expiration = params[:event].end_datetime + expiration_diff.to_i else max_uses = params[:max_uses] || Settings.source_tokens.max_uses expiration_diff = params[:expiration_time] || Settings.source_tokens.expiration_time expiration = Time.now + expiration_diff.to_i end c = SourceToken.new c.tokenizable = tokenizable c.expiration = expiration c.token = SecureRandom.uuid c.max_uses = max_uses c.event = params[:event] c.save! c end end