Skip to content
Snippets Groups Projects

Add course exclusivity rules

Files

@@ -34,8 +34,13 @@ module Admin
@course_edition = CourseEdition.create(
course_edition_params.merge(course: @course)
)
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)
else
flash[:danger] = 'Failed to create course edition'
@@ -49,8 +54,8 @@ module Admin
end
def update
if @course_edition.update(course_edition_params)
flash[:success] = 'Succesfully updated course edition'
if @course_edition.update(course_edition_params) && update_exclusivity_groups.empty?
flash[:success] = 'Successfully updated course edition'
redirect_to admin_course_edition_url(@course, @course_edition)
else
flash[:danger] = 'Failed to update course edition'
@@ -128,9 +133,36 @@ module Admin
)
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
@course_edition.configuration ||= CourseConfiguration.new
@configuration = @course_edition.configuration
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
Loading