Skip to content

Commit 2e53bf3

Browse files
authored
Cwdoe 1549 reorder (#120)
* catalog upload fix * handle case when data value does not exist for a data field
1 parent 76b95bd commit 2e53bf3

File tree

3 files changed

+55
-27
lines changed

3 files changed

+55
-27
lines changed

Blueprint.Api/Blueprint.Api.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<Version>1.4.0</Version>
4+
<Version>1.4.1</Version>
55
<TargetFramework>net8.0</TargetFramework>
66
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
77
<NoWarn>CS1591</NoWarn>

Blueprint.Api/Services/CatalogService.cs

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ private async Task<CatalogEntity> privateCatalogCopyAsync(CatalogEntity catalogE
204204
else
205205
{
206206
injectIdCrossReference[catalogInject.InjectId] = Guid.NewGuid();
207-
// null objects that will cause exceptions by creating a duplicate
207+
// null the objects that would have caused exceptions by creating a duplicate
208208
catalogInject.Inject.InjectType = null;
209209
catalogInject.Inject.RequiresInject = null;
210210
// loop through the inject data values
@@ -221,10 +221,35 @@ private async Task<CatalogEntity> privateCatalogCopyAsync(CatalogEntity catalogE
221221
}
222222
// update the inject type and data fields, if necessary
223223
var dataFieldIdCrossReference = new Dictionary<Guid, Guid>();
224-
var injectTypeExists = await _context.InjectTypes
225-
.AnyAsync(m => m.Id == catalogEntity.InjectTypeId, ct);
226-
if (injectTypeExists)
224+
var existingInjectType = await _context.InjectTypes
225+
.Include(m => m.DataFields)
226+
.SingleOrDefaultAsync(m => m.Id == catalogEntity.InjectTypeId || m.Name == catalogEntity.InjectType.Name, ct);
227+
if (existingInjectType != null)
227228
{
229+
if (existingInjectType.Id != catalogEntity.InjectTypeId)
230+
{
231+
var missingDataFields = "";
232+
foreach (var dataField in catalogEntity.InjectType.DataFields)
233+
{
234+
var hasMatch = existingInjectType.DataFields.Any(m => m.Name == dataField.Name && m.DataType == dataField.DataType);
235+
if (!hasMatch)
236+
{
237+
missingDataFields = missingDataFields + " '" + dataField.Name + "'";
238+
}
239+
}
240+
if (missingDataFields != "")
241+
{
242+
throw new InvalidDataException("There is an existing Inject Type with the same name, but without matching Data Fields for (" + missingDataFields + ")");
243+
}
244+
catalogEntity.InjectTypeId = existingInjectType.Id;
245+
foreach (var catalogInject in catalogEntity.CatalogInjects)
246+
{
247+
if (catalogInject.Inject != null)
248+
{
249+
catalogInject.Inject.InjectTypeId = existingInjectType.Id;
250+
}
251+
}
252+
}
228253
catalogEntity.InjectType = null;
229254
}
230255
else

Blueprint.Api/Services/ScenarioEventService.cs

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -537,37 +537,40 @@ await MselOwnerRequirement.IsMet(_user.GetId(), sourceMsel.Id, _context)))
537537
.SingleOrDefaultAsync(dv => dv.ScenarioEventId == scenarioEvent.Id && dv.DataFieldId == dataFieldId, ct);
538538
var dataValue = scenarioEvent.DataValues
539539
.SingleOrDefault(dv => dv.ScenarioEventId == scenarioEvent.Id && dv.DataFieldId == dataFieldId);
540-
if (dataValueToUpdate == null)
540+
if (dataValueToUpdate != null || dataValue != null)
541541
{
542-
dataValue.Id = Guid.NewGuid();
543-
dataValue.CreatedBy = (Guid)scenarioEvent.ModifiedBy;
544-
dataValue.DateCreated = (DateTime)scenarioEvent.DateModified;
545-
dataValue.DateModified = dataValue.DateCreated;
546-
dataValue.ModifiedBy = dataValue.CreatedBy;
547-
dataValue.CellMetadata = cellMetadata;
548-
var dataValueEntity = _mapper.Map<DataValueEntity>(dataValue);
549-
_context.DataValues.Add(dataValueEntity);
550-
}
551-
else if (dataValue == null)
552-
{
553-
if (dataValueToUpdate.CellMetadata != cellMetadata)
542+
if (dataValueToUpdate == null)
543+
{
544+
dataValue.Id = Guid.NewGuid();
545+
dataValue.CreatedBy = (Guid)scenarioEvent.ModifiedBy;
546+
dataValue.DateCreated = (DateTime)scenarioEvent.DateModified;
547+
dataValue.DateModified = dataValue.DateCreated;
548+
dataValue.ModifiedBy = dataValue.CreatedBy;
549+
dataValue.CellMetadata = cellMetadata;
550+
var dataValueEntity = _mapper.Map<DataValueEntity>(dataValue);
551+
_context.DataValues.Add(dataValueEntity);
552+
}
553+
else if (dataValue == null)
554+
{
555+
if (dataValueToUpdate.CellMetadata != cellMetadata)
556+
{
557+
// update the DataValue
558+
dataValueToUpdate.ModifiedBy = scenarioEventToUpdate.ModifiedBy;
559+
dataValueToUpdate.DateModified = scenarioEventToUpdate.DateModified;
560+
dataValueToUpdate.CellMetadata = cellMetadata;
561+
_context.DataValues.Update(dataValueToUpdate);
562+
}
563+
}
564+
else if (dataValue.Value != dataValueToUpdate.Value || dataValueToUpdate.CellMetadata != cellMetadata)
554565
{
555566
// update the DataValue
556567
dataValueToUpdate.ModifiedBy = scenarioEventToUpdate.ModifiedBy;
557568
dataValueToUpdate.DateModified = scenarioEventToUpdate.DateModified;
569+
dataValueToUpdate.Value = dataValue.Value;
558570
dataValueToUpdate.CellMetadata = cellMetadata;
559571
_context.DataValues.Update(dataValueToUpdate);
560572
}
561573
}
562-
else if (dataValue.Value != dataValueToUpdate.Value || dataValueToUpdate.CellMetadata != cellMetadata)
563-
{
564-
// update the DataValue
565-
dataValueToUpdate.ModifiedBy = scenarioEventToUpdate.ModifiedBy;
566-
dataValueToUpdate.DateModified = scenarioEventToUpdate.DateModified;
567-
dataValueToUpdate.Value = dataValue.Value;
568-
dataValueToUpdate.CellMetadata = cellMetadata;
569-
_context.DataValues.Update(dataValueToUpdate);
570-
}
571574
}
572575
await _context.SaveChangesAsync(ct);
573576
// update the MSEL modified info

0 commit comments

Comments
 (0)