@@ -283,10 +283,6 @@ sub getGlobalSettings ($self, %args) {
283283 my @settings = map {
284284 { $_ -> get_inflated_columns };
285285 } @global_settings ;
286- for my $setting (@settings ) {
287- # The default_value is stored as a JSON and needs to be parsed.
288- $setting -> {default_value } = $setting -> {default_value }-> {value };
289- }
290286 return \@settings ;
291287}
292288
@@ -323,7 +319,6 @@ sub getGlobalSetting ($self, %args) {
323319 unless $global_setting ;
324320 return $global_setting if $args {as_result_set };
325321 my $setting_to_return = { $global_setting -> get_inflated_columns };
326- $setting_to_return -> {default_value } = $setting_to_return -> {default_value }-> {value };
327322 return $setting_to_return ;
328323}
329324
@@ -356,20 +351,11 @@ sub getCourseSettings ($self, %args) {
356351 my @settings_from_db = $course -> course_settings;
357352
358353 return \@settings_from_db if $args {as_result_set };
359- my @settings_to_return = ($args {merged })
360- ? map {
361- { $_ -> get_inflated_columns, $_ -> global_setting-> get_inflated_columns };
362- } @settings_from_db
363- : map {
364- { $_ -> get_inflated_columns };
365- } @settings_from_db ;
366-
367- for my $setting (@settings_to_return ) {
368- # value and default_value are decoded from JSON as a hash. Return to a value.
369- for my $key (qw/ default_value value/ ) {
370- $setting -> {$key } = $setting -> {$key }-> {value } if defined ($setting -> {$key });
371- }
372- }
354+ my @settings_to_return = map {
355+ $args {merged }
356+ ? { $_ -> get_inflated_columns, $_ -> global_setting-> get_inflated_columns }
357+ : { $_ -> get_inflated_columns };
358+ } @settings_from_db ;
373359 return \@settings_to_return ;
374360}
375361
@@ -400,25 +386,31 @@ A single course setting as either a hashref or a C<DBIx::Class::ResultSet::Cours
400386=cut
401387
402388sub getCourseSetting ($self , %args ) {
403-
404389 my $global_setting = $self -> getGlobalSetting(info => $args {info }, as_result_set => 1);
405390 DB::Exception::SettingNotFound-> throw(
406- message => " The setting with name: '" . $args {info }-> {setting_name } . " ' is not a defined info." )
391+ message => " The global setting with name: '" . $args {info }-> {setting_name } . " ' is not a defined info." )
407392 unless defined ($global_setting );
408393
409394 my $course = $self -> getCourse(info => getCourseInfo($args {info }), as_result_set => 1);
410395 my $setting = $course -> course_settings-> find({ setting_id => $global_setting -> setting_id });
411396
397+ DB::Exception::SettingNotFound-> throw(
398+ message => ' The course setting with '
399+ . (
400+ $args {info }-> {setting_name } ? " name: '$args {info}->{setting_name}'"
401+ : " setting_id of $args {info}->{setting_id} is not a found in the course "
402+ )
403+ . (
404+ $args {info }-> {course_name } ? (" with name '" . $args {info }-> {course_name } . " '" )
405+ : " with course_id of $args {info}->{course_id}"
406+ )
407+ ) unless defined ($setting );
408+
412409 return $setting if $args {as_result_set };
413410 my $setting_to_return =
414411 $args {merged }
415412 ? { $setting -> get_inflated_columns, $setting -> global_setting-> get_inflated_columns }
416413 : { $setting -> get_inflated_columns };
417-
418- # value and default_value are decoded from JSON as a hash. Return to a value.
419- for my $key (qw/ default_value value/ ) {
420- $setting_to_return -> {$key } = $setting_to_return -> {$key }-> {value } if defined ($setting_to_return -> {$key });
421- }
422414 return $setting_to_return ;
423415}
424416
@@ -451,44 +443,30 @@ A single course setting as either a hashref or a C<DBIx::Class::ResultSet::Cours
451443=cut
452444
453445sub updateCourseSetting ($self , %args ) {
454- my $course = $self -> getCourse(info => getCourseInfo($args {info }), as_result_set => 1);
455-
446+ my $course = $self -> getCourse(info => getCourseInfo($args {info }), as_result_set => 1);
456447 my $global_setting = $self -> getGlobalSetting(info => getSettingInfo($args {info }));
457448
458449 my $course_setting = $course -> course_settings-> find({
459450 setting_id => $global_setting -> {setting_id }
460451 });
461452
462- # Check that the setting is valid.
463-
464453 my $params = {
465454 course_id => $course -> course_id,
466455 setting_id => $global_setting -> {setting_id },
467- value => { value => $args {params }{value } }
456+ value => $args {params }{value }
468457 };
469458
470- # remove the following fields before checking for valid settings:
471- delete $global_setting -> {$_ } for (qw/ setting_id course_id/ );
459+ isValidSetting($global_setting , $params -> {value });
472460
473- isValidSetting($global_setting , $params -> {value }{value });
474-
475- # The course_id must be deleted to ensure it is written to the database correctly.
476- delete $params -> {course_id } if defined ($params -> {course_id });
477-
478- my $updated_course_setting =
461+ my $up_setting =
479462 defined ($course_setting ) ? $course_setting -> update($params ) : $course -> add_to_course_settings($params );
480463
481- return $updated_course_setting if $args {as_result_set };
464+ return $up_setting if $args {as_result_set };
482465 my $setting_to_return =
483466 ($args {merged })
484- ? { $updated_course_setting -> get_inflated_columns,
485- $updated_course_setting -> global_setting-> get_inflated_columns }
486- : { $updated_course_setting -> get_inflated_columns };
467+ ? { $up_setting -> get_inflated_columns, $up_setting -> global_setting-> get_inflated_columns }
468+ : { $up_setting -> get_inflated_columns };
487469
488- # value and default_value are decoded from JSON as a hash. Return to a value.
489- for my $key (qw/ default_value value/ ) {
490- $setting_to_return -> {$key } = $setting_to_return -> {$key }-> {value } if defined ($setting_to_return -> {$key });
491- }
492470 return $setting_to_return ;
493471}
494472
@@ -516,21 +494,8 @@ A single course setting as either a hashref or a C<DBIx::Class::ResultSet::Cours
516494=cut
517495
518496sub deleteCourseSetting ($self , %args ) {
519- my $setting = $self -> getCourseSetting(info => $args {info }, as_result_set => 1);
520- my $deleted_setting = $setting -> delete ;
521-
522- return $deleted_setting if $args {as_result_set };
523-
524- my $setting_to_return =
525- ($args {merged })
526- ? { $deleted_setting -> get_inflated_columns, $deleted_setting -> global_setting-> get_inflated_columns }
527- : { $deleted_setting -> get_inflated_columns };
528-
529- # value and default_value are decoded from JSON as a hash. Return to a value.
530- for my $key (qw/ default_value value/ ) {
531- $setting_to_return -> {$key } = $setting_to_return -> {$key }-> {value } if defined ($setting_to_return -> {$key });
532- }
533- return $setting_to_return ;
497+ $self -> getCourseSetting(info => $args {info }, as_result_set => 1)-> delete ;
498+ return ;
534499}
535500
5365011;
0 commit comments