2019-07-30 21:29:24 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-03-25 16:15:39 +00:00
|
|
|
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
|
2018-03-25 17:30:42 +00:00
|
|
|
module CreateCampaign
|
|
|
|
CAMPAIGN_NAME_LENGTH_LIMIT = 60
|
|
|
|
|
2018-11-09 00:29:00 +00:00
|
|
|
# @return [Object] a json object for historical purposes
|
|
|
|
def self.create(params, nonprofit)
|
|
|
|
Time.use_zone(nonprofit.timezone || 'UTC') do
|
|
|
|
params[:campaign][:end_datetime] = Chronic.parse(params[:campaign][:end_datetime]) if params[:campaign][:end_datetime].present?
|
|
|
|
end
|
|
|
|
|
|
|
|
if !params[:campaign][:parent_campaign_id]
|
|
|
|
campaign = nonprofit.campaigns.create params[:campaign]
|
|
|
|
|
|
|
|
return { errors: campaign.errors.messages }.as_json unless campaign.errors.empty?
|
2019-07-30 21:29:24 +00:00
|
|
|
|
2018-11-09 00:29:00 +00:00
|
|
|
return campaign.as_json
|
2019-07-30 21:29:24 +00:00
|
|
|
# json_saved campaign, 'Campaign created! Well done.'
|
2018-11-09 00:29:00 +00:00
|
|
|
else
|
|
|
|
profile_id = params[:campaign][:profile_id]
|
|
|
|
Profile.find(profile_id).update_attributes params[:profile]
|
|
|
|
return CreatePeerToPeerCampaign.create(params[:campaign], profile_id)
|
|
|
|
end
|
|
|
|
end
|
2019-07-30 21:29:24 +00:00
|
|
|
end
|