Skip to content

Commit

Permalink
Merge pull request #3974 from cisagov/bug/fix-guids-on-import
Browse files Browse the repository at this point in the history
Preserve Assessment GUIDs on Import
  • Loading branch information
randywoods committed Jun 21, 2024
2 parents 1bc23b6 + 01214ba commit 072816c
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,12 @@ public AssessmentDetail CreateNewAssessment(int? currentUserId, string workflow,



public AssessmentDetail CreateNewAssessmentForImport(int? currentUserId, string accessKey)
public AssessmentDetail CreateNewAssessmentForImport(int? currentUserId, string accessKey, Guid assessmentGuid = new Guid())
{
DateTime nowUTC = DateTime.Now;
AssessmentDetail newAssessment = new AssessmentDetail
{
AssessmentGuid = assessmentGuid,
AssessmentName = "New Assessment",
AssessmentDate = nowUTC,
CreatorId = currentUserId,
Expand Down Expand Up @@ -410,6 +411,7 @@ public AssessmentDetail GetAssessmentDetail(int assessmentId, string token = "")
if (result != null)
{
assessment.Id = result.aa.Assessment_Id;
assessment.AssessmentGuid = result.aa.Assessment_GUID;
assessment.GalleryItemGuid = result.aa.GalleryItemGuid;
assessment.AssessmentName = result.ii.Assessment_Name;
assessment.AssessmentDate = result.aa.Assessment_Date;
Expand Down Expand Up @@ -642,6 +644,16 @@ public int SaveAssessmentDetail(int assessmentId, AssessmentDetail assessment)
if (dbAssessment == null)
{
dbAssessment = new ASSESSMENTS();

if (assessment.AssessmentGuid != Guid.Empty)
{
dbAssessment.Assessment_GUID = assessment.AssessmentGuid;
}
else
{
dbAssessment.Assessment_GUID = Guid.NewGuid();
}

_context.ASSESSMENTS.Add(dbAssessment);
_context.SaveChanges();
assessmentId = dbAssessment.Assessment_Id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,15 +95,20 @@ public int RunImportManualPortion(bool overwriteAssessment)
//update the answer id's

Dictionary<int, DOCUMENT_FILE> oldIdToNewDocument = new Dictionary<int, DOCUMENT_FILE>();
AssessmentDetail detail = null;
Guid assessmentGuid = _model.jASSESSMENTS.FirstOrDefault().Assessment_GUID;

if (overwriteAssessment)
{
detail = _assessmentBiz.GetAssessmentDetail(_model.jASSESSMENTS.FirstOrDefault().Assessment_GUID);
}
AssessmentDetail detail = _assessmentBiz.GetAssessmentDetail(assessmentGuid);

// If no assessment exists with given GUID, import using provided GUID
if (detail == null)
{
detail = _assessmentBiz.CreateNewAssessmentForImport(_currentUserId, _accessKey, assessmentGuid);
}
else if (!overwriteAssessment)
{
// At this point we know the assessment with provided GUID already exists.
// If we are not overwriting an assessment, create a new assessment for import with new GUID.
// Otherwise, the code will carry on using the existing assessment detail object to "overwrite" it.
detail = _assessmentBiz.CreateNewAssessmentForImport(_currentUserId, _accessKey);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public interface IAssessmentBusiness
{
AssessmentDetail CreateNewAssessment(int? currentUserId, string workflow, GalleryConfig config);
int SaveAssessmentDetail(int assessmentId, AssessmentDetail assessment);
AssessmentDetail CreateNewAssessmentForImport(int? currentUserId, string accessKey);
AssessmentDetail CreateNewAssessmentForImport(int? currentUserId, string accessKey, Guid assessmentGuid);
IEnumerable<usp_Assessments_For_UserResult> GetAssessmentsForUser(int userId);
IEnumerable<usp_Assessments_For_UserResult> GetAssessmentsForAccessKey(string accessKey);
AnalyticsAssessment GetAnalyticsAssessmentDetail(int assessmentId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ public class AssessmentDetail
public string Workflow { get; set; }
public Guid? GalleryItemGuid { get; set; }

public Guid AssessmentGuid { get; set; }

/// <summary>
/// Created to be flexible to able to 'flag' an assessment for a special behavior
/// </summary>
Expand Down

0 comments on commit 072816c

Please sign in to comment.