Sha256: 9de219cf278e47dd43eb413d143e8feb50ff52d916fd33d671b2a67770686a7b

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

module Decidim
  module ParticipatoryProcesses
    module Admin
      # A form object used to create participatory process user roles from the
      # admin dashboard.
      #
      class ParticipatoryProcessUserRoleForm < Form
        mimic :participatory_process_user_role

        attribute :name, String
        attribute :email, String
        attribute :role, String

        validates :name, :email, :role, presence: true
        validates :role, inclusion: { in: Decidim::ParticipatoryProcessUserRole::ROLES }

        validates :name, format: { with: UserBaseEntity::REGEXP_NAME }
        validate :admin_uniqueness

        def roles
          Decidim::ParticipatoryProcessUserRole::ROLES.map do |role|
            [
              I18n.t(role, scope: "decidim.admin.models.participatory_process_user_role.roles"),
              role
            ]
          end
        end

        def admin_uniqueness
          errors.add(:email, :taken) if context && context.current_organization && context.current_organization.admins.where(email: email).exists?
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
decidim-participatory_processes-0.23.1 app/forms/decidim/participatory_processes/admin/participatory_process_user_role_form.rb
decidim-participatory_processes-0.23.1.rc1 app/forms/decidim/participatory_processes/admin/participatory_process_user_role_form.rb
decidim-participatory_processes-0.23.0 app/forms/decidim/participatory_processes/admin/participatory_process_user_role_form.rb