Sha256: fa409f2253c3aff957fe0ca7343c9535e287a57c491a9bea77cf9b7cbf92c4de

Contents?: true

Size: 1.94 KB

Versions: 7

Compression:

Stored size: 1.94 KB

Contents

class ExportEmailController < UmlautController

  before_filter :load_objects
  layout :search_layout_except_xhr

  def load_objects
    @svc_response = ServiceResponse.find(params[:id])
    @user_request = @svc_response.request if @svc_response
  end

  def send_email
    @email = params[:email]
    @fulltexts = @user_request.get_service_type('fulltext', { :refresh=>true })
    @holdings = @user_request.get_service_type('holding', { :refresh=>true })
    if valid_email?
      Emailer.citation(@email, @user_request, @fulltexts, @holdings).deliver
    else
      flash[:alert] = email_validation_error
      render :email and return
    end
  end

  def send_txt
    @number = params[:number]
    # Remove any punctuation or spaces etc
    @number.gsub!(/[^\d]/, '') if @number
    @provider = params[:provider]
    @email = "#{@number}@#{@provider}" unless @number.nil? or @provider.nil?
    @holding = params[:holding]
    if valid_txt_number? && valid_txt_holding?
      Emailer.short_citation(@email, @user_request, holding_location(@holding), call_number(@holding)).deliver
    else
      flash[:alert] = txt_validation_error
      render :txt and return
    end
  end

  private
  def valid_txt_number?
    ((not @number.blank?) && @number.length == 10)
  end

  def valid_txt_holding?
    (not @holding.blank?)
  end

  def valid_email?
    (@email =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)
  end

  def txt_validation_error
    errors = []
    errors << "a valid number" unless valid_txt_number?
    errors << "the item you wish to send" unless valid_txt_holding?
    errors
  end

  def email_validation_error
    errors = []
    errors << "a valid email address"
    errors
  end

  def holding(id)
    return ServiceResponse.find(id) unless id.nil?
  end

  def holding_location(id)
    return holding(id).view_data[:collection_str] unless holding(id).nil?
  end

  def call_number(id)
    return holding(id).view_data[:call_number] unless holding(id).nil?
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
umlaut-3.3.1 app/controllers/export_email_controller.rb
umlaut-3.3.0 app/controllers/export_email_controller.rb
umlaut-3.2.0 app/controllers/export_email_controller.rb
umlaut-3.1.1 app/controllers/export_email_controller.rb
umlaut-3.1.0 app/controllers/export_email_controller.rb
umlaut-3.1.0.pre2 app/controllers/export_email_controller.rb
umlaut-3.1.0.pre1 app/controllers/export_email_controller.rb