Initial commit
This commit is contained in:
55
app/controllers/contracts_controller.rb
Normal file
55
app/controllers/contracts_controller.rb
Normal file
@@ -0,0 +1,55 @@
|
||||
class ContractsController < ApplicationController
|
||||
def show
|
||||
respond_to do |format|
|
||||
format.pdf { send_contract_pdf }
|
||||
|
||||
if Rails.env.development?
|
||||
format.html { render_sample_html }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def releases
|
||||
if @project
|
||||
policy_scope(@project.public_send(releasable_param.name.pluralize))
|
||||
else
|
||||
policy_scope(releasable_param.type)
|
||||
end
|
||||
end
|
||||
|
||||
def releasable_param
|
||||
@releasable_param ||= ReleasableParam.new(params.to_unsafe_h)
|
||||
end
|
||||
|
||||
def releasable
|
||||
authorize releases.find(releasable_param.id)
|
||||
end
|
||||
|
||||
def contract
|
||||
authorize Contract.new(releasable)
|
||||
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
|
||||
|
||||
def send_contract_pdf
|
||||
# Native release contracts must be generated on-the-fly; non-native releases have a contract attachment
|
||||
if releasable.native?
|
||||
send_file contract.to_pdf, download_attributes
|
||||
else
|
||||
redirect_to releasable.contract.service_url
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user