Class: Publication::Saver

Inherits:
BaseService show all
Defined in:
app/services/publication/saver.rb

Overview

Service object: saver.

Defined Under Namespace

Classes: Result

Instance Attribute Summary

Attributes inherited from BaseService

#options

Instance Method Summary collapse

Methods inherited from BaseService

#initialize, #log_debug, #log_error, #log_info, #log_warning, #logger, #tagged_logger

Constructor Details

This class inherits a constructor from BaseService

Instance Method Details

#initialize_publication(publication_params) ⇒ Object



29
30
31
32
33
# File 'app/services/publication/saver.rb', line 29

def initialize_publication(publication_params)
  defaults = { product_category_id: ProductCategory.publications_root_id, cycle_count_grouping: 'not_set' }
  defaults.merge!(publication_params)
  Item.new(defaults)
end

#process(id: nil, publication: nil, publication_params: {}, user: nil) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/services/publication/saver.rb', line 10

def process(id: nil, publication: nil, publication_params: {}, user: nil) # rubocop:disable Lint/UnusedMethodArgument
  publication = publication
  publication ||= Item.publications.find(id) if id
  publication ||= initialize_publication(publication_params)
  publication.assign_attributes(publication_params)

  if publication.save
    changed_literature = publication.has_literature_changed?
    if changed_literature || publication.primary_image.nil?
      # Generate a new cover image
      publication.create_primary_image_from_pdf
    end
    publication.set_search_text if changed_literature
    Result.new(publication: publication, saved: true)
  else
    Result.new(publication: publication, saved: false, errors: publication.errors.full_messages)
  end
end