Skip to content

Commit aaabcbd

Browse files
authored
Merge pull request #4504 from cisagov/bug/CSET-3101
2 parents 79d8f26 + dd3b6e4 commit aaabcbd

File tree

9 files changed

+81
-87
lines changed

9 files changed

+81
-87
lines changed

CSETWebApi/CSETWeb_Api/CSETWebCore.Business/AssessmentIO/Export/AssessmentExportManager.cs

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -494,9 +494,8 @@ private UploadAssessmentModel RemovePcii(UploadAssessmentModel model)
494494
/// </summary>
495495
private ExportJson CreateJson(int assessmentId, bool scrubData = false)
496496
{
497-
498-
var model = CopyForExport(assessmentId, scrubData);
499-
ExportJson exportModel = new ExportJson();
497+
var model = CopyForExport(assessmentId, scrubData);
498+
ExportJson exportModel = new ExportJson();
500499
foreach (var standard in model.jAVAILABLE_STANDARDS)
501500
{
502501
if (!standard.Selected)
@@ -531,20 +530,23 @@ join nqs in _context.NEW_QUESTION_SETS on nq.Question_Id equals nqs.Question_Id
531530
set.NEW_REQUIREMENT = new List<NEW_REQUIREMENT>(rq.ToList());
532531

533532

534-
535533
var extStandard = StandardConverter.ToExternalStandard(set, _context);
536-
var setname = Regex.Replace(extStandard.shortName, @"\W", "_");
537534

538-
539-
var jsonStandard = JsonConvert.SerializeObject(extStandard, Formatting.Indented);
540-
541-
SetObject setObject = new SetObject
535+
// export custom standards only
536+
if (set.Is_Custom)
542537
{
543-
SetName = $"{setname}.json",
544-
Json = jsonStandard
545-
};
546-
exportModel.SetObj = setObject;
547-
538+
var setname = Regex.Replace(extStandard.shortName, @"\W", "_");
539+
540+
var jsonStandard = JsonConvert.SerializeObject(extStandard, Formatting.Indented);
541+
542+
SetObject setObject = new SetObject
543+
{
544+
SetName = $"{setname}.json",
545+
Json = jsonStandard
546+
};
547+
exportModel.SetObj = setObject;
548+
model.CustomStandards.Add(extStandard.shortName);
549+
}
548550

549551

550552
//Set the GUID at time of export so we are sure it's right!!!
@@ -568,14 +570,12 @@ join nqs in _context.NEW_QUESTION_SETS on nq.Question_Id equals nqs.Question_Id
568570
return t;
569571
})).ToList();
570572

571-
model.CustomStandards.Add(extStandard.shortName);
572573

573-
574574
var files = extStandard.requirements.SelectMany(s => s.references.Concat(new ExternalResource[] { s.source })).OfType<ExternalResource>().Distinct();
575575
foreach (var file in files)
576576
{
577-
var genFile = _context.GEN_FILE.FirstOrDefault(s => s.File_Name == file.fileName && (s.Is_Uploaded));
578-
if (genFile == null || model.CustomStandardDocs.Contains(file.fileName))
577+
var genFile = _context.GEN_FILE.FirstOrDefault(s => s.File_Name == file.FileName && (s.Is_Uploaded));
578+
if (genFile == null || model.CustomStandardDocs.Contains(file.FileName))
579579
continue;
580580

581581
var doc = genFile.ToExternalDocument();
@@ -586,26 +586,25 @@ join nqs in _context.NEW_QUESTION_SETS on nq.Question_Id equals nqs.Question_Id
586586
DocName = $"{doc.ShortName}.json",
587587
Json = jsonDoc
588588
};
589-
589+
590590
exportModel.DocObj = docObject;
591-
model.CustomStandardDocs.Add(file.fileName);
591+
model.CustomStandardDocs.Add(file.FileName);
592592
}
593-
594593
}
595-
596-
model.ExportDateTime = DateTime.UtcNow;
597594

598-
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
599-
ModelObject modelObject = new ModelObject()
600-
{
601-
ModelName = "model.json",
602-
Json = json
603-
};
604-
605-
exportModel.ModelObj = modelObject;
595+
model.ExportDateTime = DateTime.UtcNow;
596+
597+
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
598+
ModelObject modelObject = new ModelObject()
599+
{
600+
ModelName = "model.json",
601+
Json = json
602+
};
603+
604+
exportModel.ModelObj = modelObject;
606605
return exportModel;
607606
}
608-
607+
609608
/// <summary>
610609
/// Export an assessment by its ID.
611610
/// Can optionally provide a password and password hint that will be used during import process.
@@ -653,7 +652,7 @@ public AssessmentExportFile ExportAssessment(int assessmentId, string fileExtens
653652
{
654653
zipWrapper.AddEntry($"{passwordHint}.hint", passwordHint);
655654
}
656-
655+
657656
zipWrapper.Save();
658657
zipWrapper.CloseStream();
659658
}
@@ -666,7 +665,7 @@ public AssessmentExportFile ExportAssessment(int assessmentId, string fileExtens
666665

667666
return new AssessmentExportFile(fileName, archiveStream);
668667
}
669-
668+
670669
/// <summary>
671670
/// Export an assessment by its ID.
672671
/// </summary>
@@ -685,7 +684,7 @@ public AssessmentExportFileJson ExportAssessmentJson(int assessmentId, bool scru
685684

686685
// export the assessment
687686
ExportJson exportFile = CreateJson(assessmentId, scrubData);
688-
687+
689688

690689
// mark the assessment as clean after export
691690
var assessment = _context.ASSESSMENTS.FirstOrDefault(a => a.Assessment_Id == assessmentId);
@@ -739,7 +738,7 @@ public MemoryStream BulkExportAssessments(Guid[] guids, string fileExtension)
739738

740739

741740
zipWrapper.AddEntry(exportFile.FileName, exportFile.FileContents);
742-
741+
743742
zipWrapper.Save();
744743
zipWrapper.CloseStream();
745744
}

CSETWebApi/CSETWeb_Api/CSETWebCore.Business/AssessmentIO/Import/ImportManager.cs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public async Task ProcessCSETAssessmentImport(byte[] zipFileFromDatabase, int? c
6363
var x = new ZipFile(fs);
6464
ZipEntry e = x.GetEntry("model.json");
6565

66-
66+
6767

6868
if (!String.IsNullOrEmpty(password))
6969
{
@@ -120,7 +120,6 @@ public async Task ProcessCSETAssessmentImport(byte[] zipFileFromDatabase, int? c
120120

121121
foreach (var standard in model.CustomStandards)
122122
{
123-
124123
var sets = context.SETS.Where(s => s.Short_Name.Contains(standard)).ToList();
125124
if (sets.Count == 0)
126125
{
@@ -150,12 +149,6 @@ public async Task ProcessCSETAssessmentImport(byte[] zipFileFromDatabase, int? c
150149

151150
if (set == null)
152151
{
153-
//int incr = 1;
154-
//while (sets.Any(s => s.Short_Name == originalSetName))
155-
//{
156-
// setModel.name = originalSetName + " " + incr;
157-
// incr++;
158-
//}
159152
var setResult = await setModel.ToSet(_context);
160153
if (setResult.IsSuccess)
161154
{
@@ -185,7 +178,7 @@ public async Task ProcessCSETAssessmentImport(byte[] zipFileFromDatabase, int? c
185178
erea.Question_Or_Requirement_Id = req.Requirement_Id;
186179
}
187180
return erea;
188-
}).Concat(model.jANSWER.Where(s => !s.Is_Requirement??false).GroupJoin(setResult.Result.NEW_QUESTION, s => s.Custom_Question_Guid, req => new Guid(MD5.Create().ComputeHash(Encoding.Default.GetBytes(req.Simple_Question))).ToString(), (erer, s) =>
181+
}).Concat(model.jANSWER.Where(s => !s.Is_Requirement ?? false).GroupJoin(setResult.Result.NEW_QUESTION, s => s.Custom_Question_Guid, req => new Guid(MD5.Create().ComputeHash(Encoding.Default.GetBytes(req.Simple_Question))).ToString(), (erer, s) =>
189182
{
190183
var req = s.FirstOrDefault();
191184
if (req != null)
@@ -208,7 +201,7 @@ public async Task ProcessCSETAssessmentImport(byte[] zipFileFromDatabase, int? c
208201

209202
Importer import = new Importer(model, currentUserId, email, accessKey, context, _token, _assessmentUtil, _utilities);
210203
int newAssessmentId = import.RunImportManualPortion(overwriteAssessment);
211-
import.RunImportAutomatic(newAssessmentId, jsonObject, context);
204+
import.RunImportAutomatic(newAssessmentId, jsonObject, context);
212205

213206
// Save the diagram
214207
var assessment = context.ASSESSMENTS.Where(x => x.Assessment_Id == newAssessmentId).FirstOrDefault();
@@ -271,7 +264,7 @@ public async Task BulkImportAssessments(Stream assessmentsZipArchive, bool overw
271264
{
272265
using (assessmentsZipArchive)
273266
{
274-
// ZipFile zip = ZipFile.Read(assessmentsZipArchive);
267+
// ZipFile zip = ZipFile.Read(assessmentsZipArchive);
275268

276269
var zip = new ZipFile(assessmentsZipArchive);
277270

CSETWebApi/CSETWeb_Api/CSETWebCore.Business/ModuleIO/ModuleImporter.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -325,19 +325,19 @@ int sequence
325325
var reqReference = new REQUIREMENT_REFERENCES();
326326
try
327327
{
328-
reqReference.Destination_String = reference.destination;
329-
reqReference.Page_Number = reference.pageNumber;
330-
reqReference.Section_Ref = String.IsNullOrEmpty(reference.sectionReference) ? "" : reference.sectionReference;
331-
reqReference.Gen_File_Id = importer.LookupGenFileId(reference.fileName);
328+
reqReference.Destination_String = reference.Destination;
329+
reqReference.Page_Number = reference.PageNumber;
330+
reqReference.Section_Ref = String.IsNullOrEmpty(reference.SectionReference) ? "" : reference.SectionReference;
331+
reqReference.Gen_File_Id = importer.LookupGenFileId(reference.FileName);
332332
reqReference.Source = false;
333333
}
334334
catch
335335
{
336-
result.LogError(String.Format("Reference {0} could not be added for requirement {1} {2}.", externalRequirement.source?.fileName, externalRequirement.identifier, externalRequirement.text));
336+
result.LogError(String.Format("Reference {0} could not be added for requirement {1} {2}.", externalRequirement.source?.FileName, externalRequirement.identifier, externalRequirement.text));
337337
}
338338
if (reqReference.Gen_File_Id == 0)
339339
{
340-
result.LogError(String.Format("Reference {0} has not been loaded into CSET. Please add the file and try again.", externalRequirement.source?.fileName, externalRequirement.identifier, externalRequirement.text));
340+
result.LogError(String.Format("Reference {0} has not been loaded into CSET. Please add the file and try again.", externalRequirement.source?.FileName, externalRequirement.identifier, externalRequirement.text));
341341
}
342342
else
343343
{
@@ -352,14 +352,14 @@ int sequence
352352
{
353353
if (externalRequirement.source != null)
354354
{
355-
reqSource.Gen_File_Id = importer.LookupGenFileId(externalRequirement.source.fileName);
356-
reqSource.Page_Number = externalRequirement.source.pageNumber;
357-
reqSource.Destination_String = externalRequirement.source.destination;
358-
reqSource.Section_Ref = String.IsNullOrEmpty(externalRequirement.source.sectionReference) ? "" : externalRequirement.source.sectionReference;
355+
reqSource.Gen_File_Id = importer.LookupGenFileId(externalRequirement.source.FileName);
356+
reqSource.Page_Number = externalRequirement.source.PageNumber;
357+
reqSource.Destination_String = externalRequirement.source.Destination;
358+
reqSource.Section_Ref = String.IsNullOrEmpty(externalRequirement.source.SectionReference) ? "" : externalRequirement.source.SectionReference;
359359
reqSource.Source = true;
360360
if (reqSource.Gen_File_Id == 0)
361361
{
362-
result.LogError(String.Format("Source {0} has not been loaded into CSET. Please add the file and try again.", externalRequirement.source?.fileName, externalRequirement.identifier, externalRequirement.text));
362+
result.LogError(String.Format("Source {0} has not been loaded into CSET. Please add the file and try again.", externalRequirement.source?.FileName, externalRequirement.identifier, externalRequirement.text));
363363
}
364364
else
365365
{
@@ -369,7 +369,7 @@ int sequence
369369
}
370370
catch
371371
{
372-
result.LogError(String.Format("Source {0} could not be added for requirement {1} {2}.", externalRequirement.source?.fileName, externalRequirement.identifier, externalRequirement.text));
372+
result.LogError(String.Format("Source {0} could not be added for requirement {1} {2}.", externalRequirement.source?.FileName, externalRequirement.identifier, externalRequirement.text));
373373
}
374374

375375
try

CSETWebApi/CSETWeb_Api/CSETWebCore.Helpers/RequirementConverter.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,18 @@ public static async Task<ConverterResult<NEW_REQUIREMENT>> ToRequirement(this Ex
129129
var reqReference = new REQUIREMENT_REFERENCES();
130130
try
131131
{
132-
reqReference.Destination_String = reference.destination;
133-
reqReference.Page_Number = reference.pageNumber;
134-
reqReference.Section_Ref = String.IsNullOrEmpty(reference.sectionReference) ? "" : reference.sectionReference;
135-
reqReference.Gen_File_Id = importer.LookupGenFileId(reference.fileName);
132+
reqReference.Destination_String = reference.Destination;
133+
reqReference.Page_Number = reference.PageNumber;
134+
reqReference.Section_Ref = String.IsNullOrEmpty(reference.SectionReference) ? "" : reference.SectionReference;
135+
reqReference.Gen_File_Id = importer.LookupGenFileId(reference.FileName);
136136
}
137137
catch
138138
{
139-
result.LogError(String.Format("Reference {0} could not be added for requirement {1} {2}.", externalRequirement.source?.fileName, externalRequirement.identifier, externalRequirement.text));
139+
result.LogError(String.Format("Reference {0} could not be added for requirement {1} {2}.", externalRequirement.source?.FileName, externalRequirement.identifier, externalRequirement.text));
140140
}
141141
if (reqReference.Gen_File_Id == 0)
142142
{
143-
result.LogError(String.Format("Reference {0} has not been loaded into CSET. Please add the file and try again.", externalRequirement.source?.fileName, externalRequirement.identifier, externalRequirement.text));
143+
result.LogError(String.Format("Reference {0} has not been loaded into CSET. Please add the file and try again.", externalRequirement.source?.FileName, externalRequirement.identifier, externalRequirement.text));
144144
}
145145
else
146146
{
@@ -155,14 +155,14 @@ public static async Task<ConverterResult<NEW_REQUIREMENT>> ToRequirement(this Ex
155155
{
156156
if (externalRequirement.source != null)
157157
{
158-
reqSource.Gen_File_Id = importer.LookupGenFileId(externalRequirement.source.fileName);
159-
reqSource.Page_Number = externalRequirement.source.pageNumber;
160-
reqSource.Destination_String = externalRequirement.source.destination;
161-
reqSource.Section_Ref = String.IsNullOrEmpty(externalRequirement.source.sectionReference) ? "" : externalRequirement.source.sectionReference;
158+
reqSource.Gen_File_Id = importer.LookupGenFileId(externalRequirement.source.FileName);
159+
reqSource.Page_Number = externalRequirement.source.PageNumber;
160+
reqSource.Destination_String = externalRequirement.source.Destination;
161+
reqSource.Section_Ref = String.IsNullOrEmpty(externalRequirement.source.SectionReference) ? "" : externalRequirement.source.SectionReference;
162162
reqSource.Source = true;
163163
if (reqSource.Gen_File_Id == 0)
164164
{
165-
result.LogError(String.Format("Source {0} has not been loaded into CSET. Please add the file and try again.", externalRequirement.source?.fileName, externalRequirement.identifier, externalRequirement.text));
165+
result.LogError(String.Format("Source {0} has not been loaded into CSET. Please add the file and try again.", externalRequirement.source?.FileName, externalRequirement.identifier, externalRequirement.text));
166166
}
167167
else
168168
{
@@ -172,7 +172,7 @@ public static async Task<ConverterResult<NEW_REQUIREMENT>> ToRequirement(this Ex
172172
}
173173
catch
174174
{
175-
result.LogError(String.Format("Source {0} could not be added for requirement {1} {2}.", externalRequirement.source?.fileName, externalRequirement.identifier, externalRequirement.text));
175+
result.LogError(String.Format("Source {0} could not be added for requirement {1} {2}.", externalRequirement.source?.FileName, externalRequirement.identifier, externalRequirement.text));
176176
}
177177

178178
context.SaveChanges();

CSETWebApi/CSETWeb_Api/CSETWebCore.Helpers/StandardConverter.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public static async Task<ConverterResult<SETS>> ToSet(this ExternalStandard exte
5757
{
5858
result.LogError("Module already exists. If this is a new version, please change the ShortName field to reflect this.");
5959
}
60+
6061
category = _context.SETS_CATEGORY.FirstOrDefault(s => s.Set_Category_Name.Trim().ToLower() == externalStandard.category.Trim().ToLower());
6162

6263
if (category == null)
@@ -199,10 +200,10 @@ public static ExternalStandard ToExternalStandard(this SETS standard, CSETContex
199200
Resources = s.REQUIREMENT_REFERENCES.Where(x => !x.Source).Select(t =>
200201
new ExternalResource
201202
{
202-
destination = t.Destination_String,
203-
fileName = t.Gen_File.File_Name,
204-
pageNumber = t.Page_Number,
205-
sectionReference = t.Section_Ref
203+
Destination = t.Destination_String,
204+
FileName = t.Gen_File.File_Name,
205+
PageNumber = t.Page_Number,
206+
SectionReference = t.Section_Ref
206207
})
207208
}).ToDictionary(t => t.Requirement_Id, t => t.Resources);
208209

@@ -212,10 +213,10 @@ public static ExternalStandard ToExternalStandard(this SETS standard, CSETContex
212213
Resource = s.REQUIREMENT_REFERENCES.Where(x => x.Source).Select(t =>
213214
new ExternalResource
214215
{
215-
destination = t.Destination_String,
216-
fileName = t.Gen_File.File_Name,
217-
pageNumber = t.Page_Number,
218-
sectionReference = t.Section_Ref
216+
Destination = t.Destination_String,
217+
FileName = t.Gen_File.File_Name,
218+
PageNumber = t.Page_Number,
219+
SectionReference = t.Section_Ref
219220
}).FirstOrDefault()
220221
}).ToDictionary(t => t.Requirement_Id, t => t.Resource);
221222

0 commit comments

Comments
 (0)