app/controllers/admin/shows_controller.rb
# frozen_string_literal: true
module Admin
class ShowsController < ApplicationController
def index
if show_from_query.present?
redirect_to(admin_show_path(show_from_query))
else
@shows = if params[:query].present?
Show.search(params[:query])
else
Show.optimized.reverse_order # .order("titles.#{I18n.locale}")
end
@shows_count = @shows.count
@shows = @shows.paginate(page: params[:page])
set_title(before: 'Shows')
end
end
def show
slug_or_id = params[:show_id] || params[:id]
if (@show = Show.find_by_slug(slug_or_id) || Show.find_by(id: slug_or_id))
Shows::Kitsu::Get.perform(kitsu_id: @show.reference_id, force_update: true) if @show.kitsu?
render('show')
else
redirect_to(admin_shows_path, notice: 'This show does not exist!')
end
end
def sync
[:current, :next].each do |season|
Sync::ShowsFromKitsuJob.perform_later(season)
end
sleep(1)
flash[:warning] = 'Sit tight, grab a coffee: sync is in progress.'
redirect_to(admin_shows_path)
end
def sync_episodes
show = Show.find(params[:show_id])
Sync::EpisodesFromKitsuJob.perform_later(show)
redirect_to(admin_show_path(show))
end
def sync_now
show = Show.find(params[:show_id])
Sync::ShowFromKitsuJob.perform_now(show)
redirect_to(admin_show_path(show))
end
def publish
show = Show.find(params[:show_id])
show.publish
redirect_to(admin_show_path(show))
end
def unpublish
show = Show.find(params[:show_id])
show.unpublish
redirect_to(admin_show_path(show))
end
private
def show_from_query
return @show_from_query if @show_from_query
return unless params[:query].present?
@show_from_query = Show.find_by(id: params[:query]) || Show.find_by_slug(params[:query])
end
end
end