Created new controllers and serializers for nested task related attributes

This commit is contained in:
Zanz2 2018-09-07 15:19:20 +02:00
parent 2d3f5f2377
commit bad07841da
14 changed files with 430 additions and 0 deletions

View file

@ -0,0 +1,59 @@
# frozen_string_literal: true
module Api
module V1
class ActivitiesController < BaseController
before_action :load_team
before_action :load_project
before_action :load_experiment
before_action :load_task
before_action :load_activity, only: :show
def index
activities = @my_module.activities
.page(params.dig(:page, :number))
.per(params.dig(:page, :size))
render jsonapi: activities,
each_serializer: ActivitySerializer
end
def show
render jsonapi: @activity, serializer: ActivitySerializer
end
private
def load_team
@team = Team.find(params.require(:team_id))
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
end
def load_project
@project = @team.projects.find(params.require(:project_id))
render jsonapi: {}, status: :forbidden unless can_read_project?(
@project
)
end
def load_experiment
@experiment = @project.experiments.find(params.require(:experiment_id))
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
@experiment
)
end
def load_task
@my_module = @experiment.my_modules.find(params.require(:task_id))
render jsonapi: {}, status: :not_found if @my_module.nil?
end
def load_activity
@activity = @my_module.activities.find(
params.require(:id)
)
render jsonapi: {}, status: :not_found if @activity.nil?
end
end
end
end

View file

@ -0,0 +1,59 @@
# frozen_string_literal: true
module Api
module V1
class MyModuleRepositoryRowsController < BaseController
before_action :load_team
before_action :load_project
before_action :load_experiment
before_action :load_task
before_action :load_task_repository_row, only: :show
def index
repo_rows = @my_module.my_module_repository_rows
.page(params.dig(:page, :number))
.per(params.dig(:page, :size))
render jsonapi: repo_rows,
each_serializer: MyModuleRepositoryRowSerializer
end
def show
render jsonapi: @repo_row, serializer: MyModuleRepositoryRowSerializer
end
private
def load_team
@team = Team.find(params.require(:team_id))
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
end
def load_project
@project = @team.projects.find(params.require(:project_id))
render jsonapi: {}, status: :forbidden unless can_read_project?(
@project
)
end
def load_experiment
@experiment = @project.experiments.find(params.require(:experiment_id))
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
@experiment
)
end
def load_task
@my_module = @experiment.my_modules.find(params.require(:task_id))
render jsonapi: {}, status: :not_found if @my_module.nil?
end
def load_task_repository_row
@repo_row = @my_module.my_module_repository_rows.find(
params.require(:id)
)
render jsonapi: {}, status: :not_found if @repo_row.nil?
end
end
end
end

View file

@ -0,0 +1,59 @@
# frozen_string_literal: true
module Api
module V1
class MyModuleTagsController < BaseController
before_action :load_team
before_action :load_project
before_action :load_experiment
before_action :load_task
before_action :load_task_repository_row, only: :show
def index
task_tags = @my_module.my_module_tags
.page(params.dig(:page, :number))
.per(params.dig(:page, :size))
render jsonapi: task_tags,
each_serializer: MyModuleTagSerializer
end
def show
render jsonapi: @task_tag, serializer: MyModuleTagSerializer
end
private
def load_team
@team = Team.find(params.require(:team_id))
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
end
def load_project
@project = @team.projects.find(params.require(:project_id))
render jsonapi: {}, status: :forbidden unless can_read_project?(
@project
)
end
def load_experiment
@experiment = @project.experiments.find(params.require(:experiment_id))
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
@experiment
)
end
def load_task
@my_module = @experiment.my_modules.find(params.require(:task_id))
render jsonapi: {}, status: :not_found if @my_module.nil?
end
def load_task_repository_row
@task_tag = @my_module.my_module_tags.find(
params.require(:id)
)
render jsonapi: {}, status: :not_found if @task_tag.nil?
end
end
end
end

View file

@ -0,0 +1,59 @@
# frozen_string_literal: true
module Api
module V1
class ProtocolsController < BaseController
before_action :load_team
before_action :load_project
before_action :load_experiment
before_action :load_task
before_action :load_protocol, only: :show
def index
protocols = @my_module.protocols
.page(params.dig(:page, :number))
.per(params.dig(:page, :size))
render jsonapi: protocols,
each_serializer: ProtocolSerializer
end
def show
render jsonapi: @protocol, serializer: ProtocolSerializer
end
private
def load_team
@team = Team.find(params.require(:team_id))
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
end
def load_project
@project = @team.projects.find(params.require(:project_id))
render jsonapi: {}, status: :forbidden unless can_read_project?(
@project
)
end
def load_experiment
@experiment = @project.experiments.find(params.require(:experiment_id))
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
@experiment
)
end
def load_task
@my_module = @experiment.my_modules.find(params.require(:task_id))
render jsonapi: {}, status: :not_found if @my_module.nil?
end
def load_protocol
@protocol = @my_module.protocols.find(
params.require(:id)
)
render jsonapi: {}, status: :not_found if @protocol.nil?
end
end
end
end

View file

@ -0,0 +1,59 @@
# frozen_string_literal: true
module Api
module V1
class ResultsController < BaseController
before_action :load_team
before_action :load_project
before_action :load_experiment
before_action :load_task
before_action :load_result, only: :show
def index
results = @my_module.results
.page(params.dig(:page, :number))
.per(params.dig(:page, :size))
render jsonapi: results,
each_serializer: ResultSerializer
end
def show
render jsonapi: @result, serializer: ResultSerializer
end
private
def load_team
@team = Team.find(params.require(:team_id))
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
end
def load_project
@project = @team.projects.find(params.require(:project_id))
render jsonapi: {}, status: :forbidden unless can_read_project?(
@project
)
end
def load_experiment
@experiment = @project.experiments.find(params.require(:experiment_id))
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
@experiment
)
end
def load_task
@my_module = @experiment.my_modules.find(params.require(:task_id))
render jsonapi: {}, status: :not_found if @my_module.nil?
end
def load_result
@result = @my_module.results.find(
params.require(:id)
)
render jsonapi: {}, status: :not_found if @result.nil?
end
end
end
end

View file

@ -0,0 +1,59 @@
# frozen_string_literal: true
module Api
module V1
class UserMyModulesController < BaseController
before_action :load_team
before_action :load_project
before_action :load_experiment
before_action :load_task
before_action :load_user_task, only: :show
def index
user_tasks = @my_module.user_my_modules
.page(params.dig(:page, :number))
.per(params.dig(:page, :size))
render jsonapi: user_tasks,
each_serializer: UserMyModuleSerializer
end
def show
render jsonapi: @user_task, serializer: UserMyModuleSerializer
end
private
def load_team
@team = Team.find(params.require(:team_id))
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
end
def load_project
@project = @team.projects.find(params.require(:project_id))
render jsonapi: {}, status: :forbidden unless can_read_project?(
@project
)
end
def load_experiment
@experiment = @project.experiments.find(params.require(:experiment_id))
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
@experiment
)
end
def load_task
@my_module = @experiment.my_modules.find(params.require(:task_id))
render jsonapi: {}, status: :not_found if @my_module.nil?
end
def load_user_task
@user_task = @my_module.user_my_modules.find(
params.require(:id)
)
render jsonapi: {}, status: :not_found if @user_task.nil?
end
end
end
end

View file

@ -0,0 +1,12 @@
# frozen_string_literal: true
module Api
module V1
class ActivitySerializer < ActiveModel::Serializer
type :activities
attributes :id, :my_module_id, :user_id, :type_of, :message, :created_at,
:updated_at, :project_id, :experiment_id
belongs_to :my_module, serializer: MyModuleSerializer
end
end
end

View file

@ -0,0 +1,12 @@
# frozen_string_literal: true
module Api
module V1
class MyModuleRepositoryRowSerializer < ActiveModel::Serializer
type :task_inventory_rows
attributes :id, :repository_row_id, :my_module_id, :assigned_by_id,
:created_at, :updated_at
belongs_to :my_module, serializer: MyModuleSerializer
end
end
end

View file

@ -0,0 +1,11 @@
# frozen_string_literal: true
module Api
module V1
class MyModuleTagSerializer < ActiveModel::Serializer
type :task_tags
attributes :id, :my_module_id, :tag_id, :created_by_id
belongs_to :my_module, serializer: MyModuleSerializer
end
end
end

View file

@ -0,0 +1,15 @@
# frozen_string_literal: true
module Api
module V1
class ProtocolSerializer < ActiveModel::Serializer
type :protocols
attributes :id, :name, :authors, :description, :added_by_id,
:my_module_id, :team_id, :protocol_type, :parent_id,
:parent_updated_at, :archived_by_id, :archived_on,
:restored_by_id, :restored_on, :created_at, :updated_at,
:published_on, :nr_of_linked_children
belongs_to :my_module, serializer: MyModuleSerializer
end
end
end

View file

@ -0,0 +1,14 @@
# frozen_string_literal: true
module Api
module V1
class ResultSerializer < ActiveModel::Serializer
type :results
attributes :id, :name, :my_module_id, :user_id, :created_at, :updated_at,
:archived, :archived_on, :last_modified_by_id, :archived_by_id,
:restored_by_id, :restored_on
belongs_to :my_module, serializer: MyModuleSerializer
end
end
end

View file

@ -0,0 +1,12 @@
# frozen_string_literal: true
module Api
module V1
class UserMyModuleSerializer < ActiveModel::Serializer
type :user_tasks
attributes :id, :user_id, :my_module_id, :created_at,
:updated_at, :assigned_by_id
belongs_to :my_module, serializer: MyModuleSerializer
end
end
end