# frozen_string_literal: true class NotificationSerializer < ActiveModel::Serializer include Rails.application.routes.url_helpers attributes :id, :title, :message, :created_at, :read_at, :type, :breadcrumbs, :checked, :today def title object.to_notification.title end def breadcrumbs subject = object.to_notification.subject generate_breadcrumbs(subject, []) if subject end def message object.to_notification.message end def created_at I18n.l(object.created_at, format: :full) end def today object.created_at.today? end def checked object.read_at.present? end private def generate_breadcrumbs(subject, breadcrumbs) return [] if subject.is_a?(NonExistantRecord) case subject when Project parent = subject.team url = project_path(subject) when Experiment parent = subject.project url = my_modules_experiment_path(subject) when MyModule parent = subject.experiment url = protocols_my_module_path(subject) when Protocol if subject.in_repository? parent = subject.team url = protocol_path(subject) else parent = subject.my_module url = protocols_my_module_path(subject.my_module) end when Result parent = subject.my_module url = my_module_results_path(subject.my_module) when ProjectFolder parent = subject.team url = project_folder_path(subject) when RepositoryBase parent = subject.team url = repository_path(subject) when RepositoryRow parent = subject.team url = repository_path(subject.repository) when Report parent = subject.team url = reports_path( preview_report_id: subject.id, preview_type: object.params[:report_type], team_id: subject.team.id ) when LabelTemplate parent = subject.team url = label_template_path(subject) when Team parent = nil url = projects_path(team: subject.id) end breadcrumbs << { name: subject.name, url: url } if subject.name.present? if parent generate_breadcrumbs(parent, breadcrumbs) else breadcrumbs.reverse end end end