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::Base
  def build_git_dependencies
Sébastien Gaya's avatar
Sébastien Gaya committed
    add_dependency active_storage_blobs
    add_dependency organizations
Sébastien Gaya's avatar
Sébastien Gaya committed
    organizations.each do |organization|
      add_dependency organization.active_storage_blobs
    end
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
Arnaud Levy's avatar
Arnaud Levy committed
    @active_storage_blobs ||= partners.map { |partner|
      partner.blob
    }.compact
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