
Tags can be added to exercises in the edit view. Tags can monitored under /tags. Added the concept of ProxyExercises which are a collection of Exercises. They can be found under /proxy_exercises Added Interventions as prework to show interventions later to the user. Added exercise/[:id]/working_time to return the working time of the user in this exercise and the average working time of all users in this exercise
81 lines
2.1 KiB
Ruby
81 lines
2.1 KiB
Ruby
class ProxyExercisesController < ApplicationController
|
|
include CommonBehavior
|
|
|
|
before_action :set_exercise, only: MEMBER_ACTIONS + [:clone, :reload]
|
|
|
|
def authorize!
|
|
authorize(@proxy_exercise || @proxy_exercises)
|
|
end
|
|
private :authorize!
|
|
|
|
def clone
|
|
proxy_exercise = @proxy_exercise.duplicate(token: nil, exercises: @proxy_exercise.exercises)
|
|
proxy_exercise.send(:generate_token)
|
|
if proxy_exercise.save
|
|
redirect_to(proxy_exercise, notice: t('shared.object_cloned', model: ProxyExercise.model_name.human))
|
|
else
|
|
flash[:danger] = t('shared.message_failure')
|
|
redirect_to(@proxy_exercise)
|
|
end
|
|
end
|
|
|
|
def create
|
|
myparams = proxy_exercise_params
|
|
myparams[:exercises] = Exercise.find(myparams[:exercise_ids].reject { |c| c.empty? })
|
|
@proxy_exercise = ProxyExercise.new(myparams)
|
|
authorize!
|
|
|
|
create_and_respond(object: @proxy_exercise)
|
|
end
|
|
|
|
def destroy
|
|
destroy_and_respond(object: @proxy_exercise)
|
|
end
|
|
|
|
def edit
|
|
@search = policy_scope(Exercise).search(params[:q])
|
|
@exercises = @search.result.order(:title)
|
|
authorize!
|
|
end
|
|
|
|
def proxy_exercise_params
|
|
params[:proxy_exercise].permit(:description, :title, :exercise_ids => [])
|
|
end
|
|
private :proxy_exercise_params
|
|
|
|
def index
|
|
@search = policy_scope(ProxyExercise).search(params[:q])
|
|
@proxy_exercises = @search.result.order(:title).paginate(page: params[:page])
|
|
authorize!
|
|
end
|
|
|
|
def new
|
|
@proxy_exercise = ProxyExercise.new
|
|
@search = policy_scope(Exercise).search(params[:q])
|
|
@exercises = @search.result.order(:title)
|
|
authorize!
|
|
end
|
|
|
|
def set_exercise
|
|
@proxy_exercise = ProxyExercise.find(params[:id])
|
|
authorize!
|
|
end
|
|
private :set_exercise
|
|
|
|
def show
|
|
@search = @proxy_exercise.exercises.search
|
|
@exercises = @proxy_exercise.exercises.search.result.order(:title) #@search.result.order(:title)
|
|
end
|
|
|
|
#we might want to think about auth here
|
|
def reload
|
|
end
|
|
|
|
def update
|
|
myparams = proxy_exercise_params
|
|
myparams[:exercises] = Exercise.find(myparams[:exercise_ids].reject { |c| c.blank? })
|
|
update_and_respond(object: @proxy_exercise, params: myparams)
|
|
end
|
|
|
|
end
|