Sha256: eb0ac94ad0e79f0f5f716431848ed1ef4263351e685bc9d0fbaa741ab5c77b0e

Contents?: true

Size: 1.73 KB

Versions: 11

Compression:

Stored size: 1.73 KB

Contents

# Generates a PDF of member cards.
#
# Generators use a namespace and classes to take advantage of the convention
# used to include templates in PdfGeneration (ClassName -> partial_name in app/views/pdfs).
#
# Supported Member Card Templates:
#   * Blanks Usa Id Card 6 (6 cards per 8"x11" page)
#
# To add support for other Member Card templates:
#   1. Create a class in the MemberCardGenerator namespace and include InstanceMethods
#   2. Create a partial in app/views/pdfs/member_card_generator using underscored version of the class name (e.g. Avery5361LaminatedIdCards -> avery5361_laminated_id_cards)
#
# Examples:
#
#    generator    = MemberCardGenerator::BlanksUsaIdc6.new(members)
#    download_url = generator.generate
module MemberCardGenerator
  module InstanceMethods
    attr_reader :download_url
    attr_reader :members

    def initialize(members, template='blanks_usa_idc6')
      @members = Array.wrap(members)
      validate_members!
    end

    def id
      hash
    end

    def generate
      @download_url = pdf_generator.generate
    end

    def members
      @members.select { |m| !m.memberships.current.first.blank? }
    end

    def pdf_generator
      @pdf_generator ||= begin
        PdfGeneration.new(self).tap do |p|
          p.pdf_options = {
            :page_size => 'Letter'
          }
        end
      end
    end

    def validate_members!
      errors = []

      members.each_with_index do |member,index|
        errors << "    #{member.class} found at position #{index}" unless member.kind_of?(Member)
      end

      raise ArgumentError, "Only Member objects are supported for generating member cards:\n" + errors.join("\n") unless errors.empty?
    end
  end

  class BlanksUsaIdc6
    include InstanceMethods
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
artfully_ose-1.3.0.pre4 app/models/member_card_generator.rb
artfully_ose-1.3.0.pre3 app/models/member_card_generator.rb
artfully_ose-1.3.0.pre2 app/models/member_card_generator.rb
artfully_ose-1.3.0.pre1 app/models/member_card_generator.rb
artfully_ose-1.2.0 app/models/member_card_generator.rb
artfully_ose-1.2.0.beta.1 app/models/member_card_generator.rb
artfully_ose-1.2.0.alpha.2 app/models/member_card_generator.rb
artfully_ose-1.2.0.alpha.1 app/models/member_card_generator.rb
artfully_ose-1.2.0.pre.27 app/models/member_card_generator.rb
artfully_ose-1.2.0.pre.26 app/models/member_card_generator.rb
artfully_ose-1.2.0.pre.24 app/models/member_card_generator.rb