Skip to content

Commit dda2aa4

Browse files
committed
[smarcet] - #13374
* bugfixing on merge procedure
1 parent 308cb74 commit dda2aa4

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

survey_builder/code/model/SurveyManager.php

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,7 @@ public function mergeSurveys(array $surveys_2_merge, $merge_result_survey_title
605605
[
606606
'IsTest' => 0,
607607
]
608-
)->where("TemplateID IN ({$query_ids})")->sort("CreatedByID", "ASC");
608+
)->where("TemplateID IN ({$query_ids})")->sort(["CreatedByID" => "ASC", "TemplateID" => "ASC"]);
609609

610610
$last_user_id = null;
611611
$user_surveys = [];
@@ -636,6 +636,12 @@ public function mergeSurveys(array $surveys_2_merge, $merge_result_survey_title
636636
private function processMerge($new_template, $current_user_id, &$user_surveys){
637637
try {
638638
//process
639+
$user_surveys_ids = [];
640+
foreach ($user_surveys as $survey)
641+
$user_surveys_ids[] = $survey->ID;
642+
643+
echo sprintf("found %s surveys id for member id %s ....", implode(", ", $user_surveys_ids), $current_user_id).PHP_EOL;
644+
639645
$last_user_survey = end($user_surveys);
640646
$new_survey_instance = $this->buildSurvey($new_template->ID, $current_user_id, $last_user_survey->Lang);
641647
$former_entity_surveys = [];
@@ -646,15 +652,19 @@ private function processMerge($new_template, $current_user_id, &$user_surveys){
646652
foreach ($former_survey->getSteps() as $step) {
647653
if (!($step instanceof ISurveyDynamicEntityStep)) continue;
648654
foreach ($step->getEntitySurveys() as $former_entity_survey) {
649-
if (isset($former_entity_surveys[$former_entity_survey->getFriendlyName()]))
655+
$deployment_name = $former_entity_survey->getFriendlyName();
656+
if (isset($former_entity_surveys[$deployment_name]) &&
657+
// if former deployment is recent than current one, skip it
658+
new DateTime($former_entity_surveys[$deployment_name]->LastEdited) > new DateTime($former_entity_survey->LastEdited))
650659
continue;
651-
echo sprintf("adding deployment %s for member id %s", $former_entity_survey->getFriendlyName(), $current_user_id) . PHP_EOL;
652-
$former_entity_surveys[$former_entity_survey->getFriendlyName()] = $former_entity_survey;
660+
echo sprintf("adding deployment id %s (%s) for member id %s", $former_entity_survey->ID, $deployment_name, $current_user_id) . PHP_EOL;
661+
$former_entity_surveys[$deployment_name] = $former_entity_survey;
653662
}
654663
}
655664
}
656665
// merge surveys
657-
echo sprintf("member id %s - former survey id %s - new survey id %s", $current_user_id, $last_user_survey->ID, $new_survey_instance->ID).PHP_EOL;
666+
echo sprintf("created new survey instance for member id %s - former survey id %s - new survey id %s", $current_user_id, $last_user_survey->ID, $new_survey_instance->ID).PHP_EOL;
667+
echo sprintf("translating answers values from former survey id %s to new survey id %s", $last_user_survey->ID, $new_survey_instance->ID).PHP_EOL;
658668
foreach ($new_survey_instance->getSteps() as $step) {
659669
if ($step instanceof ISurveyRegularStep) {
660670
$former_step = $last_user_survey->getStep($step->template()->title());
@@ -676,7 +686,8 @@ private function processMerge($new_template, $current_user_id, &$user_surveys){
676686
// create new deployment
677687
echo sprintf("adding deployment %s for member id %s", $key, $current_user_id) . PHP_EOL;
678688
$new_entity_survey = $this->buildEntitySurvey($step, $current_user_id, $new_survey_instance->Lang);
679-
echo sprintf("member id %s - former deployment id %s - new deployment id %s", $current_user_id, $former_entity_survey->ID, $new_entity_survey->ID).PHP_EOL;
689+
echo sprintf("created new deployment for member id %s - former deployment id %s - new deployment id %s", $current_user_id, $former_entity_survey->ID, $new_entity_survey->ID).PHP_EOL;
690+
echo sprintf("translating answers values from former deployment id %s to new deployment id %s", $former_entity_survey->ID, $new_entity_survey->ID).PHP_EOL;
680691
foreach ($new_entity_survey->getSteps() as $new_survey_instance_step) {
681692
$former_step = $former_entity_survey->getStep($new_survey_instance_step->template()->title());
682693
if (is_null($former_step)) continue;

0 commit comments

Comments
 (0)