31 lines
1.2 KiB
Ruby
31 lines
1.2 KiB
Ruby
class CastingSubmissionDownloadsController < ApplicationController
|
|
include ProjectContext
|
|
|
|
before_action :set_project, only: [:create]
|
|
before_action :set_casting_submission, only: :create
|
|
|
|
include ProjectLayout
|
|
|
|
def create
|
|
download = @project.downloads.create!(name: @casting_submission.zip_file_name, release_type: "CastingSubmission")
|
|
|
|
other_downloads_in_progress = @project.downloads.unfinished_desc_order.offset(1)
|
|
|
|
if other_downloads_in_progress.any?
|
|
in_progress_downloads_details = render_to_string "_other_pending_downloads", locals: { downloads: other_downloads_in_progress, release_type: "CastingSubmission" }, :layout => false
|
|
ProjectsChannel.broadcast_download_generation_update(download, in_progress_downloads_details)
|
|
else
|
|
ProjectsChannel.broadcast_download_generation_update(download, I18n.t("casting_submission_downloads.download.pending", release_type: "CastingSubmission"))
|
|
end
|
|
|
|
GenerateCastingSubmissionFilesZipJob.perform_later(@project, download, @casting_submission)
|
|
end
|
|
|
|
private
|
|
|
|
def set_casting_submission
|
|
authorize(Download)
|
|
@casting_submission = policy_scope(@project.casting_submissions).find(params[:casting_submission_id])
|
|
end
|
|
end
|