community.rb 1.36 KB
require_dependency "community"

class Community

  def attr_to_hash
    attrs = super

    attrs["members-count"] = self.members.count
    attrs["members"] = []

    self.members.each do |member|
      attrs_members = {
        "is_admin" => self.admins.include?(member),
        "id" => member.id,
        "identifier" => member.identifier,
        "name" => member.name
      }
      attrs['members'] << attrs_members
    end

    if self.respond_to?("software?") && self.software?
      attrs['software_data'] = {
        "public_software" => self.software_info.public_software,
        "acronym" => self.software_info.acronym,
        "finality" => self.software_info.finality,
        "repository_link" => self.software_info.repository_link,
        "license_info" => {
          "id" => self.software_info.license_info.id,
          "version" => self.software_info.license_info.version,
          "link" => self.software_info.license_info.link,
        },
        "categories" => []
      }

      self.categories.each do |category|
        if Category.last.parent.name == "Software"
          category_info = {
            "id" => category.id,
            "name" => category.name,
            "slug" => category.slug,
            "path" => category.path
          }

          attrs['software_data']["categories"] << category_info
        end
      end
    end

    attrs
  end
end