require_relative 'contact' require_relative 'member' require_relative 'song' class Band attr_reader :name, :city, :website, :label, :short_bio, :contact, :members, :songs attr_accessor :errors def initialize(params = nil) @errors = [] @contact = Contact.new @members = "" @songs = [] if params @name = params['name'] @city = params['city'] @website = params['website'] @label = params['label'] @short_bio = params['shortbio'] @members = params['members'] || "" @contact = Contact.new(params['contact']) if params['songs'] params['songs'].each do |k, s| @songs << Song.new(s) end end end end def valid? validate! errors.length == 0 end def validate! @errors = [] if @name.nil? || @name.strip.empty? errors << "Bandnavn mangler" end errors.concat(@contact.validate!) if @songs.length <= 0 errors << "Du må ha med minst én låt!" end end def has_errors errors.length > 0 end def name_and_city city.empty? ? name : name + " (" + city + ")" end end