Direct inventory item assignment to the current task from the item card BE [SCI-8142] (#5163)

Implement controller action to directly assign item to task [SCI-8142]
This commit is contained in:
Soufiane 2023-04-25 14:00:55 +02:00 committed by GitHub
parent 03ff08763b
commit f94d9cc0f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 4 deletions

View file

@ -4,11 +4,11 @@ class MyModuleRepositoriesController < ApplicationController
include ApplicationHelper
before_action :load_my_module
before_action :load_repository, except: %i(repositories_dropdown_list repositories_list_html)
before_action :load_repository, except: %i(repositories_dropdown_list repositories_list_html create)
before_action :check_my_module_view_permissions, except: %i(update consume_modal update_consumption)
before_action :check_repository_view_permissions, except: %i(repositories_dropdown_list repositories_list_html)
before_action :check_repository_view_permissions, except: %i(repositories_dropdown_list repositories_list_html create)
before_action :check_repository_row_consumption_permissions, only: %i(consume_modal update_consumption)
before_action :check_assign_repository_records_permissions, only: :update
before_action :check_assign_repository_records_permissions, only: %i(update create)
def index_dt
@draw = params[:draw].to_i
@ -41,6 +41,34 @@ class MyModuleRepositoriesController < ApplicationController
render rows_view
end
def create
repository_row = RepositoryRow.find(params[:repository_row_id])
repository = repository_row.repository
return render_403 unless can_read_repository?(repository)
ActiveRecord::Base.transaction do
@my_module.my_module_repository_rows.create!(repository_row: repository_row, assigned_by: current_user)
Activities::CreateActivityService.call(activity_type: :assign_repository_record,
owner: current_user,
team: @my_module.experiment.project.team,
project: @my_module.experiment.project,
subject: @my_module,
message_items: { my_module: @my_module.id,
repository: repository.id,
record_names: repository_row.name })
render json: {
flash: t('my_modules.assigned_items.direct_assign.success')
}
end
rescue StandardError => e
Rails.logger.error e.message
render json: {
flash: t('my_modules.repository.flash.update_error')
}, status: :bad_request
end
def update
service = RepositoryRows::MyModuleAssignUnassignService.call(my_module: @my_module,
repository: @repository,

View file

@ -1007,6 +1007,8 @@ en:
assigned_items:
title: "Assigned items"
assign_from: "Assign from"
direct_assign:
success: "Successfully assigned an item to the task."
protocol:
title: "Protocol"
options_dropdown:

View file

@ -432,7 +432,7 @@ Rails.application.routes.draw do
get :repositories_dropdown_list, controller: :my_module_repositories
get :repositories_list_html, controller: :my_module_repositories
resources :repositories, controller: :my_module_repositories, only: :update do
resources :repositories, controller: :my_module_repositories, only: %i(update create) do
member do
get :full_view_table
post :index_dt