diff --git a/devdocs/todo.txt b/devdocs/todo.txt
index 94c3df88..f1060918 100644
--- a/devdocs/todo.txt
+++ b/devdocs/todo.txt
@@ -19,7 +19,8 @@ CODING WORK
+++++++++++
Overall plan for now: anything standing in the way of making the initial client shell UI needs to be done first, everything else can wait
- - Audit log
+ - Audit log
+ - Add back to objects that it was commented out on with selective save or no save
- Make sure trial generated data generates log events so that we can properly test with huge dataset
- Test with huge dataset
- Remove CREATED from all objects now that event log tracks it
diff --git a/server/AyaNova/Controllers/AttachmentController.cs b/server/AyaNova/Controllers/AttachmentController.cs
index 43193b8d..9e75d54d 100644
--- a/server/AyaNova/Controllers/AttachmentController.cs
+++ b/server/AyaNova/Controllers/AttachmentController.cs
@@ -239,8 +239,8 @@ namespace AyaNova.Api.Controllers
});
//Log
- //EventLogProcessor.AddEntry(new Event(UserId, attachToObject.ObjectId, attachToObject.ObjectType, AyaEvent.AttachmentCreate, v.DisplayFileName), ct);
-
+ EventLogProcessor.AddEntry(new Event(UserId, attachToObject.ObjectId, attachToObject.ObjectType, AyaEvent.AttachmentCreate, v.DisplayFileName), ct);
+ ct.SaveChanges();
}
}
}
@@ -306,8 +306,8 @@ namespace AyaNova.Api.Controllers
FileUtil.deleteFileAttachment(dbObj, ct);
//Log
- //EventLogProcessor.AddEntry(new Event(UserId, dbObj.AttachToObjectId, dbObj.AttachToObjectType, AyaEvent.AttachmentDelete, dbObj.DisplayFileName), ct);
-
+ EventLogProcessor.AddEntry(new Event(UserId, dbObj.AttachToObjectId, dbObj.AttachToObjectType, AyaEvent.AttachmentDelete, dbObj.DisplayFileName), ct);
+ ct.SaveChanges();
return NoContent();
}
@@ -385,8 +385,8 @@ namespace AyaNova.Api.Controllers
}
//Log
- //EventLogProcessor.AddEntry(new Event(UserId, dbObj.AttachToObjectId, dbObj.AttachToObjectType, AyaEvent.AttachmentDownload, dbObj.DisplayFileName), ct);
-
+ EventLogProcessor.AddEntry(new Event(UserId, dbObj.AttachToObjectId, dbObj.AttachToObjectType, AyaEvent.AttachmentDownload, dbObj.DisplayFileName), ct);
+ ct.SaveChanges();
return PhysicalFile(filePath, mimetype, dbObj.DisplayFileName);
}
diff --git a/server/AyaNova/Controllers/LicenseController.cs b/server/AyaNova/Controllers/LicenseController.cs
index dc67d7d9..6d05e206 100644
--- a/server/AyaNova/Controllers/LicenseController.cs
+++ b/server/AyaNova/Controllers/LicenseController.cs
@@ -127,7 +127,8 @@ namespace AyaNova.Api.Controllers
}
var ret = AyaNova.Core.License.LicenseInfoAsJson;
//Log
- //EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.License, AyaEvent.LicenseFetch), ct);
+ EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.License, AyaEvent.LicenseFetch), ct);
+ ct.SaveChanges();
return Ok(new ApiOkResponse(ret));
}
@@ -179,7 +180,8 @@ namespace AyaNova.Api.Controllers
var ret = Core.License.RequestTrial(requestData.EmailAddress, requestData.RegisteredTo, log);
//Log
- //EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.License, AyaEvent.LicenseTrialRequest), ct);
+ EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.License, AyaEvent.LicenseTrialRequest), ct);
+ ct.SaveChanges();
return Ok(new ApiOkResponse(ret));
}
diff --git a/server/AyaNova/Controllers/LocaleController.cs b/server/AyaNova/Controllers/LocaleController.cs
index 2e9a6175..e9983dbb 100644
--- a/server/AyaNova/Controllers/LocaleController.cs
+++ b/server/AyaNova/Controllers/LocaleController.cs
@@ -159,11 +159,12 @@ namespace AyaNova.Api.Controllers
}
else
{
- //save and success return
+ //save to get Id
await ct.SaveChangesAsync();
//Log
- //EventLogProcessor.AddEntry(new Event(biz.userId, o.Id, AyaType.Locale, AyaEvent.Created), ct);
+ EventLogProcessor.AddEntry(new Event(biz.userId, o.Id, AyaType.Locale, AyaEvent.Created), ct);
+ await ct.SaveChangesAsync();
return CreatedAtAction("GetLocale", new { id = o.Id }, new ApiCreatedResponse(o));
}
@@ -221,6 +222,9 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(biz.Errors));
}
+ //Log
+ EventLogProcessor.AddEntry(new Event(biz.userId, oDbParent.Id, AyaType.Locale, AyaEvent.Modified), ct);
+
try
{
await ct.SaveChangesAsync();
@@ -240,8 +244,6 @@ namespace AyaNova.Api.Controllers
}
}
- //Log
- //EventLogProcessor.AddEntry(new Event(biz.userId, oDbParent.Id, AyaType.Locale, AyaEvent.Modified), ct);
return Ok(new ApiOkResponse(new { ConcurrencyToken = oFromDb.ConcurrencyToken }));
}
@@ -290,6 +292,9 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(biz.Errors));
}
+ //Log
+ EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Locale, AyaEvent.Modified), ct);
+
try
{
await ct.SaveChangesAsync();
@@ -309,9 +314,6 @@ namespace AyaNova.Api.Controllers
}
}
- //Log
- //EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Locale, AyaEvent.Modified), ct);
-
return Ok(new ApiOkResponse(new { ConcurrencyToken = oFromDb.ConcurrencyToken }));
}
@@ -360,13 +362,14 @@ namespace AyaNova.Api.Controllers
{
return BadRequest(new ApiErrorResponse(biz.Errors));
}
+ //Log
+ EventLogProcessor.DeleteObject(biz.userId, AyaType.Locale, dbObj.Id, dbObj.Name, ct);
await ct.SaveChangesAsync();
//Delete children / attached objects
// biz.DeleteChildren(dbObj);
- //Log
- EventLogProcessor.DeleteObject(biz.userId, AyaType.Locale, dbObj.Id, dbObj.Name, ct);
+
return NoContent();
}
diff --git a/server/AyaNova/Controllers/MetricsController.cs b/server/AyaNova/Controllers/MetricsController.cs
index 49cf898a..12045c76 100644
--- a/server/AyaNova/Controllers/MetricsController.cs
+++ b/server/AyaNova/Controllers/MetricsController.cs
@@ -68,7 +68,8 @@ namespace AyaNova.Api.Controllers
string sResult = await GetTheMetrics("plain");
//Log
- //EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct);
+ EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct);
+ await ct.SaveChangesAsync();
return Content(sResult);
}
@@ -95,12 +96,13 @@ namespace AyaNova.Api.Controllers
return StatusCode(401, new ApiNotAuthorizedResponse());
}
- string sResult = await GetTheMetrics("json");
+ string sResult = await GetTheMetrics("json");
JObject json = JObject.Parse(sResult);
- //Log
- //EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct);
-
+ //Log
+ EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct);
+ await ct.SaveChangesAsync();
+
return Ok(new ApiOkResponse(json));
}
diff --git a/server/AyaNova/Controllers/ServerStateController.cs b/server/AyaNova/Controllers/ServerStateController.cs
index f08bfd84..3cd7fee8 100644
--- a/server/AyaNova/Controllers/ServerStateController.cs
+++ b/server/AyaNova/Controllers/ServerStateController.cs
@@ -95,8 +95,9 @@ namespace AyaNova.Api.Controllers
serverState.SetState(desiredState, state.Reason);
//Log
- //EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.ServerState, AyaEvent.ServerStateChange, $"{state.ServerState}-{state.Reason}"), ct);
-
+ EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.ServerState, AyaEvent.ServerStateChange, $"{state.ServerState}-{state.Reason}"), ct);
+ ct.SaveChanges();
+
return NoContent();
}
diff --git a/server/AyaNova/Controllers/TagController.cs b/server/AyaNova/Controllers/TagController.cs
index 77caddea..804f5799 100644
--- a/server/AyaNova/Controllers/TagController.cs
+++ b/server/AyaNova/Controllers/TagController.cs
@@ -166,11 +166,12 @@ namespace AyaNova.Api.Controllers
}
else
{
- //save and success return
+ //save and get ID for log then success return
await ct.SaveChangesAsync();
//Log
- //EventLogProcessor.AddEntry(new Event(biz.userId, o.Id, AyaType.Tag, AyaEvent.Created), ct);
+ EventLogProcessor.AddEntry(new Event(biz.userId, o.Id, AyaType.Tag, AyaEvent.Created), ct);
+ await ct.SaveChangesAsync();
return CreatedAtAction("GetTag", new { id = o.Id }, new ApiCreatedResponse(o));
}
@@ -221,6 +222,9 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(biz.Errors));
}
+ //Log
+ EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Tag, AyaEvent.Modified), ct);
+
try
{
await ct.SaveChangesAsync();
@@ -240,8 +244,6 @@ namespace AyaNova.Api.Controllers
}
}
- //Log
- //EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Tag, AyaEvent.Modified), ct);
return Ok(new ApiOkResponse(new { ConcurrencyToken = oFromDb.ConcurrencyToken }));
}
@@ -292,6 +294,9 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(biz.Errors));
}
+ //Log
+ EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Tag, AyaEvent.Modified), ct);
+
try
{
await ct.SaveChangesAsync();
@@ -308,9 +313,6 @@ namespace AyaNova.Api.Controllers
}
}
- //Log
- //EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Tag, AyaEvent.Modified), ct);
-
return Ok(new ApiOkResponse(new { ConcurrencyToken = oFromDb.ConcurrencyToken }));
}
@@ -354,11 +356,11 @@ namespace AyaNova.Api.Controllers
{
return BadRequest(new ApiErrorResponse(biz.Errors));
}
-
- await ct.SaveChangesAsync();
-
//Log
EventLogProcessor.DeleteObject(biz.userId, AyaType.Tag, dbObj.Id, dbObj.Name, ct);
+ await ct.SaveChangesAsync();
+
+
return NoContent();
}
diff --git a/server/AyaNova/Controllers/TrialController.cs b/server/AyaNova/Controllers/TrialController.cs
index 8260650a..a8737860 100644
--- a/server/AyaNova/Controllers/TrialController.cs
+++ b/server/AyaNova/Controllers/TrialController.cs
@@ -86,18 +86,20 @@ namespace AyaNova.Api.Controllers
JObject o = JObject.FromObject(new
{
- seedLevel = seedLevel
+ seedLevel = seedLevel
});
OpsJob j = new OpsJob();
j.Name = $"Seed test data (size={size})";
j.JobType = JobType.SeedTestData;
- j.Exclusive=true;//don't run other jobs, this will erase the db
+ j.Exclusive = true;//don't run other jobs, this will erase the db
j.JobInfo = o.ToString();
JobsBiz.AddJob(j, ct);
- //Log
- //EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.TrialSeeder, AyaEvent.Created,size), ct);
+ //Log
+ EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.TrialSeeder, AyaEvent.Created, size), ct);
+ ct.SaveChanges();
+
return Accepted(new { JobId = j.GId });//202 accepted
diff --git a/server/AyaNova/Controllers/WidgetController.cs b/server/AyaNova/Controllers/WidgetController.cs
index 235732e1..690d358a 100644
--- a/server/AyaNova/Controllers/WidgetController.cs
+++ b/server/AyaNova/Controllers/WidgetController.cs
@@ -86,8 +86,8 @@ namespace AyaNova.Api.Controllers
}
//Log
- EventLogProcessor.AddEntryAndSave(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Retrieved), ct);
-
+ EventLogProcessor.AddEntry(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Retrieved), ct);
+ ct.SaveChanges();
return Ok(new ApiOkResponse(o));
}
@@ -217,7 +217,7 @@ namespace AyaNova.Api.Controllers
try
{
//Log
- EventLogProcessor.AddEntryNoSave(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Modified), ct);
+ EventLogProcessor.AddEntry(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Modified), ct);
await ct.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
@@ -293,7 +293,7 @@ namespace AyaNova.Api.Controllers
try
{
//Log
- EventLogProcessor.AddEntryNoSave(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Modified), ct);
+ EventLogProcessor.AddEntry(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Modified), ct);
await ct.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
@@ -355,13 +355,15 @@ namespace AyaNova.Api.Controllers
}
else
{
- //Log
- EventLogProcessor.AddEntryNoSave(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Created), ct);
- //save and success return
+
+ //save to get Id
await ct.SaveChangesAsync();
-
+ //Log now that we have the Id
+ EventLogProcessor.AddEntry(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Created), ct);
+ await ct.SaveChangesAsync();
+ //return success and link
return CreatedAtAction("GetWidget", new { id = o.Id }, new ApiCreatedResponse(o));
}
}
@@ -409,13 +411,15 @@ namespace AyaNova.Api.Controllers
{
return BadRequest(new ApiErrorResponse(biz.Errors));
}
+
+ //Log
+ EventLogProcessor.DeleteObject(biz.userId, AyaType.Widget, dbObj.Id, dbObj.Name, ct);
+
await ct.SaveChangesAsync();
//Delete children / attached objects
biz.DeleteChildren(dbObj);
- //Log
- EventLogProcessor.DeleteObject(biz.userId, AyaType.Widget, dbObj.Id, dbObj.Name, ct);
return NoContent();
}
diff --git a/server/AyaNova/biz/EventLogProcessor.cs b/server/AyaNova/biz/EventLogProcessor.cs
index 23ee8f7c..7ade3dcb 100644
--- a/server/AyaNova/biz/EventLogProcessor.cs
+++ b/server/AyaNova/biz/EventLogProcessor.cs
@@ -22,23 +22,12 @@ namespace AyaNova.Biz
///
///
///
- internal static void AddEntryNoSave(Event newEvent, AyContext ct)
+ internal static void AddEntry(Event newEvent, AyContext ct)
{
ct.Event.Add(newEvent);
}
- ///
- /// Add and SAVE entry to the log
- ///
- ///
- ///
- ///
- internal static void AddEntryAndSave(Event newEvent, AyContext ct)
- {
- ct.Event.Add(newEvent);
- ct.SaveChanges();
- }
-
+
///
/// Handle delete
@@ -52,8 +41,7 @@ namespace AyaNova.Biz
internal static void DeleteObject(long userId, AyaType ayType, long ayId, string textra, AyContext ct)
{
ct.Database.ExecuteSqlCommand($"delete from aevent where aytype = {ayType} and ayid={ayId}");
- ct.Event.Add(new Event(userId, ayId, ayType, AyaEvent.Deleted, textra));
- ct.SaveChanges();
+ ct.Event.Add(new Event(userId, ayId, ayType, AyaEvent.Deleted, textra));
}
///
diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs
index 4433bde4..c3b8d57b 100644
--- a/server/AyaNova/util/Seeder.cs
+++ b/server/AyaNova/util/Seeder.cs
@@ -291,7 +291,7 @@ namespace AyaNova.Util
//Now we have all the id's can actually add them to the context
foreach (long l in WidgetsAdded)
{
- EventLogProcessor.AddEntryNoSave(new Event(1, l, AyaType.Widget, AyaEvent.Created), ct);
+ EventLogProcessor.AddEntry(new Event(1, l, AyaType.Widget, AyaEvent.Created), ct);
}
//Now save the Event Log entries