Index: openacs-4/contrib/packages/simulation/tcl/template-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/tcl/Attic/template-procs.tcl,v diff -u -r1.16 -r1.17 --- openacs-4/contrib/packages/simulation/tcl/template-procs.tcl 16 Dec 2003 16:03:29 -0000 1.16 +++ openacs-4/contrib/packages/simulation/tcl/template-procs.tcl 16 Dec 2003 16:30:47 -0000 1.17 @@ -193,7 +193,20 @@ } } -ad_proc -public simulation::template::map_group_to_role { + +ad_proc -public simulation::template::delete_role_group_mappings { + {-workflow_id} +} { + db_dml clear_old_group_mappings { + delete from sim_role_group_map + where role_id in (select role_id + from workflow_roles + where workflow_id = :workflow_id + ) + } +} + +ad_proc -public simulation::template::new_role_group_mapping { {-role_id:required} {-group_id:required} {-group_size:required} @@ -204,6 +217,28 @@ } } +ad_proc -public simulation::template::get_role_group_mappings { + {-workflow_id} + {-array:required} +} { + upvar $array roles + + array set roles {} + + db_foreach select_group_mappings { + select role_id, + party_id, + group_size + from sim_role_group_map + where role_id in (select role_id + from workflow_roles + where workflow_id = :workflow_id + ) + } { + set roles($role_id) [list $party_id $group_size] + } +} + ad_proc -public simulation::template::clone { {-workflow_id:required} {-package_key {}} @@ -470,9 +505,6 @@ @author Peter Marklund } { - array set actors_array $actors - array set groupings_array $groupings - # Assuming here that mapped parties with type enrolled are users set user_list [db_list select_users { select party_id @@ -481,15 +513,16 @@ }] set total_n_users [llength $user_list] + simulation::template::get_role_mappings -workflow_id $workflow_id -array roles + set n_users_per_case 0 - foreach role_id [array names groupings_array] { - set n_users_per_case [expr $n_users_per_case + $groupings_array($role_id)] + foreach role_id [array names roles] { + set n_users_per_case [expr $n_users_per_case + [lindex $roles($role_id) 1]] } set mod_n_users [expr $total_n_users % $n_users_per_case] set n_cases [expr ($total_n_users - $mod_n_users) / $n_users_per_case] - if { $mod_n_users == "0" } { # No rest in dividing, the cases add up nicely @@ -510,21 +543,21 @@ # Assign a group of users to each role in the case set party_array_list [list] - foreach role_id [array names actors] { + foreach role_id [array names roles] { set role_short_name [workflow::role::get_element -role_id $role_id -element short_name] set users_end_index [expr $users_start_index + $groupings_array($role_id) - 1] set parties_list [lrange $user_list $users_start_index $users_end_index] - lappend parties_array_list $role_short_name $users_list + lappend parties_array_list $role_short_name $parties_list set users_start_index [expr $users_end_index + 1] } workflow::case::role::assign \ -case_id $case_id \ - -array $party_array_list \ + -array $parties_array_list \ -replace } } Index: openacs-4/contrib/packages/simulation/www/siminst/simulation-casting-3.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/simulation/www/siminst/Attic/simulation-casting-3.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/contrib/packages/simulation/www/siminst/simulation-casting-3.tcl 16 Dec 2003 16:00:34 -0000 1.1 +++ openacs-4/contrib/packages/simulation/www/siminst/simulation-casting-3.tcl 16 Dec 2003 16:30:47 -0000 1.2 @@ -30,16 +30,12 @@ -export { workflow_id } \ -form $form \ -on_request { - db_foreach select_group_mappings { - select role_id, - party_id, - group_size - from sim_role_group_map - where role_id in (select role_id - from workflow_roles - where workflow_id = :workflow_id - ) - } { + simulation::template::get_role_group_mappings -workflow_id $workflow_id -array roles + + foreach role_id [array names roles] { + set party_id [lindex $roles($role_id) 0] + set group_size [lindex $roles($role_id) 1] + element set_properties actors actor_${role_id} -value $party_id element set_properties actors group_${role_id} -value $group_size } @@ -48,16 +44,10 @@ # TODO: move this code into the simulation::template::edit proc? Low priority. # Clear out old mappings - db_dml clear_old_group_mappings { - delete from sim_role_group_map - where role_id in (select role_id - from workflow_roles - where workflow_id = :workflow_id - ) - } + simulation::template::delete_role_group_mappings -workflow_id $workflow_id foreach role_id [workflow::get_roles -workflow_id $workflow_id] { - simulation::template::map_group_to_role \ + simulation::template::new_role_group_mapping \ -role_id $role_id \ -group_id [set actor_$role_id] \ -group_size [set group_$role_id] Index: openacs-4/packages/simulation/tcl/template-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/simulation/tcl/template-procs.tcl,v diff -u -r1.16 -r1.17 --- openacs-4/packages/simulation/tcl/template-procs.tcl 16 Dec 2003 16:03:29 -0000 1.16 +++ openacs-4/packages/simulation/tcl/template-procs.tcl 16 Dec 2003 16:30:47 -0000 1.17 @@ -193,7 +193,20 @@ } } -ad_proc -public simulation::template::map_group_to_role { + +ad_proc -public simulation::template::delete_role_group_mappings { + {-workflow_id} +} { + db_dml clear_old_group_mappings { + delete from sim_role_group_map + where role_id in (select role_id + from workflow_roles + where workflow_id = :workflow_id + ) + } +} + +ad_proc -public simulation::template::new_role_group_mapping { {-role_id:required} {-group_id:required} {-group_size:required} @@ -204,6 +217,28 @@ } } +ad_proc -public simulation::template::get_role_group_mappings { + {-workflow_id} + {-array:required} +} { + upvar $array roles + + array set roles {} + + db_foreach select_group_mappings { + select role_id, + party_id, + group_size + from sim_role_group_map + where role_id in (select role_id + from workflow_roles + where workflow_id = :workflow_id + ) + } { + set roles($role_id) [list $party_id $group_size] + } +} + ad_proc -public simulation::template::clone { {-workflow_id:required} {-package_key {}} @@ -470,9 +505,6 @@ @author Peter Marklund } { - array set actors_array $actors - array set groupings_array $groupings - # Assuming here that mapped parties with type enrolled are users set user_list [db_list select_users { select party_id @@ -481,15 +513,16 @@ }] set total_n_users [llength $user_list] + simulation::template::get_role_mappings -workflow_id $workflow_id -array roles + set n_users_per_case 0 - foreach role_id [array names groupings_array] { - set n_users_per_case [expr $n_users_per_case + $groupings_array($role_id)] + foreach role_id [array names roles] { + set n_users_per_case [expr $n_users_per_case + [lindex $roles($role_id) 1]] } set mod_n_users [expr $total_n_users % $n_users_per_case] set n_cases [expr ($total_n_users - $mod_n_users) / $n_users_per_case] - if { $mod_n_users == "0" } { # No rest in dividing, the cases add up nicely @@ -510,21 +543,21 @@ # Assign a group of users to each role in the case set party_array_list [list] - foreach role_id [array names actors] { + foreach role_id [array names roles] { set role_short_name [workflow::role::get_element -role_id $role_id -element short_name] set users_end_index [expr $users_start_index + $groupings_array($role_id) - 1] set parties_list [lrange $user_list $users_start_index $users_end_index] - lappend parties_array_list $role_short_name $users_list + lappend parties_array_list $role_short_name $parties_list set users_start_index [expr $users_end_index + 1] } workflow::case::role::assign \ -case_id $case_id \ - -array $party_array_list \ + -array $parties_array_list \ -replace } } Index: openacs-4/packages/simulation/www/siminst/simulation-casting-3.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/simulation/www/siminst/simulation-casting-3.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/simulation/www/siminst/simulation-casting-3.tcl 16 Dec 2003 16:00:34 -0000 1.1 +++ openacs-4/packages/simulation/www/siminst/simulation-casting-3.tcl 16 Dec 2003 16:30:47 -0000 1.2 @@ -30,16 +30,12 @@ -export { workflow_id } \ -form $form \ -on_request { - db_foreach select_group_mappings { - select role_id, - party_id, - group_size - from sim_role_group_map - where role_id in (select role_id - from workflow_roles - where workflow_id = :workflow_id - ) - } { + simulation::template::get_role_group_mappings -workflow_id $workflow_id -array roles + + foreach role_id [array names roles] { + set party_id [lindex $roles($role_id) 0] + set group_size [lindex $roles($role_id) 1] + element set_properties actors actor_${role_id} -value $party_id element set_properties actors group_${role_id} -value $group_size } @@ -48,16 +44,10 @@ # TODO: move this code into the simulation::template::edit proc? Low priority. # Clear out old mappings - db_dml clear_old_group_mappings { - delete from sim_role_group_map - where role_id in (select role_id - from workflow_roles - where workflow_id = :workflow_id - ) - } + simulation::template::delete_role_group_mappings -workflow_id $workflow_id foreach role_id [workflow::get_roles -workflow_id $workflow_id] { - simulation::template::map_group_to_role \ + simulation::template::new_role_group_mapping \ -role_id $role_id \ -group_id [set actor_$role_id] \ -group_size [set group_$role_id]