1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-03-25 01:14:43 +00:00
Files
wrestlingdev.com/app/controllers/tournament_backups_controller.rb

78 lines
2.9 KiB
Ruby

class TournamentBackupsController < ApplicationController
before_action :set_tournament
before_action :set_tournament_backup, only: [:show, :destroy, :restore]
before_action :check_access_manage
# GET /tournament/:tournament_id/tournament_backups
def index
@tournament_backups = @tournament.tournament_backups.order(created_at: :desc)
end
# GET /tournament/:tournament_id/tournament_backups/:id
def show
end
# DELETE /tournament/:tournament_id/tournament_backups/:id
def destroy
if @tournament_backup.destroy
redirect_to tournament_tournament_backups_path(@tournament), notice: 'Backup was successfully deleted.'
else
redirect_to tournament_tournament_backups_path(@tournament), alert: 'Failed to delete the backup.'
end
end
# POST /tournament/:tournament_id/tournament_backups/create
def create
TournamentBackupService.new(@tournament, 'Manual backup').create_backup
redirect_to tournament_tournament_backups_path(@tournament), notice: 'Backup was successfully created. It will show up soon, check your background jobs for status.'
end
# POST /tournament/:tournament_id/tournament_backups/:id/restore
def restore
WrestlingdevImporter.new(@tournament, @tournament_backup).import
redirect_to tournament_path(@tournament), notice: 'Restore has successfully been submitted, please check your background jobs to see if it has finished.'
end
# POST /tournament/:tournament_id/tournament_backups/import_manual
def import_manual
import_text = params[:tournament][:import_text]
if import_text.blank?
redirect_to tournament_tournament_backups_path(@tournament), alert: 'Import text cannot be blank.'
return
end
begin
# Create a temporary backup object
backup = TournamentBackup.new(
tournament: @tournament,
backup_data: Base64.encode64(import_text),
backup_reason: 'Manual Import'
)
# Pass the backup object to the importer
WrestlingdevImporter.new(@tournament, backup).import
redirect_to tournament_path(@tournament), notice: 'Restore has successfully been submitted, please check your background jobs to see if it has finished.'
rescue JSON::ParserError => e
redirect_to tournament_tournament_backups_path(@tournament), alert: "Failed to parse JSON: #{e.message}"
rescue StandardError => e
redirect_to tournament_tournament_backups_path(@tournament), alert: "An error occurred: #{e.message}"
end
end
private
def set_tournament
@tournament = Tournament.find(params[:tournament_id])
end
def set_tournament_backup
@tournament_backup = @tournament.tournament_backups.find(params[:id])
end
def check_access_manage
authorize! :manage, @tournament
end
end