docbrown/app/services/article_creation_service.rb
2018-10-29 13:04:42 -04:00

35 lines
1.2 KiB
Ruby

class ArticleCreationService
attr_accessor :user, :article_params, :job_opportunity_params
def initialize(user, article_params, job_opportunity_params)
@user = user
@article_params = article_params
@job_opportunity_params = job_opportunity_params
end
def create!
raise if RateLimitChecker.new(user).limit_by_situation("published_article_creation")
article = Article.new(article_params)
article.user_id = user.id
article.show_comments = true
if user.organization_id.present? && article_params[:publish_under_org].to_i == 1
article.organization_id = user.organization_id
end
article.collection_id = Collection.find_series(article_params[:series], user).id if article_params[:series].present?
create_job_opportunity(article)
if article.save
if article.published
Notification.send_all(article, "Published")
end
end
article.decorate
end
def create_job_opportunity(article)
if job_opportunity_params.present?
job_opportunity = JobOpportunity.create(job_opportunity_params)
article.job_opportunity = job_opportunity
raise unless article.tag_list.include? "hiring"
end
end
end