spClone_Survey
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PKCloneID | int | IN | |
@PKCloneFromID | int | IN | |
@CurrentUsersID | int | IN |
Definition
Copy
CREATE procedure [dbo].[spClone_Survey]
(
@PKCloneID int,
@PKCloneFromID int,
@CurrentUsersID int
)
as
begin
set nocount on
begin tran T1
declare @sql_error int
declare @newGuid uniqueidentifier
insert into SiteSurveys(ID, ClientSitesID, Title, TitleVisible, SubTitle, SubTitleVisible,
LastActivityDate, SubmitButtonText, NextButtonText, PrevButtonText, PrevButtonVisible,
ExitButtonText, ExitButtonVisible, AllowMultipleSubmit, OnSubmitMsg, AllowViewResults, State, ClosedMsg)
select @PKCloneID, ClientSitesID, Title, TitleVisible, SubTitle, SubTitleVisible,
NULL, SubmitButtonText, NextButtonText, PrevButtonText, PrevButtonVisible,
ExitButtonText, ExitButtonVisible, AllowMultipleSubmit, OnSubmitMsg, AllowViewResults, State, ClosedMsg
from SiteSurveys
where ID = @PKCloneFromID
select @sql_error = @@error
if (@sql_error = 0)
begin
declare @questions table (ID int,
OriginalId int,
SiteSurveysId int,
SiteSurveyQuestionTypesId int,
Sequence int,
Page int,
LinkText nvarchar(256),
Question nvarchar(1540),
SubTitle nvarchar(1540),
RandomizeAnswers bit,
Mandatory bit,
MaxAnswerLen int,
ConstantSumValue int,
SkipAutoNbr bit)
-- Survey Questions
insert into @questions(OriginalId, SiteSurveysId, SiteSurveyQuestionTypesId, Sequence, Page, LinkText,
Question, SubTitle, RandomizeAnswers, Mandatory, MaxAnswerLen, ConstantSumValue, SkipAutoNbr)
select ID, @PKCloneID, SiteSurveyQuestionTypesId, Sequence, Page, LinkText,
Question, SubTitle, RandomizeAnswers, Mandatory, MaxAnswerLen, ConstantSumValue, SkipAutoNbr
from SiteSurveyQuestions
where SiteSurveysId = @PKCloneFromID
insert into SiteSurveyQuestions(SiteSurveysId, SiteSurveyQuestionTypesId, Sequence, Page, LinkText,
Question, SubTitle, RandomizeAnswers, Mandatory, MaxAnswerLen, ConstantSumValue, SkipAutoNbr)
select SiteSurveysId, SiteSurveyQuestionTypesId, Sequence, Page, LinkText,
Question, SubTitle, RandomizeAnswers, Mandatory, MaxAnswerLen, ConstantSumValue, SkipAutoNbr
from @questions
if @@error = 0
begin
update @questions
set ID = a.id
from SiteSurveyQuestions a
inner join @questions b
on b.Sequence = a.Sequence
and b.SiteSurveysId = a.SiteSurveysId
and b.SiteSurveyQuestionTypesId = a.SiteSurveyQuestionTypesId
and b.Page = a.Page
declare @answers table (SiteSurveyQuestionsId int,
Sequence int,
Answer nvarchar(1540),
NextQuestionId int)
declare @columns table (Id int,
OriginalId int,
SiteSurveyQuestionsId int,
Sequence int,
ColumnName nvarchar(256))
-- survey Answers
insert into @answers(SiteSurveyQuestionsId, Sequence, Answer, NextQuestionId)
select a.SiteSurveyQuestionsId, a.Sequence, a.Answer, a.NextQuestionId
from SiteSurveyAnswers a
inner join SiteSurveyQuestions b on a.SiteSurveyQuestionsId = b.ID
where b.SiteSurveysId = @PKCloneFromID
update @answers set SiteSurveyQuestionsId = a.ID
from @questions a
where a.OriginalId = SiteSurveyQuestionsId
update @answers set NextQuestionId = null
where NextQuestionId < 1
-- survey Answer Columns
insert into @columns(OriginalId, SiteSurveyQuestionsId, Sequence, ColumnName)
select a.ID, a.SiteSurveyQuestionsId, a.Sequence, a.ColumnName
from SiteSurveyAnswerColumns a
inner join SiteSurveyQuestions b on a.SiteSurveyQuestionsId = b.ID
where b.SiteSurveysId = @PKCloneFromID
update @columns set SiteSurveyQuestionsId = a.ID
from @questions a
where a.OriginalId = SiteSurveyQuestionsId
insert into SiteSurveyAnswers(SiteSurveyQuestionsId, Sequence, Answer, NextQuestionId)
select SiteSurveyQuestionsId, Sequence, Answer, NextQuestionId
from @answers
if @@error = 0
begin
insert into SiteSurveyAnswerColumns(SiteSurveyQuestionsId, Sequence, ColumnName)
select SiteSurveyQuestionsId, Sequence, ColumnName
from @columns
if @@error = 0
begin
update @columns
set ID = a.ID
from SiteSurveyAnswerColumns a
inner join @columns b
on a.SiteSurveyQuestionsId = b.SiteSurveyQuestionsId
and a.Sequence = b.Sequence
declare @columnData table (SiteSurveyAnswerColumnsId int,
Sequence int,
Data nvarchar(256))
insert into @columnData(SiteSurveyAnswerColumnsId, Sequence, Data)
select a.SiteSurveyAnswerColumnsId, a.Sequence, a.Data
from SiteSurveyAnswerColumnData a
inner join SiteSurveyAnswerColumns b on a.SiteSurveyAnswerColumnsId = b.ID
inner join SiteSurveyQuestions c on b.SiteSurveyQuestionsId = c.Id
where c.SiteSurveysId = @PKCloneFromID
update @columnData set SiteSurveyAnswerColumnsId = a.ID
from @columns a
where a.OriginalId = SiteSurveyAnswerColumnsId
insert into SiteSurveyAnswerColumnData(SiteSurveyAnswerColumnsId, Sequence, Data)
select SiteSurveyAnswerColumnsId, Sequence, Data
from @columnData
if @@error = 0
begin
commit tran T1
set @newGuid = NEWID()
exec spAuditThis @CurrentUsersID, 1, @NewGuid, 1
end
else
rollback tran T1
end
else
rollback tran T1
end
else
rollback tran T1
end
else
rollback tran T1
end
else begin
rollback tran T1
end
end