Class: Organizations::InvitationAcceptanceResult

Inherits:
Object
  • Object
show all
Defined in:
lib/organizations/invitation_acceptance_result.rb

Overview

Value object returned by accept_pending_organization_invitation! Encapsulates the result of an invitation acceptance attempt.

Examples:

Checking result status

result = accept_pending_organization_invitation!(user)
if result&.accepted?
  redirect_to dashboard_path, notice: "Welcome!"
end

Constant Summary collapse

STATUSES =
%i[accepted already_member].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status:, invitation:, membership:, switched: false) ⇒ InvitationAcceptanceResult

Returns a new instance of InvitationAcceptanceResult.

Parameters:

  • status (Symbol)

    :accepted or :already_member

  • invitation (Organizations::Invitation)

    The invitation that was accepted

  • membership (Organizations::Membership)

    The resulting membership

  • switched (Boolean) (defaults to: false)

    Whether organization context was switched (default: false)



22
23
24
25
26
27
28
29
30
31
# File 'lib/organizations/invitation_acceptance_result.rb', line 22

def initialize(status:, invitation:, membership:, switched: false)
  unless STATUSES.include?(status)
    raise ArgumentError, "Invalid status: #{status.inspect}. Must be one of: #{STATUSES.join(', ')}"
  end

  @status = status
  @invitation = invitation
  @membership = membership
  @switched = switched
end

Instance Attribute Details

#invitationObject (readonly)

Returns the value of attribute invitation.



16
17
18
# File 'lib/organizations/invitation_acceptance_result.rb', line 16

def invitation
  @invitation
end

#membershipObject (readonly)

Returns the value of attribute membership.



16
17
18
# File 'lib/organizations/invitation_acceptance_result.rb', line 16

def membership
  @membership
end

#statusObject (readonly)

Returns the value of attribute status.



16
17
18
# File 'lib/organizations/invitation_acceptance_result.rb', line 16

def status
  @status
end

Instance Method Details

#accepted?Boolean

Returns true if invitation was freshly accepted.

Returns:

  • (Boolean)

    true if invitation was freshly accepted



34
35
36
# File 'lib/organizations/invitation_acceptance_result.rb', line 34

def accepted?
  status == :accepted
end

#already_member?Boolean

Returns true if user was already a member.

Returns:

  • (Boolean)

    true if user was already a member



51
52
53
# File 'lib/organizations/invitation_acceptance_result.rb', line 51

def already_member?
  status == :already_member
end

#failure?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/organizations/invitation_acceptance_result.rb', line 42

def failure?
  false
end

#failure_reasonObject



46
47
48
# File 'lib/organizations/invitation_acceptance_result.rb', line 46

def failure_reason
  nil
end

#success?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/organizations/invitation_acceptance_result.rb', line 38

def success?
  true
end

#switched?Boolean

Returns true if organization context was switched.

Returns:

  • (Boolean)

    true if organization context was switched



56
57
58
# File 'lib/organizations/invitation_acceptance_result.rb', line 56

def switched?
  !!@switched
end