This commit is contained in:
@@ -638,6 +638,46 @@ namespace AyaNova.Biz
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//UPDATE
|
||||||
|
//
|
||||||
|
internal async Task<WorkOrderItemPart> PartPutAsync(WorkOrderItemPart dtPutObject)
|
||||||
|
{
|
||||||
|
WorkOrderItemPart dbObject = await ct.WorkOrderItemPart.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||||
|
if (dbObject == null)
|
||||||
|
{
|
||||||
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// make a snapshot of the original for validation but update the original to preserve workflow
|
||||||
|
WorkOrderItemPart SnapshotOfOriginalDBObj = new WorkOrderItemPart();
|
||||||
|
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
||||||
|
CopyObject.Copy(dtPutObject, dbObject, "Id");
|
||||||
|
|
||||||
|
dbObject.Tags = TagUtil.NormalizeTags(dbObject.Tags);
|
||||||
|
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
||||||
|
|
||||||
|
ct.Entry(dbObject).OriginalValues["ConcurrencyToken"] = dtPutObject.ConcurrencyToken;
|
||||||
|
await PartValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
||||||
|
if (HasErrors) return null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await ct.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
catch (DbUpdateConcurrencyException)
|
||||||
|
{
|
||||||
|
if (!await PartExistsAsync(dtPutObject.Id))
|
||||||
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
|
else
|
||||||
|
new ApiErrorResponse(ApiErrorCode.CONCURRENCY_CONFLICT);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
|
await PartSearchIndexAsync(dbObject, false);
|
||||||
|
await TagUtil.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
||||||
|
return dbObject;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//VALIDATION
|
//VALIDATION
|
||||||
|
|||||||
Reference in New Issue
Block a user