Skip to content
Snippets Groups Projects

Add course exclusivity rules

Files

@@ -34,8 +34,13 @@ module Admin
@@ -34,8 +34,13 @@ module Admin
@course_edition = CourseEdition.create(
@course_edition = CourseEdition.create(
course_edition_params.merge(course: @course)
course_edition_params.merge(course: @course)
)
)
 
if @course_edition.persisted?
if @course_edition.persisted?
flash[:success] = 'Succesfully created course edition'
if update_exclusivity_groups.empty?
 
flash[:success] = 'Successfully created course edition'
 
else
 
flash[:danger] = 'Course edition was created, but exclusivity groups could not be set'
 
end
redirect_to admin_course_edition_url(@course, @course_edition)
redirect_to admin_course_edition_url(@course, @course_edition)
else
else
flash[:danger] = 'Failed to create course edition'
flash[:danger] = 'Failed to create course edition'
@@ -49,8 +54,8 @@ module Admin
@@ -49,8 +54,8 @@ module Admin
end
end
def update
def update
if @course_edition.update(course_edition_params)
if @course_edition.update(course_edition_params) && update_exclusivity_groups.empty?
flash[:success] = 'Succesfully updated course edition'
flash[:success] = 'Successfully updated course edition'
redirect_to admin_course_edition_url(@course, @course_edition)
redirect_to admin_course_edition_url(@course, @course_edition)
else
else
flash[:danger] = 'Failed to update course edition'
flash[:danger] = 'Failed to update course edition'
@@ -128,9 +133,36 @@ module Admin
@@ -128,9 +133,36 @@ module Admin
)
)
end
end
 
def course_edition_params_with_exclusivity_groups
 
params.require(:course_edition).permit(
 
course_edition_params_keys + [exclusivity_groups: %i[id name _destroy]]
 
)
 
end
 
def load_configuration
def load_configuration
@course_edition.configuration ||= CourseConfiguration.new
@course_edition.configuration ||= CourseConfiguration.new
@configuration = @course_edition.configuration
@configuration = @course_edition.configuration
end
end
 
 
def update_exclusivity_groups
 
failed = []
 
groups_params = course_edition_params_with_exclusivity_groups[:exclusivity_groups] || {}
 
groups_params.each do |id, group_params|
 
current = CourseEditionExclusivityGroup.where(course_edition: @course_edition).find_by(exclusivity_group_id: id)
 
if group_params[:_destroy].to_s == '1'
 
# Ignore if this currently does not exist
 
current&.destroy
 
elsif group_params[:id].nil? # New exclusivity group
 
current&.destroy
 
exclusivity_group = ExclusivityGroup.find_by(name: group_params[:name]) || ExclusivityGroup.create(name: group_params[:name])
 
@course_edition.exclusivity_groups << exclusivity_group
 
elsif group_params[:id] != id # Modified exclusivity group
 
failed << id if current.nil? # Record failure if not found
 
current&.destroy
 
@course_edition.exclusivity_groups.create(name: group_params[:name])
 
end
 
end
 
failed
 
end
end
end
end
end
Loading