This commit is contained in:
@@ -150,7 +150,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE PARTASSEMBLYBIZ / some of WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
|
|
||||||
|
|||||||
@@ -107,13 +107,15 @@ namespace AyaNova.Biz
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE PARTASSEMBLYBIZ / some of WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//UPDATE
|
//UPDATE
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Part> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<Part> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.Part.SingleOrDefaultAsync(m => m.Id == id);
|
var ret = await ct.Part.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -109,20 +109,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Part> PutAsync(Part putObject)
|
internal async Task<Part> PutAsync(Part putObject)
|
||||||
{
|
{
|
||||||
Part dbObject = await ct.Part.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Part SnapshotOfOriginalDBObj = new Part();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -136,9 +134,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +149,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Part dbObject = await ct.Part.SingleOrDefaultAsync(m => m.Id == id);
|
Part dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -198,7 +196,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.Part.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
@@ -283,7 +281,7 @@ namespace AyaNova.Biz
|
|||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.Part.Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.Part.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
foreach (Part w in orderedList)
|
foreach (Part w in orderedList)
|
||||||
@@ -370,7 +368,7 @@ namespace AyaNova.Biz
|
|||||||
if (jobData.ContainsKey("idList"))
|
if (jobData.ContainsKey("idList"))
|
||||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||||
else
|
else
|
||||||
idList = await ct.Part.Select(z => z.Id).ToListAsync();
|
idList = await ct.Part.AsNoTracking().Select(z => z.Id).ToListAsync();
|
||||||
bool SaveIt = false;
|
bool SaveIt = false;
|
||||||
foreach (long id in idList)
|
foreach (long id in idList)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Project> DuplicateAsync(long id)
|
internal async Task<Project> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
Project dbObject = await GetAsync(id, false);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
@@ -98,7 +98,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Project> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<Project> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.Project.SingleOrDefaultAsync(m => m.Id == id);
|
var ret = await ct.Project.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -109,20 +109,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Project> PutAsync(Project putObject)
|
internal async Task<Project> PutAsync(Project putObject)
|
||||||
{
|
{
|
||||||
Project dbObject = await ct.Project.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Project SnapshotOfOriginalDBObj = new Project();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -136,9 +134,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +149,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Project dbObject = await ct.Project.SingleOrDefaultAsync(m => m.Id == id);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -199,7 +197,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.Project.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
@@ -276,7 +274,7 @@ namespace AyaNova.Biz
|
|||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.Project.Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.Project.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
foreach (Project w in orderedList)
|
foreach (Project w in orderedList)
|
||||||
@@ -365,7 +363,7 @@ namespace AyaNova.Biz
|
|||||||
if (jobData.ContainsKey("idList"))
|
if (jobData.ContainsKey("idList"))
|
||||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||||
else
|
else
|
||||||
idList = await ct.Project.Select(z => z.Id).ToListAsync();
|
idList = await ct.Project.AsNoTracking().Select(z => z.Id).ToListAsync();
|
||||||
bool SaveIt = false;
|
bool SaveIt = false;
|
||||||
foreach (long id in idList)
|
foreach (long id in idList)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -60,14 +60,14 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<PurchaseOrder> DuplicateAsync(long id)
|
internal async Task<PurchaseOrder> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
PurchaseOrder dbObject = await GetAsync(id, false);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
PurchaseOrder newObject = new PurchaseOrder();
|
PurchaseOrder newObject = new PurchaseOrder();
|
||||||
CopyObject.Copy(dbObject, newObject, "Wiki,Serial");
|
CopyObject.Copy(dbObject, newObject, "Wiki,Serial");
|
||||||
newObject.Id = 0;
|
newObject.Id = 0;
|
||||||
newObject.Concurrency = 0;
|
newObject.Concurrency = 0;
|
||||||
await ct.PurchaseOrder.AddAsync(newObject);
|
await ct.PurchaseOrder.AddAsync(newObject);
|
||||||
@@ -84,7 +84,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<PurchaseOrder> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<PurchaseOrder> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.PurchaseOrder.SingleOrDefaultAsync(z => z.Id == id);
|
var ret = await ct.PurchaseOrder.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -95,20 +95,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<PurchaseOrder> PutAsync(PurchaseOrder putObject)
|
internal async Task<PurchaseOrder> PutAsync(PurchaseOrder putObject)
|
||||||
{
|
{
|
||||||
PurchaseOrder dbObject = await ct.PurchaseOrder.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
PurchaseOrder SnapshotOfOriginalDBObj = new PurchaseOrder();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -122,9 +120,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +135,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PurchaseOrder dbObject = await ct.PurchaseOrder.SingleOrDefaultAsync(z => z.Id == id);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -183,7 +181,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.PurchaseOrder.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
|
|||||||
@@ -153,9 +153,10 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE PARTASSEMBLYBIZ / some of WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
|
|
||||||
|
|||||||
@@ -131,13 +131,15 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE PARTASSEMBLYBIZ / some of WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//UPDATE
|
//UPDATE
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -65,13 +65,13 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Reminder> DuplicateAsync(long id)
|
internal async Task<Reminder> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
Reminder dbObject = await GetAsync(id, false);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Reminder newObject = new Reminder();
|
var newObject = new Reminder();
|
||||||
CopyObject.Copy(dbObject, newObject, "Wiki");
|
CopyObject.Copy(dbObject, newObject, "Wiki");
|
||||||
string newUniqueName = string.Empty;
|
string newUniqueName = string.Empty;
|
||||||
bool NotUnique = true;
|
bool NotUnique = true;
|
||||||
@@ -98,7 +98,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Reminder> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<Reminder> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.Reminder.SingleOrDefaultAsync(m => m.Id == id);
|
var ret = await ct.Reminder.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -109,20 +109,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Reminder> PutAsync(Reminder putObject)
|
internal async Task<Reminder> PutAsync(Reminder putObject)
|
||||||
{
|
{
|
||||||
Reminder dbObject = await ct.Reminder.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Reminder SnapshotOfOriginalDBObj = new Reminder();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -136,9 +134,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,7 +197,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.Reminder.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
@@ -270,7 +268,7 @@ namespace AyaNova.Biz
|
|||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.Reminder.Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.Reminder.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
foreach (Reminder w in orderedList)
|
foreach (Reminder w in orderedList)
|
||||||
@@ -359,7 +357,7 @@ namespace AyaNova.Biz
|
|||||||
if (jobData.ContainsKey("idList"))
|
if (jobData.ContainsKey("idList"))
|
||||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||||
else
|
else
|
||||||
idList = await ct.Reminder.Select(z => z.Id).ToListAsync();
|
idList = await ct.Reminder.AsNoTracking().Select(z => z.Id).ToListAsync();
|
||||||
bool SaveIt = false;
|
bool SaveIt = false;
|
||||||
foreach (long id in idList)
|
foreach (long id in idList)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -167,18 +167,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Report> PutAsync(Report putObject)
|
internal async Task<Report> PutAsync(Report putObject)
|
||||||
{
|
{
|
||||||
Report dbObject = await ct.Report.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
|
||||||
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Report SnapshotOfOriginalDBObj = new Report();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
await ValidateAsync(putObject, dbObject);
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -192,7 +192,7 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,7 +205,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Report dbObject = await ct.Report.SingleOrDefaultAsync(z => z.Id == id);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -266,7 +266,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.Report.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
|
|||||||
@@ -65,13 +65,13 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Review> DuplicateAsync(long id)
|
internal async Task<Review> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
Review dbObject = await GetAsync(id, false);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Review newObject = new Review();
|
var newObject = new Review();
|
||||||
CopyObject.Copy(dbObject, newObject, "Wiki");
|
CopyObject.Copy(dbObject, newObject, "Wiki");
|
||||||
string newUniqueName = string.Empty;
|
string newUniqueName = string.Empty;
|
||||||
bool NotUnique = true;
|
bool NotUnique = true;
|
||||||
@@ -98,7 +98,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Review> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<Review> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.Review.SingleOrDefaultAsync(m => m.Id == id);
|
var ret = await ct.Review.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -109,20 +109,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Review> PutAsync(Review putObject)
|
internal async Task<Review> PutAsync(Review putObject)
|
||||||
{
|
{
|
||||||
Review dbObject = await ct.Review.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Review SnapshotOfOriginalDBObj = new Review();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -136,9 +134,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +149,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Review dbObject = await ct.Review.SingleOrDefaultAsync(m => m.Id == id);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -198,7 +196,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.Review.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
@@ -331,7 +329,7 @@ namespace AyaNova.Biz
|
|||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.Review.Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.Review.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
foreach (Review w in orderedList)
|
foreach (Review w in orderedList)
|
||||||
@@ -420,7 +418,7 @@ namespace AyaNova.Biz
|
|||||||
if (jobData.ContainsKey("idList"))
|
if (jobData.ContainsKey("idList"))
|
||||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||||
else
|
else
|
||||||
idList = await ct.Review.Select(z => z.Id).ToListAsync();
|
idList = await ct.Review.AsNoTracking().Select(z => z.Id).ToListAsync();
|
||||||
bool SaveIt = false;
|
bool SaveIt = false;
|
||||||
foreach (long id in idList)
|
foreach (long id in idList)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -65,13 +65,13 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<ServiceRate> DuplicateAsync(long id)
|
internal async Task<ServiceRate> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
ServiceRate dbObject = await GetAsync(id, false);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ServiceRate newObject = new ServiceRate();
|
var newObject = new ServiceRate();
|
||||||
CopyObject.Copy(dbObject, newObject, "Wiki");
|
CopyObject.Copy(dbObject, newObject, "Wiki");
|
||||||
string newUniqueName = string.Empty;
|
string newUniqueName = string.Empty;
|
||||||
bool NotUnique = true;
|
bool NotUnique = true;
|
||||||
@@ -98,7 +98,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<ServiceRate> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<ServiceRate> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.ServiceRate.SingleOrDefaultAsync(m => m.Id == id);
|
var ret = await ct.ServiceRate.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -109,20 +109,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<ServiceRate> PutAsync(ServiceRate putObject)
|
internal async Task<ServiceRate> PutAsync(ServiceRate putObject)
|
||||||
{
|
{
|
||||||
ServiceRate dbObject = await ct.ServiceRate.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ServiceRate SnapshotOfOriginalDBObj = new ServiceRate();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -136,9 +134,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +149,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ServiceRate dbObject = await ct.ServiceRate.SingleOrDefaultAsync(m => m.Id == id);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -199,7 +197,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.ServiceRate.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
@@ -277,7 +275,7 @@ namespace AyaNova.Biz
|
|||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.ServiceRate.Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.ServiceRate.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
foreach (ServiceRate w in orderedList)
|
foreach (ServiceRate w in orderedList)
|
||||||
@@ -366,7 +364,7 @@ namespace AyaNova.Biz
|
|||||||
if (jobData.ContainsKey("idList"))
|
if (jobData.ContainsKey("idList"))
|
||||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||||
else
|
else
|
||||||
idList = await ct.ServiceRate.Select(z => z.Id).ToListAsync();
|
idList = await ct.ServiceRate.AsNoTracking().Select(z => z.Id).ToListAsync();
|
||||||
bool SaveIt = false;
|
bool SaveIt = false;
|
||||||
foreach (long id in idList)
|
foreach (long id in idList)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -65,13 +65,13 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<TaxCode> DuplicateAsync(long id)
|
internal async Task<TaxCode> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
TaxCode dbObject = await GetAsync(id, false);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
TaxCode newObject = new TaxCode();
|
var newObject = new TaxCode();
|
||||||
CopyObject.Copy(dbObject, newObject, "Wiki");
|
CopyObject.Copy(dbObject, newObject, "Wiki");
|
||||||
string newUniqueName = string.Empty;
|
string newUniqueName = string.Empty;
|
||||||
bool NotUnique = true;
|
bool NotUnique = true;
|
||||||
@@ -98,7 +98,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<TaxCode> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<TaxCode> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.TaxCode.SingleOrDefaultAsync(m => m.Id == id);
|
var ret = await ct.TaxCode.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -109,20 +109,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<TaxCode> PutAsync(TaxCode putObject)
|
internal async Task<TaxCode> PutAsync(TaxCode putObject)
|
||||||
{
|
{
|
||||||
TaxCode dbObject = await ct.TaxCode.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
TaxCode SnapshotOfOriginalDBObj = new TaxCode();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -136,9 +134,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +149,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TaxCode dbObject = await ct.TaxCode.SingleOrDefaultAsync(m => m.Id == id);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -199,7 +197,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.TaxCode.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
@@ -280,7 +278,7 @@ namespace AyaNova.Biz
|
|||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.TaxCode.Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.TaxCode.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
foreach (TaxCode w in orderedList)
|
foreach (TaxCode w in orderedList)
|
||||||
@@ -369,7 +367,7 @@ namespace AyaNova.Biz
|
|||||||
if (jobData.ContainsKey("idList"))
|
if (jobData.ContainsKey("idList"))
|
||||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||||
else
|
else
|
||||||
idList = await ct.TaxCode.Select(z => z.Id).ToListAsync();
|
idList = await ct.TaxCode.AsNoTracking().Select(z => z.Id).ToListAsync();
|
||||||
bool SaveIt = false;
|
bool SaveIt = false;
|
||||||
foreach (long id in idList)
|
foreach (long id in idList)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -65,13 +65,13 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<TravelRate> DuplicateAsync(long id)
|
internal async Task<TravelRate> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
TravelRate dbObject = await GetAsync(id, false);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
TravelRate newObject = new TravelRate();
|
var newObject = new TravelRate();
|
||||||
CopyObject.Copy(dbObject, newObject, "Wiki");
|
CopyObject.Copy(dbObject, newObject, "Wiki");
|
||||||
string newUniqueName = string.Empty;
|
string newUniqueName = string.Empty;
|
||||||
bool NotUnique = true;
|
bool NotUnique = true;
|
||||||
@@ -98,7 +98,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<TravelRate> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<TravelRate> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.TravelRate.SingleOrDefaultAsync(m => m.Id == id);
|
var ret = await ct.TravelRate.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -109,20 +109,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<TravelRate> PutAsync(TravelRate putObject)
|
internal async Task<TravelRate> PutAsync(TravelRate putObject)
|
||||||
{
|
{
|
||||||
TravelRate dbObject = await ct.TravelRate.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
TravelRate SnapshotOfOriginalDBObj = new TravelRate();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -136,9 +134,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +149,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TravelRate dbObject = await ct.TravelRate.SingleOrDefaultAsync(m => m.Id == id);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -199,7 +197,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.TravelRate.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
@@ -277,7 +275,7 @@ namespace AyaNova.Biz
|
|||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.TravelRate.Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.TravelRate.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
foreach (TravelRate w in orderedList)
|
foreach (TravelRate w in orderedList)
|
||||||
@@ -366,7 +364,7 @@ namespace AyaNova.Biz
|
|||||||
if (jobData.ContainsKey("idList"))
|
if (jobData.ContainsKey("idList"))
|
||||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||||
else
|
else
|
||||||
idList = await ct.TravelRate.Select(z => z.Id).ToListAsync();
|
idList = await ct.TravelRate.AsNoTracking().Select(z => z.Id).ToListAsync();
|
||||||
bool SaveIt = false;
|
bool SaveIt = false;
|
||||||
foreach (long id in idList)
|
foreach (long id in idList)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -65,13 +65,13 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Unit> DuplicateAsync(long id)
|
internal async Task<Unit> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
Unit dbObject = await GetAsync(id, false);
|
var dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Unit newObject = new Unit();
|
var newObject = new Unit();
|
||||||
CopyObject.Copy(dbObject, newObject, "Wiki");
|
CopyObject.Copy(dbObject, newObject, "Wiki");
|
||||||
string newUniqueName = string.Empty;
|
string newUniqueName = string.Empty;
|
||||||
bool NotUnique = true;
|
bool NotUnique = true;
|
||||||
@@ -98,7 +98,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Unit> GetAsync(long id, bool logTheGetEvent = true)
|
internal async Task<Unit> GetAsync(long id, bool logTheGetEvent = true)
|
||||||
{
|
{
|
||||||
var ret = await ct.Unit.SingleOrDefaultAsync(z => z.Id == id);
|
var ret = await ct.Unit.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id);
|
||||||
if (logTheGetEvent && ret != null)
|
if (logTheGetEvent && ret != null)
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -109,20 +109,18 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<Unit> PutAsync(Unit putObject)
|
internal async Task<Unit> PutAsync(Unit putObject)
|
||||||
{
|
{
|
||||||
Unit dbObject = await ct.Unit.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
var dbObject = await GetAsync(putObject.Id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Unit SnapshotOfOriginalDBObj = new Unit();
|
|
||||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||||
CopyObject.Copy(putObject, dbObject, "Id");
|
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
await ValidateAsync(putObject, dbObject);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
|
||||||
await ValidateAsync(dbObject, SnapshotOfOriginalDBObj);
|
|
||||||
if (HasErrors) return null;
|
if (HasErrors) return null;
|
||||||
|
ct.Replace(dbObject, putObject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
@@ -136,9 +134,9 @@ namespace AyaNova.Biz
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||||
await SearchIndexAsync(dbObject, false);
|
await SearchIndexAsync(putObject, false);
|
||||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags);
|
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags);
|
||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||||
return dbObject;
|
return dbObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +149,7 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Unit dbObject = await ct.Unit.SingleOrDefaultAsync(z => z.Id == id);
|
Unit dbObject = await GetAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND);
|
AddError(ApiErrorCode.NOT_FOUND);
|
||||||
@@ -197,7 +195,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||||
{
|
{
|
||||||
var obj = await ct.Unit.SingleOrDefaultAsync(z => z.Id == id);
|
var obj = await GetAsync(id, false);
|
||||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||||
DigestSearchText(obj, SearchParams);
|
DigestSearchText(obj, SearchParams);
|
||||||
return SearchParams;
|
return SearchParams;
|
||||||
@@ -294,7 +292,7 @@ namespace AyaNova.Biz
|
|||||||
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE);
|
||||||
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray();
|
||||||
//query for this batch, comes back in db natural order unfortunately
|
//query for this batch, comes back in db natural order unfortunately
|
||||||
var batchResults = await ct.Unit.Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
var batchResults = await ct.Unit.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync();
|
||||||
//order the results back into original
|
//order the results back into original
|
||||||
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
|
||||||
foreach (Unit w in orderedList)
|
foreach (Unit w in orderedList)
|
||||||
|
|||||||
@@ -35,6 +35,18 @@ namespace AyaNova.Biz
|
|||||||
return new WorkOrderBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, AuthorizationRoles.BizAdminFull);
|
return new WorkOrderBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, AuthorizationRoles.BizAdminFull);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//###################################################################################################################################################
|
||||||
|
//###################################################################################################################################################
|
||||||
|
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE PARTASSEMBLYBIZ / some of WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
||||||
|
//###################################################################################################################################################
|
||||||
|
//###################################################################################################################################################
|
||||||
|
//NOTE: this *is* working but is probably coded wrong for the child collections
|
||||||
|
//see the partassemblybiz and associated code / schema structure for proper way to do this
|
||||||
|
//and meld into this design
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗
|
██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗
|
||||||
██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗
|
██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗
|
||||||
@@ -248,29 +260,29 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ////////////////////////////////////////////////////////////////////////////////////////////////
|
// ////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// //GENERATE
|
// //GENERATE
|
||||||
// //
|
// //
|
||||||
// internal async Task<WorkOrder> GenerateWorkOrderAsync(long customerId)//MIGRATE_OUTSTANDING will need more overloads as required and fleshing out later
|
// internal async Task<WorkOrder> GenerateWorkOrderAsync(long customerId)//MIGRATE_OUTSTANDING will need more overloads as required and fleshing out later
|
||||||
// {
|
// {
|
||||||
// WorkOrder newObject = new WorkOrder();
|
// WorkOrder newObject = new WorkOrder();
|
||||||
// newObject.
|
// newObject.
|
||||||
// await WorkOrderValidateAsync(newObject, null);
|
// await WorkOrderValidateAsync(newObject, null);
|
||||||
// if (HasErrors)
|
// if (HasErrors)
|
||||||
// return null;
|
// return null;
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// newObject.Tags = TagBiz.NormalizeTags(newObject.Tags);
|
// newObject.Tags = TagBiz.NormalizeTags(newObject.Tags);
|
||||||
// newObject.CustomFields = JsonUtil.CompactJson(newObject.CustomFields);
|
// newObject.CustomFields = JsonUtil.CompactJson(newObject.CustomFields);
|
||||||
// await ct.WorkOrder.AddAsync(newObject);
|
// await ct.WorkOrder.AddAsync(newObject);
|
||||||
// await ct.SaveChangesAsync();
|
// await ct.SaveChangesAsync();
|
||||||
// await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct);
|
// await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct);
|
||||||
// await WorkOrderSearchIndexAsync(newObject, true);
|
// await WorkOrderSearchIndexAsync(newObject, true);
|
||||||
// await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, newObject.Tags, null);
|
// await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, newObject.Tags, null);
|
||||||
// await HandlePotentialNotificationEvent(AyaEvent.Created, newObject);
|
// await HandlePotentialNotificationEvent(AyaEvent.Created, newObject);
|
||||||
// return newObject;
|
// return newObject;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -2606,13 +2618,13 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// NOTIFICATION PROCESSING
|
// NOTIFICATION PROCESSING
|
||||||
//
|
//
|
||||||
public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj=null)
|
public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<WorkOrderBiz>();
|
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<WorkOrderBiz>();
|
||||||
if (ServerBootConfig.SEEDING) return;
|
if (ServerBootConfig.SEEDING) return;
|
||||||
|
|||||||
@@ -134,13 +134,15 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
// WARNING! THIS OBJECT IS AN INITIAL TEST VERSION NOT UP TO CURRENT STANDARDS, SEE PARTASSEMBLYBIZ / some of WORKORDERBIZ FOR HOW THIS SHOULD BE CODED
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
//###################################################################################################################################################
|
//###################################################################################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//UPDATE
|
//UPDATE
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user