Class: Spina::Admin::Journal::VolumesController

Inherits:
ApplicationController show all
Defined in:
app/controllers/spina/admin/journal/volumes_controller.rb

Overview

Controller for Volume records.

Instance Method Summary collapse

Instance Method Details

#createObject

rubocop:disable Metrics/AbcSize



18
19
20
21
22
23
24
25
26
27
28
# File 'app/controllers/spina/admin/journal/volumes_controller.rb', line 18

def create # rubocop:disable Metrics/AbcSize
  @volume = Volume.new
  @volume.journal_id = Journal.instance.id
  @volume.number = Volume.any? ? Volume.sorted_desc.first.number + 1 : 1
  @volume.save!
  redirect_to admin_journal_volumes_path, success: t('.created', number: @volume.number)
rescue ActiveRecord::RecordNotUnique
  # can only happen because of some race condition where two Volumes are created at the same time
  logger.error 'Error when creating new volume. Retrying...'
  retry
end

#destroyObject



30
31
32
33
34
35
36
37
# File 'app/controllers/spina/admin/journal/volumes_controller.rb', line 30

def destroy
  @volume.destroy
  respond_to do |format|
    format.html do
      redirect_to admin_journal_volumes_path, success: 'Volume deleted.'
    end
  end
end

#editObject



16
# File 'app/controllers/spina/admin/journal/volumes_controller.rb', line 16

def edit; end

#indexObject



12
13
14
# File 'app/controllers/spina/admin/journal/volumes_controller.rb', line 12

def index
  @volumes = Volume.sorted_asc
end

#sortObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/controllers/spina/admin/journal/volumes_controller.rb', line 39

def sort
  ActiveRecord::Base.transaction do
    sort_params.each do |id, new_pos|
      # ignore uniqueness validation for now
      Volume.find(id.to_i).update_attribute(:number, new_pos.to_i) # rubocop:disable Rails/SkipsModelValidations
    end
    validate_sort_order
  end
  render json: { success: true, message: t('.sort_success') }
rescue ActiveRecord::RecordInvalid
  render json: { success: false, message: t('.sort_error') }
end