Fixed survey migration

This commit is contained in:
Kaleb Murphy 2008-11-13 18:18:25 +00:00
parent 3f393980c4
commit e75357160a

View file

@ -20,7 +20,9 @@ use Getopt::Long;
use WebGUI::Session; use WebGUI::Session;
use WebGUI::Storage; use WebGUI::Storage;
use WebGUI::Asset; use WebGUI::Asset;
use WebGUI::Asset::Wobject::Survey;
use WebGUI::Asset::Wobject::Survey::SurveyJSON;
use WebGUI::Asset::Wobject::Survey::ResponseJSON;
my $toVersion = '7.6.4'; my $toVersion = '7.6.4';
my $quiet; # this line required my $quiet; # this line required
@ -98,7 +100,6 @@ sub migrateSurvey{
); );
my $sjson = WebGUI::Asset::Wobject::Survey::SurveyJSON->new(); my $sjson = WebGUI::Asset::Wobject::Survey::SurveyJSON->new();
#move over sections #move over sections
my $sql = "select * from Survey_section_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber"; my $sql = "select * from Survey_section_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
my $sections = $session->db->buildArrayRefOfHashRefs($sql); my $sections = $session->db->buildArrayRefOfHashRefs($sql);
@ -116,30 +117,37 @@ sub migrateSurvey{
} }
#move over questions #move over questions
#my %qMap = ('radioList','Multiple Choice','text','Text','HTMLArea','Text','textArea','Text');
$sql = "select * from Survey_question_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber"; $sql = "select * from Survey_question_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
my $questions = $session->db->buildArrayRefOfHashRefs($sql); my $questions = $session->db->buildArrayRefOfHashRefs($sql);
my $qId = 0; my $qId = 0;
my %qMap; my %qMap = ('radioList','Multiple Choice','text','Text','HTMLArea','Text','textArea','Text');
my %qS; my %qS;
my $lastSection = $$questions[0]->{Survey_sectionid};
for my $question(@$questions){ for my $question(@$questions){
if($lastSection ne $$question{Survey_sectionId}){
$qId = 0;
}
$qMap{$$question{Survey_questionId}} = $qId; $qMap{$$question{Survey_questionId}} = $qId;
$qS{$$question{Survey_questionId}} = $$question{Survey_sectionId}; $qS{$$question{Survey_questionId}} = $$question{Survey_sectionId};
$sjson->update([$sMap{$$question{Survey_sectionId}},$qId++], $sjson->update([$sMap{$$question{Survey_sectionId}},$qId++],
{ {
'text',$$question{question},'variable',$$question{Survey_questionId},'allowComment',$$question{allowComment}, 'text',$$question{question},'variable',$$question{Survey_questionId},'allowComment',$$question{allowComment},
'randomizeAnswers',$$question{randomizeAnswers},'questionType',$qMap{$$question{answerField}} 'randomizeAnswers',$$question{randomizeAnswers},'questionType',$qMap{$$question{answerFieldType}}
} }
); );
$lastSection = $$question{Survey_sectionId};
} }
#move over answers #move over answers
$sql = "select * from Survey_answer_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber"; $sql = "select * from Survey_answer_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
my $answers = $session->db->buildArrayRefOfHashRefs($sql); my $answers = $session->db->buildArrayRefOfHashRefs($sql);
my $aId = 0; my $aId = 0;
my %aMap; my %aMap;
my $lastQuestion = $$answers[0]->{Survey_questionId};
for my $answer(@$answers){ for my $answer(@$answers){
if($lastQuestion ne $$answer{Survey_questionId}){
$aId = 0;
}
$aMap{$$survey{Survey_answerId}} = $aId; $aMap{$$survey{Survey_answerId}} = $aId;
$sjson->update([$sMap{$qS{$$answer{Survey_questionId}}},$qMap{$$answer{Survey_questionId}},$aId++], $sjson->update([$sMap{$qS{$$answer{Survey_questionId}}},$qMap{$$answer{Survey_questionId}},$aId++],
{ {
@ -147,11 +155,12 @@ sub migrateSurvey{
'isCorrect',$$answer{isCorrect},'NEED TO MAP QUESTION TYPES' 'isCorrect',$$answer{isCorrect},'NEED TO MAP QUESTION TYPES'
} }
); );
$lastQuestion = $$answer{Survey_questionId};
} }
my $date = $session->db->quickScalar('select max(revisionDate) from Survey where assetId = ?',[$$survey{assetId}]); my $date = $session->db->quickScalar('select max(revisionDate) from Survey where assetId = ?',[$$survey{assetId}]);
$session->db->write('update Survey set surveyJSON = ? where assetId = ? and revisionDate = ?',[$sjson->freeze,$$survey{assetId},$date]); $session->db->write('update Survey set surveyJSON = ? where assetId = ? and revisionDate = ?',[$sjson->freeze,$$survey{assetId},$date]);
my $rjson = WebGUI::Asset::Wobject::Survey::ResponseJSON->new(undef,undef,$sjson); my $rjson = WebGUI::Asset::Wobject::Survey::ResponseJSON->new(undef,undef,$sjson);
$rjson->createSurveyOrder(); $rjson->createSurveyOrder();
#move over responses #move over responses