2020-07-09 11:06:17 +02:00
|
|
|
class ApprovalsController < ApplicationController
|
2020-07-20 13:28:40 +00:00
|
|
|
before_action :set_releasable
|
2020-07-09 11:06:17 +02:00
|
|
|
before_action :set_project
|
|
|
|
|
|
|
|
|
|
layout "project"
|
|
|
|
|
|
|
|
|
|
def create
|
2020-07-20 13:28:40 +00:00
|
|
|
@releasable.approve_by(current_user)
|
2020-08-24 15:52:23 +02:00
|
|
|
@releasable.approved_by_user_signature.attach(approved_by_user_signature_params) if signature_data.present?
|
2020-07-20 13:28:40 +00:00
|
|
|
|
2020-08-24 15:52:23 +02:00
|
|
|
if @releasable.save(context: :approval)
|
2020-07-20 13:28:40 +00:00
|
|
|
redirect_to [@project, "#{@releasable_param.name.pluralize}"], notice: t('.release_approved', release_type: @releasable.model_name.human)
|
2020-08-24 15:52:23 +02:00
|
|
|
else
|
|
|
|
|
render :new
|
2020-07-09 11:06:17 +02:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
2020-07-20 13:28:40 +00:00
|
|
|
def releasable_param
|
|
|
|
|
@releasable_param ||= ReleasableParam.new(params.to_unsafe_h)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def set_releasable
|
|
|
|
|
@releasable = authorize policy_scope(releasable_param.type).find(releasable_param.id)
|
|
|
|
|
end
|
|
|
|
|
|
2020-07-09 11:06:17 +02:00
|
|
|
def set_project
|
2020-07-20 13:28:40 +00:00
|
|
|
@project = @releasable.project
|
2020-07-09 11:06:17 +02:00
|
|
|
end
|
2020-08-24 15:52:23 +02:00
|
|
|
|
|
|
|
|
def releasable_params
|
|
|
|
|
params.require(releasable_param.name).permit(approved_by_user_signature: :data)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def signature_data
|
|
|
|
|
releasable_params.dig(:approved_by_user_signature, :data)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def approved_by_user_signature_params
|
|
|
|
|
{
|
|
|
|
|
data: signature_data,
|
|
|
|
|
filename: "approved_by_user_signature.png",
|
|
|
|
|
content_type: "image/png",
|
|
|
|
|
identify: false,
|
|
|
|
|
}
|
|
|
|
|
end
|
2020-07-09 11:06:17 +02:00
|
|
|
end
|