phateio/kiris

View on GitHub
app/controllers/admin/track_migrations_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Admin::TrackMigrationsController < ApplicationController
  before_action :load_internal_style_sheet!
  before_action :authenticate

  def index
    set_site_title(I18n.t('admin.track_migration.title'))
    @track_migrations = TrackMigration.order(id: :asc).page(page)
  end

  def new
    set_site_title(I18n.t('admin.track_migration.title'))
    @track_migration = TrackMigration.new
  end

  def create
    set_site_title(I18n.t('admin.track_migration.title'))
    @track_migration = TrackMigration.new(track_migration_params)
    render 'new' and return if not @track_migration.save
    x_redirect_to redirect_to_params || admin_track_migrations_path
  end

  def edit
    set_site_title(I18n.t('admin.track_migration.title'))
    @track_migration = TrackMigration.find(track_migration_id)
    @redirect_to = request_referer
  end

  def update
    set_site_title(I18n.t('admin.track_migration.title'))
    @track_migration = TrackMigration.find(track_migration_id)
    render 'edit' and return if not @track_migration.update(track_migration_params)
    x_redirect_to redirect_to_params || admin_track_migrations_path
  end

  def migrate
    set_site_title(I18n.t('admin.track_migration.title'))
    @track_migration = TrackMigration.find(track_migration_id)
    track_min_count = Track.requestable.order(count: :asc).first.count
    @track_migration.count = track_min_count
    @track_migration.requestable!
    @track = Track.new(@track_migration.attributes.slice(*track_attribute_names))
    @redirect_to = request_referer
  end

  def transfer
    set_site_title(I18n.t('admin.track_migration.title'))
    @track_migration = TrackMigration.find(track_migration_id)
    @track = Track.new(track_params)
    @track_migration.track_migration_comments.each do |track_migration_comment|
      @track.track_comments.build(track_migration_comment.attributes.slice(*track_comment_attribute_names))
    end
    render 'migrate' and return if not @track.save
    @track_migration.destroy
    x_redirect_to redirect_to_params || admin_track_migrations_path
  end

  def destroy
    @track_migration = TrackMigration.find(track_migration_id)
    @track_migration.destroy
    x_redirect_to redirect_to_params || admin_track_migrations_path
  end

  private
  def track_migration_id
    params[:id]
  end

  def track_migration_params
    params.require(:track_migration).permit!
  end

  def track_params
    params.require(:track).permit!
  end

  def track_attribute_names
    Track.attribute_names
  end

  def track_comment_attribute_names
    TrackComment.attribute_names
  end
end