Files
old-holivud2/app/controllers/api/contract_templates_controller.rb

64 lines
1.5 KiB
Ruby
Raw Normal View History

2020-05-31 22:38:19 +02:00
class Api::ContractTemplatesController < Api::ApiController
include ProjectContext
before_action :set_project, only: [:index]
before_action :set_contract_template, only: [:show]
def index
render jsonapi: contract_templates, class: { "ContractTemplate": index_serializable }
end
def show
handle_response(@contract_template)
end
def handle_response(contract_template, status = :ok)
mapping = {
"ContractTemplate": show_serializable,
"ActiveStorage::Attachment".to_sym => ActiveStorage::SerializableAttachment,
}
render jsonapi: contract_template,
status: status,
class: mapping
end
def attributes_for_index
[:name]
end
def index_serializable
name = "contract_template"
attributes_to_send = attributes_for_index
Class.new(JSONAPI::Serializable::Resource) do
type name
attributes_to_send.each do |attr|
attribute attr.to_sym
end
end
end
def show_serializable
name = "contract_template"
Class.new(JSONAPI::Serializable::Resource) do
type name
ContractTemplate.new.attributes.keys.each do |attr|
attribute attr.to_sym
end
end
end
private
def contract_templates
date = Date.parse(params.fetch(:updated_since, Date.new.to_s))
policy_scope(ContractTemplate.where(project_id: @project.id, updated_at: date..Float::INFINITY))
end
def set_contract_template
@contract_template = ContractTemplate.find(params[:id])
end
end