mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-16 14:17:00 +08:00
63 lines
1.6 KiB
Ruby
63 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Lists
|
|
class ReportSerializer < ActiveModel::Serializer
|
|
include Canaid::Helpers::PermissionsHelper
|
|
include Rails.application.routes.url_helpers
|
|
|
|
attributes :name, :code, :project_name, :pdf_file, :docx_file, :created_by_name,
|
|
:modified_by_name, :created_at, :updated_at, :urls
|
|
|
|
def project_name
|
|
object['project_name']
|
|
end
|
|
|
|
def created_by_name
|
|
object['created_by_name']
|
|
end
|
|
|
|
def modified_by_name
|
|
object['modified_by_name']
|
|
end
|
|
|
|
def created_at
|
|
I18n.l(object.created_at, format: :full)
|
|
end
|
|
|
|
def updated_at
|
|
I18n.l(object.updated_at, format: :full)
|
|
end
|
|
|
|
def archived
|
|
object.project.archived?
|
|
end
|
|
|
|
def docx_file
|
|
docx = document_preview_report_path(object, report_type: :docx) if object.docx_file.attached?
|
|
{
|
|
processing: object.docx_processing?,
|
|
preview_url: docx,
|
|
error: object.docx_error?
|
|
}
|
|
end
|
|
|
|
def pdf_file
|
|
pdf = document_preview_report_path(object, report_type: :pdf) if object.pdf_file.attached?
|
|
{
|
|
processing: object.pdf_processing?,
|
|
preview_url: pdf,
|
|
error: object.pdf_error?
|
|
}
|
|
end
|
|
|
|
def urls
|
|
{
|
|
edit: edit_project_report_path(object.project_id, object.id),
|
|
status: status_project_report_path(object.project_id, object.id),
|
|
generate_pdf: generate_pdf_project_report_path(object.project_id, object.id),
|
|
generate_docx: generate_docx_project_report_path(object.project_id, object.id),
|
|
save_to_inventory: save_pdf_to_inventory_item_report_path(object)
|
|
}
|
|
end
|
|
end
|
|
end
|