This commit is contained in:
2018-08-28 23:25:50 +00:00
parent 78ce79fc5c
commit 6374b386d6
11 changed files with 70 additions and 65 deletions

View File

@@ -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 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 - Make sure trial generated data generates log events so that we can properly test with huge dataset
- Test with huge dataset - Test with huge dataset
- Remove CREATED from all objects now that event log tracks it - Remove CREATED from all objects now that event log tracks it

View File

@@ -239,8 +239,8 @@ namespace AyaNova.Api.Controllers
}); });
//Log //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); FileUtil.deleteFileAttachment(dbObj, ct);
//Log //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(); return NoContent();
} }
@@ -385,8 +385,8 @@ namespace AyaNova.Api.Controllers
} }
//Log //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); return PhysicalFile(filePath, mimetype, dbObj.DisplayFileName);
} }

View File

@@ -127,7 +127,8 @@ namespace AyaNova.Api.Controllers
} }
var ret = AyaNova.Core.License.LicenseInfoAsJson; var ret = AyaNova.Core.License.LicenseInfoAsJson;
//Log //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)); return Ok(new ApiOkResponse(ret));
} }
@@ -179,7 +180,8 @@ namespace AyaNova.Api.Controllers
var ret = Core.License.RequestTrial(requestData.EmailAddress, requestData.RegisteredTo, log); var ret = Core.License.RequestTrial(requestData.EmailAddress, requestData.RegisteredTo, log);
//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)); return Ok(new ApiOkResponse(ret));
} }

View File

@@ -159,11 +159,12 @@ namespace AyaNova.Api.Controllers
} }
else else
{ {
//save and success return //save to get Id
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
//Log //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)); return CreatedAtAction("GetLocale", new { id = o.Id }, new ApiCreatedResponse(o));
} }
@@ -221,6 +222,9 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
//Log
EventLogProcessor.AddEntry(new Event(biz.userId, oDbParent.Id, AyaType.Locale, AyaEvent.Modified), ct);
try try
{ {
await ct.SaveChangesAsync(); 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 })); return Ok(new ApiOkResponse(new { ConcurrencyToken = oFromDb.ConcurrencyToken }));
} }
@@ -290,6 +292,9 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
//Log
EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Locale, AyaEvent.Modified), ct);
try try
{ {
await ct.SaveChangesAsync(); 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 })); return Ok(new ApiOkResponse(new { ConcurrencyToken = oFromDb.ConcurrencyToken }));
} }
@@ -360,13 +362,14 @@ namespace AyaNova.Api.Controllers
{ {
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
//Log
EventLogProcessor.DeleteObject(biz.userId, AyaType.Locale, dbObj.Id, dbObj.Name, ct);
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
//Delete children / attached objects //Delete children / attached objects
// biz.DeleteChildren(dbObj); // biz.DeleteChildren(dbObj);
//Log
EventLogProcessor.DeleteObject(biz.userId, AyaType.Locale, dbObj.Id, dbObj.Name, ct);
return NoContent(); return NoContent();
} }

View File

@@ -68,7 +68,8 @@ namespace AyaNova.Api.Controllers
string sResult = await GetTheMetrics("plain"); string sResult = await GetTheMetrics("plain");
//Log //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); return Content(sResult);
} }
@@ -95,12 +96,13 @@ namespace AyaNova.Api.Controllers
return StatusCode(401, new ApiNotAuthorizedResponse()); return StatusCode(401, new ApiNotAuthorizedResponse());
} }
string sResult = await GetTheMetrics("json"); string sResult = await GetTheMetrics("json");
JObject json = JObject.Parse(sResult); JObject json = JObject.Parse(sResult);
//Log //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 Ok(new ApiOkResponse(json)); return Ok(new ApiOkResponse(json));
} }

View File

@@ -95,8 +95,9 @@ namespace AyaNova.Api.Controllers
serverState.SetState(desiredState, state.Reason); serverState.SetState(desiredState, state.Reason);
//Log //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(); return NoContent();
} }

View File

@@ -166,11 +166,12 @@ namespace AyaNova.Api.Controllers
} }
else else
{ {
//save and success return //save and get ID for log then success return
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
//Log //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)); return CreatedAtAction("GetTag", new { id = o.Id }, new ApiCreatedResponse(o));
} }
@@ -221,6 +222,9 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
//Log
EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Tag, AyaEvent.Modified), ct);
try try
{ {
await ct.SaveChangesAsync(); 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 })); return Ok(new ApiOkResponse(new { ConcurrencyToken = oFromDb.ConcurrencyToken }));
} }
@@ -292,6 +294,9 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
//Log
EventLogProcessor.AddEntry(new Event(biz.userId, oFromDb.Id, AyaType.Tag, AyaEvent.Modified), ct);
try try
{ {
await ct.SaveChangesAsync(); 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 })); return Ok(new ApiOkResponse(new { ConcurrencyToken = oFromDb.ConcurrencyToken }));
} }
@@ -354,11 +356,11 @@ namespace AyaNova.Api.Controllers
{ {
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
await ct.SaveChangesAsync();
//Log //Log
EventLogProcessor.DeleteObject(biz.userId, AyaType.Tag, dbObj.Id, dbObj.Name, ct); EventLogProcessor.DeleteObject(biz.userId, AyaType.Tag, dbObj.Id, dbObj.Name, ct);
await ct.SaveChangesAsync();
return NoContent(); return NoContent();
} }

View File

@@ -86,18 +86,20 @@ namespace AyaNova.Api.Controllers
JObject o = JObject.FromObject(new JObject o = JObject.FromObject(new
{ {
seedLevel = seedLevel seedLevel = seedLevel
}); });
OpsJob j = new OpsJob(); OpsJob j = new OpsJob();
j.Name = $"Seed test data (size={size})"; j.Name = $"Seed test data (size={size})";
j.JobType = JobType.SeedTestData; 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(); j.JobInfo = o.ToString();
JobsBiz.AddJob(j, ct); JobsBiz.AddJob(j, ct);
//Log //Log
//EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.TrialSeeder, AyaEvent.Created,size), ct); 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 return Accepted(new { JobId = j.GId });//202 accepted

View File

@@ -86,8 +86,8 @@ namespace AyaNova.Api.Controllers
} }
//Log //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)); return Ok(new ApiOkResponse(o));
} }
@@ -217,7 +217,7 @@ namespace AyaNova.Api.Controllers
try try
{ {
//Log //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(); await ct.SaveChangesAsync();
} }
catch (DbUpdateConcurrencyException) catch (DbUpdateConcurrencyException)
@@ -293,7 +293,7 @@ namespace AyaNova.Api.Controllers
try try
{ {
//Log //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(); await ct.SaveChangesAsync();
} }
catch (DbUpdateConcurrencyException) catch (DbUpdateConcurrencyException)
@@ -355,13 +355,15 @@ namespace AyaNova.Api.Controllers
} }
else else
{ {
//Log
EventLogProcessor.AddEntryNoSave(new Event(biz.userId, o.Id, AyaType.Widget, AyaEvent.Created), ct); //save to get Id
//save and success return
await ct.SaveChangesAsync(); 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)); return CreatedAtAction("GetWidget", new { id = o.Id }, new ApiCreatedResponse(o));
} }
} }
@@ -409,13 +411,15 @@ namespace AyaNova.Api.Controllers
{ {
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
//Log
EventLogProcessor.DeleteObject(biz.userId, AyaType.Widget, dbObj.Id, dbObj.Name, ct);
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
//Delete children / attached objects //Delete children / attached objects
biz.DeleteChildren(dbObj); biz.DeleteChildren(dbObj);
//Log
EventLogProcessor.DeleteObject(biz.userId, AyaType.Widget, dbObj.Id, dbObj.Name, ct);
return NoContent(); return NoContent();
} }

View File

@@ -22,23 +22,12 @@ namespace AyaNova.Biz
/// <param name="newEvent"></param> /// <param name="newEvent"></param>
/// <param name="ct"></param> /// <param name="ct"></param>
/// <returns></returns> /// <returns></returns>
internal static void AddEntryNoSave(Event newEvent, AyContext ct) internal static void AddEntry(Event newEvent, AyContext ct)
{ {
ct.Event.Add(newEvent); ct.Event.Add(newEvent);
} }
/// <summary>
/// Add and SAVE entry to the log
/// </summary>
/// <param name="newEvent"></param>
/// <param name="ct"></param>
/// <returns></returns>
internal static void AddEntryAndSave(Event newEvent, AyContext ct)
{
ct.Event.Add(newEvent);
ct.SaveChanges();
}
/// <summary> /// <summary>
/// Handle delete /// Handle delete
@@ -52,8 +41,7 @@ namespace AyaNova.Biz
internal static void DeleteObject(long userId, AyaType ayType, long ayId, string textra, AyContext ct) 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.Database.ExecuteSqlCommand($"delete from aevent where aytype = {ayType} and ayid={ayId}");
ct.Event.Add(new Event(userId, ayId, ayType, AyaEvent.Deleted, textra)); ct.Event.Add(new Event(userId, ayId, ayType, AyaEvent.Deleted, textra));
ct.SaveChanges();
} }
/// <summary> /// <summary>

View File

@@ -291,7 +291,7 @@ namespace AyaNova.Util
//Now we have all the id's can actually add them to the context //Now we have all the id's can actually add them to the context
foreach (long l in WidgetsAdded) 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 //Now save the Event Log entries