class Decidim::Meetings::Admin::InviteUserToJoinMeeting


A command with all the business logic to invite users to join a meeting.

def call

Returns nothing.

- :invalid if the form wasn't valid and we couldn't proceed.
- :ok when everything is valid.

Executes the command. Broadcasts these events:
def call
  return broadcast(:invalid) if form.invalid?
  invite_user
  broadcast(:ok)
end

def initialize(form, meeting, invited_by)

invited_by - The user performing the operation
meeting - The meeting which the user is invited to.
form - A form object with the params.

Public: Initializes the command.
def initialize(form, meeting, invited_by)
  @form = form
  @meeting = meeting
  @invited_by = invited_by
end

def invite_user

def invite_user
  if user.persisted?
    InviteJoinMeetingMailer.invite(user, meeting, invited_by).deliver_later
  else
    user.name = form.name
    user.skip_reconfirmation!
    user.invite!(invited_by, invitation_instructions: "join_meeting", meeting: meeting)
  end
end

def user

def user
  @user ||= Decidim::User.find_or_create_by(
    organization: form.current_organization,
    email: form.email.downcase
  )
end