Class: Decidim::TimeTracker::Admin::CreateAssignation
- Inherits:
-
Rectify::Command
- Object
- Rectify::Command
- Decidim::TimeTracker::Admin::CreateAssignation
- Defined in:
- app/commands/decidim/time_tracker/admin/create_assignation.rb
Overview
A command with all the business logic when creating a assignation
Instance Method Summary collapse
-
#call ⇒ Object
Creates the assignation if valid.
- #create_assignation ⇒ Object
- #existing_user ⇒ Object
-
#initialize(form, activity) ⇒ CreateAssignation
constructor
A new instance of CreateAssignation.
- #new_user ⇒ Object
- #user_form ⇒ Object
Constructor Details
#initialize(form, activity) ⇒ CreateAssignation
Returns a new instance of CreateAssignation.
8 9 10 11 |
# File 'app/commands/decidim/time_tracker/admin/create_assignation.rb', line 8 def initialize(form, activity) @form = form @activity = activity end |
Instance Method Details
#call ⇒ Object
Creates the assignation if valid.
Broadcasts :ok if successful, :invalid otherwise.
16 17 18 19 20 21 22 23 24 25 |
# File 'app/commands/decidim/time_tracker/admin/create_assignation.rb', line 16 def call return broadcast(:invalid) if @form.invalid? ActiveRecord::Base.transaction do @user ||= existing_user || new_user create_assignation end broadcast(:ok) end |
#create_assignation ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/commands/decidim/time_tracker/admin/create_assignation.rb', line 27 def create_assignation Decidim.traceability.create!( Decidim::TimeTracker::Assignation, @form.current_user, activity: @activity, user: @user, status: :accepted, invited_at: Time.current, invited_by_user: @form.current_user ) end |
#existing_user ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/commands/decidim/time_tracker/admin/create_assignation.rb', line 39 def existing_user return @existing_user if defined?(@existing_user) if @form.existing_user @existing_user = @form.user else @existing_user = User.find_by( email: @form.email, organization: @activity.task.time_tracker.component.organization ) InviteUserAgain.call(@existing_user, "invite_private_user") if @existing_user && !@existing_user.invitation_accepted? end @existing_user end |
#new_user ⇒ Object
56 57 58 59 60 61 62 |
# File 'app/commands/decidim/time_tracker/admin/create_assignation.rb', line 56 def new_user @new_user ||= InviteUser.call(user_form) do on(:ok) do |user| return user end end end |
#user_form ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'app/commands/decidim/time_tracker/admin/create_assignation.rb', line 64 def user_form OpenStruct.new(name: @form.name, email: @form.email.downcase, organization: @activity.task.time_tracker.component.organization, admin: false, invited_by: @form.current_user, invitation_instructions: "invite_private_user") end |