You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: invite_unregistered_user_from_proposed_org.rb
    path of file: ./repos/LocalSupport/app/services
    
    the code of the file until where you have to start completion: class InviteUnregisteredUserFromProposedOrg

  class Response
    INVALID_EMAIL = "Invalid Email"
    NO_EMAIL = "No Email"
    OTHER_FAILURE = "Other Failure"
    SUCCESS = "Success"

    attr_reader :status, :error_msg

    def initialize(status, error_msg)
      @status = status
      @error_msg = error_msg
    end

    def success?
      @status == SUCCESS
    end
  end

  def initialize(email, org)
    @email = email
    @org = org
  end

  def run
    #for the future this from the devis wiki might be relevant
    #When skip_invitation is used, you must also then set the invitation_sent_
    
  def run
    #for the future this from the devis wiki might be relevant
    #When skip_invitation is used, you must also then set the invitation_sent_at field when the user is sent
    # their token. Failure to do so will yield “Invalid invitation token” errors when the user attempts to
    # accept the invite. You can set it like so:
    # user.deliver_invitation
    #but this seems not to be necessary right now per acceptance tests
    usr = User.invite!(:email => @email) do |u|
      u.skip_invitation = true
      u.skip_confirmation!
      u.organisation = @org
    end
    if usr.valid?
      CustomDeviseMailer.proposed_org_approved(@org, @email, usr).deliver_now
    end
    create_response_object(usr)
  end