Skip to content
Snippets Groups Projects
partner.rb 1.17 KiB
Newer Older
Arnaud Levy's avatar
Arnaud Levy committed
class Communication::Block::Template::Partner < Communication::Block::Template
  def build_git_dependencies
    # Blobs already added in Communication::Block::Template#git_dependencies
    add_dependency organizations
Arnaud Levy's avatar
Arnaud Levy committed
  end
Arnaud Levy's avatar
Arnaud Levy committed

Arnaud Levy's avatar
Arnaud Levy committed
  def partners
Arnaud Levy's avatar
Arnaud Levy committed
    @partners ||= elements.map { |element| partner(element) }
                          .compact
Arnaud Levy's avatar
Arnaud Levy committed
  end

  def active_storage_blobs
    @active_storage_blobs ||= partners.map { |partner| partner.blob }
                                      .compact
  end

Arnaud Levy's avatar
Arnaud Levy committed
  protected

  def organizations
Arnaud Levy's avatar
Arnaud Levy committed
    @organizations ||= partners.map { |partner| partner.organization }
                               .compact
Arnaud Levy's avatar
Arnaud Levy committed
  def partner(element)
    # Init to have easy tests in the views and dependencies
    element['organization'] = nil
    element['blob'] = nil
    if element['id']
      organization = university.organizations.find_by id: element['id']
      if organization
        element['organization'] = organization
        element['name'] = organization.to_s
        element['url'] = organization.url
        element['blob'] = organization.logo&.blob
Arnaud Levy's avatar
Arnaud Levy committed
    else
      element['blob'] = find_blob element, 'logo'
Arnaud Levy's avatar
Arnaud Levy committed
    element.to_dot
Arnaud Levy's avatar
Arnaud Levy committed
  end
Arnaud Levy's avatar
Arnaud Levy committed
end