class MembershipAwardsController < ArtfullyOseController def new Rails.cache.delete(cache_key) @membership_types = MembershipType.all @membership_types_hash = {} @membership_types.each {|mt| @membership_types_hash[mt.id] = I18n.l(mt.ends_at, :format => :date_for_input)} @membership_award = MembershipAward.new @membership_award.membership_type ||= @membership_types.first @membership_award.ends_at ||= I18n.l(@membership_types.first.ends_at, :format => :date_for_input) @membership_award.send_email ||= true @membership_award.number_of_memberships ||= 1 @membership_award.people = find_people end def create if params[:membership_award][:confirm].present? @membership_award = from_params(params) Membership.for_award(@membership_award) render 'create' and return else @membership_award = from_params(params) #TODO: Validate that these people are all the same org as this user render "confirm" and return end end private def from_params(params) membership_award = MembershipAward.new membership_award_params = params[:membership_award] membership_award.membership_type = MembershipType.find(membership_award_params[:membership_type]) membership_award.ends_at = membership_award_params[:ends_at] membership_award.send_email = membership_award_params[:send_email] membership_award.number_of_memberships = membership_award_params[:number_of_memberships] membership_award.message = membership_award_params[:message] membership_award.people = find_people membership_award end def cache_key current_user.id.to_s + "membership_award_person_ids" end def find_people ids = Rails.cache.fetch(cache_key) do if params[:person_id].present? Array.wrap(params[:person_id]) else [] end end Array.wrap(Person.find(ids)) end end