Sha256: c7a6cfdca22a173b5285c27564abf7332eabf52652b84d113dd0ce1f24917575

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

# frozen_string_literal: true

module Decidim
  # A command with all the business logic to create a user through the sign up form.
  # It enables the option to sign up as a user group.
  class CreateRegistration < Rectify::Command
    # Public: Initializes the command.
    #
    # form - A form object with the params.
    def initialize(form)
      @form = form
    end

    # Executes the command. Broadcasts these events:
    #
    # - :ok when everything is valid.
    # - :invalid if the form wasn't valid and we couldn't proceed.
    #
    # Returns nothing.
    def call
      return broadcast(:invalid) if form.invalid?

      transaction do
        create_user
        create_user_group if form.user_group?
      end

      broadcast(:ok, @user)
    end

    private

    attr_reader :form

    def create_user
      @user = User.create!(email: form.email,
                           name: form.name,
                           password: form.password,
                           password_confirmation: form.password_confirmation,
                           organization: form.current_organization,
                           tos_agreement: form.tos_agreement,
                           newsletter_notifications: form.newsletter_notifications,
                           comments_notifications: true,
                           replies_notifications: true)
    end

    def create_user_group
      UserGroupMembership.create!(user: @user,
                                  user_group: UserGroup.new(name: form.user_group_name,
                                                            document_number: form.user_group_document_number,
                                                            phone: form.user_group_phone))
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decidim-core-0.2.0 app/commands/decidim/create_registration.rb