Files
old-holivud2/app/controllers/release_template_imports_controller.rb
2020-06-18 16:56:11 +02:00

50 lines
1.5 KiB
Ruby

require 'will_paginate/array'
class ReleaseTemplateImportsController < ApplicationController
include ProjectContext
layout "project"
before_action :set_project
def new
authorize ContractTemplate, :new?
templates = []
filtered_contract_templates.each do |contract_template|
next if contract_template.duplicated? ||
contract_template.archived? ||
contract_template.project == @project
already_imported = contract_template.duplicates.non_archived.pluck(:project_id).include?(@project.id)
templates << OpenStruct.new(template: contract_template, already_imported?: already_imported)
end
# Already imported templates to the end of list
templates.sort_by! { |t| t.already_imported? ? 1 : 0 }
@importable_templates = templates.paginate(page: params[:page])
end
def create
authorize ContractTemplate, :create?
# Authorize each of the contract templates separately
ContractTemplate.where(id: params[:template_ids]).each { |ct| authorize ct, :import? }
if @project.import_contract_templates(params[:template_ids])
redirect_to project_contract_templates_path(@project), notice: t(".imported")
else
redirect_to project_contract_templates_path(@project), alert: t(".error")
end
end
private
def filtered_contract_templates
if params[:query].present?
search_results = ContractTemplate.search(params[:query])
policy_scope(ContractTemplate).where(id: search_results.select(:id))
else
policy_scope(ContractTemplate)
end
end
end