# Band registration form for Norsk Urskog Metal Sampler # Copyright (C) 2015-2018 Harald Eilersen # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . 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) @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! unless errors !has_errors? 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 && errors.length > 0 end def name_and_city city.empty? ? name : name + " (" + city + ")" end end