Sha256: a2b8aa394c5be6fec1a79015aff183aa1a08d542b6c07a8ca7f7927cad68866c

Contents?: true

Size: 889 Bytes

Versions: 3

Compression:

Stored size: 889 Bytes

Contents

module PagesCore
  class InviteService
    include Rails.application.routes.url_helpers

    attr_reader :attributes, :user, :host, :protocol

    def initialize(attributes, user:, host:, protocol: "http")
      @attributes = attributes
      @user = user
      @host = host
      @protocol = protocol
    end

    class << self
      def call(*attrs)
        new(*attrs).call
      end
    end

    def call
      Invite.transaction do
        invite = user.invites.create(attributes)
        if invite.valid?
          deliver_invite(invite)
          invite.update(sent_at: Time.now.utc)
        end
        invite
      end
    end

    private

    def deliver_invite(invite)
      AdminMailer.invite(
        invite,
        admin_invite_with_token_url(invite, invite.token,
                                    host: host, protocol: protocol)
      ).deliver_later
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pages_core-3.6.2 app/services/pages_core/invite_service.rb
pages_core-3.6.1 app/services/pages_core/invite_service.rb
pages_core-3.6.0 app/services/pages_core/invite_service.rb