1class SponsorsController < SignaturesController
 
2  skip_before_filter :redirect_to_petition_page_if_rejected
 
3  skip_before_filter :redirect_to_petition_page_if_closed
 
4  skip_before_filter :redirect_to_petition_page_if_closed_for_signing
 
5
 
6  before_action :redirect_to_new_sponsor_page_if_validated, only: [:verify]
 
7  before_action :redirect_to_petition_page_if_moderated, except: [:thank_you, :signed]
 
8  before_action :redirect_to_moderation_info_page_if_sponsored, except: [:thank_you, :signed]
 
 9  before_action :validate_creator, only: [:new]
 
  • Complexity 2 » saikuro
11  def verify
 
12    unless @signature.validated?
 
13      @signature.validate!(request: request)
 
14    end
 
 
16    store_signed_token_in_session
 
17    send_sponsor_support_notification_email_to_petition_owner
 
18    redirect_to signed_sponsor_url(@signature)
 
19  end
 
 
21  private
 
  • Complexity 3 » saikuro
23  def retrieve_petition
 
24    @petition = Petition.not_hidden.find(petition_id)
 
 
26    if @petition.flagged? || @petition.stopped?
 
27      raise ActiveRecord::RecordNotFound, "Unable to find Petition with id: #{petition_id}"
 
28    end
 
 
30    unless @petition.sponsor_token == token_param
 
31      raise ActiveRecord::RecordNotFound, "Unable to find Petition with sponsor token: #{token_param.inspect}"
 
32    end
 
33  end
 
  • Complexity 2 » saikuro
35  def retrieve_signature
 
36    @signature = Signature.sponsors.find(signature_id)
 
37    @petition = @signature.petition
 
 
39    if @petition.flagged? || @petition.hidden? || @petition.stopped?
 
40      raise ActiveRecord::RecordNotFound, "Unable to find Signature with id: #{signature_id}"
 
41    end
 
42  end
 
  • DuplicateMethodCall - calls '@petition.sponsors' 2 times » reek
  • Complexity 2 » saikuro
44  def build_signature
 
45    if action_name == "new"
 
46      @signature = @petition.sponsors.build(signature_params_for_new)
 
47    else
 
48      @signature = @petition.sponsors.build(signature_params_for_create)
 
49    end
 
50  end
 
  • Complexity 3 » saikuro
52  def send_email_to_petition_signer
 
53    unless @signature.email_threshold_reached?
 
54      if @signature.pending?
 
55        PetitionAndEmailConfirmationForSponsorEmailJob.perform_later(@signature)
 
56      else
 
57        EmailDuplicateSignaturesEmailJob.perform_later(@signature)
 
58      end
 
59    end
 
60  end
 
  • Complexity 4 » saikuro
62  def send_sponsor_support_notification_email_to_petition_owner
 
63    if @petition.collecting_sponsors?
 
64      if @petition.will_reach_threshold_for_moderation?
 
65        SponsorSignedEmailOnThresholdEmailJob.perform_later(@signature)
 
66      elsif @signature.just_validated?
 
67        SponsorSignedEmailBelowThresholdEmailJob.perform_later(@signature)
 
68      end
 
69    end
 
70  end
 
  • Complexity 1 » saikuro
72  def thank_you_url
 
73    thank_you_petition_sponsors_url(@petition, token: @petition.sponsor_token)
 
74  end
 
  • Complexity 1 » saikuro
76  def signed_token_failure_url
 
77    moderation_info_petition_url(@petition)
 
78  end
 
  • Complexity 2 » saikuro
80  def redirect_to_new_sponsor_page_if_validated
 
81    if @signature.validated_before?(15.minutes.ago)
 
82      redirect_to new_petition_sponsor_url(@petition, token: @petition.sponsor_token)
 
83    end
 
84  end
 
  • Complexity 2 » saikuro
86  def redirect_to_petition_page_if_moderated
 
87    if @petition.moderated?
 
88      redirect_to petition_url(@petition)
 
89    end
 
90  end
 
  • Complexity 2 » saikuro
92  def redirect_to_moderation_info_page_if_sponsored
 
93    if @petition.has_maximum_sponsors?
 
94      redirect_to moderation_info_petition_url(@petition)
 
95    end
 
96  end
 
  • Complexity 1 » saikuro
98  def validate_creator
 
 99    @petition.validate_creator!
 
100  end
 
101end