scinote-web/app/controllers/sample_groups_controller.rb

137 lines
3.4 KiB
Ruby
Raw Normal View History

2016-02-12 23:52:43 +08:00
class SampleGroupsController < ApplicationController
2016-12-02 16:33:09 +08:00
before_action :load_vars_nested
before_action :check_create_permissions
before_action :set_sample_group, except: [:create, :index]
2016-02-12 23:52:43 +08:00
def create
@sample_group = SampleGroup.new(sample_group_params)
@sample_group.organization = @organization
@sample_group.created_by = current_user
@sample_group.last_modified_by = current_user
respond_to do |format|
if @sample_group.save
2016-12-02 16:33:09 +08:00
format.json do
2016-02-12 23:52:43 +08:00
render json: {
2016-12-02 16:33:09 +08:00
html: render_to_string(
partial: 'sample_group.html.erb',
locals: { sample_group: @sample_group,
organization: @organization }
)
2016-02-12 23:52:43 +08:00
},
status: :ok
2016-12-02 16:33:09 +08:00
end
2016-02-12 23:52:43 +08:00
else
2016-12-02 16:33:09 +08:00
format.json do
2016-02-12 23:52:43 +08:00
render json: @sample_group.errors,
status: :unprocessable_entity
2016-12-02 16:33:09 +08:00
end
end
end
end
def index
render_404 unless current_organization
@sample_groups = current_organization.sample_groups
end
def update
@sample_group.update_attributes(sample_group_params)
respond_to do |format|
format.json do
if @sample_group.save
render json: {
html: render_to_string(
partial: 'sample_group.html.erb',
locals: { sample_group: @sample_group,
organization: @organization }
)
}
else
render json: @sample_group.errors,
status: :unprocessable_entity
end
end
end
end
def edit
respond_to do |format|
format.json do
render json: {
html:
render_to_string(
partial: 'edit.html.erb',
locals: { sample_group: @sample_group,
organization: @organization }
),
id: @sample_group.id
2016-02-12 23:52:43 +08:00
}
end
end
end
2016-12-02 16:33:09 +08:00
def sample_group_element
respond_to do |format|
format.json do
render json: {
html: render_to_string(
partial: 'sample_group.html.erb',
locals: { sample_group: @sample_group,
organization: @organization }
)
}
end
end
end
def destroy_confirmation
respond_to do |format|
format.json do
render json: {
html: render_to_string(
partial: 'delete_sample_group_modal.html.erb',
locals: { sample_group: @sample_group,
organization: @organization }
)
}
end
end
end
def destroy
flash[:success] = t 'sample_groups.index.destroy_flash',
name: @sample_group.name
Sample.where(sample_group: @sample_group).find_each do |sample|
sample.update(sample_group_id: nil)
end
@sample_group.destroy
redirect_to :back
end
2016-02-12 23:52:43 +08:00
private
2016-12-02 16:33:09 +08:00
def set_sample_group
@sample_group = SampleGroup.find_by_id(params[:id])
end
2016-02-12 23:52:43 +08:00
def load_vars_nested
@organization = Organization.find_by_id(params[:organization_id])
unless @organization
render_404
end
end
def check_create_permissions
unless can_create_sample_type_in_organization(@organization)
render_403
end
end
def sample_group_params
params.require(:sample_group).permit(:name, :color)
end
end