70 lines
1.7 KiB
Ruby
70 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class ContractTemplates::BlankContractsController < ApplicationController
|
|
before_action :set_contract_template
|
|
|
|
def show
|
|
send_file contract.to_pdf, download_attributes
|
|
end
|
|
|
|
def new
|
|
authorize BlankContract
|
|
render 'blank_contracts/new'
|
|
end
|
|
|
|
def create
|
|
if number_of_copies_valid?
|
|
send_file contract.to_pdf, download_attributes
|
|
else
|
|
authorize BlankContract
|
|
redirect_back fallback_location: [:new, @contract_template, :blank_contracts], notice: t('.number_of_copies_invalid_notice')
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def number_of_copies_valid?
|
|
number_of_copies = params[:number_of_copies].to_i
|
|
number_of_copies.positive?
|
|
rescue StandardError
|
|
false
|
|
end
|
|
|
|
def contract_templates
|
|
policy_scope(ContractTemplate)
|
|
end
|
|
|
|
def set_contract_template
|
|
@contract_template = contract_templates.find(params[:contract_template_id])
|
|
end
|
|
|
|
def releasable
|
|
create_releasable_instance
|
|
end
|
|
|
|
def create_releasable_instance
|
|
template_release_type = @contract_template[:release_type]
|
|
releasable = "#{template_release_type}_release".classify.safe_constantize.new
|
|
releasable.contract_template = @contract_template
|
|
releasable.project_id = @contract_template.project_id
|
|
releasable
|
|
end
|
|
|
|
def contract
|
|
authorize BlankContract.new(releasable, params[:number_of_copies])
|
|
end
|
|
|
|
def download_attributes
|
|
{
|
|
disposition: 'inline',
|
|
filename: contract.filename,
|
|
type: 'application/pdf'
|
|
}
|
|
end
|
|
|
|
def render_sample_html
|
|
# NOTE: For development purposes, this contract renders with the current locale, not the locale of the release itself
|
|
render contract.render_attributes
|
|
end
|
|
end
|