Create Audits on Actions
This commit is contained in:
40
FoodsharingSiegen.Server/Data/AuditHelper.cs
Normal file
40
FoodsharingSiegen.Server/Data/AuditHelper.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using FoodsharingSiegen.Contracts.Entity;
|
||||
|
||||
namespace FoodsharingSiegen.Server.Data
|
||||
{
|
||||
public static class AuditHelper
|
||||
{
|
||||
public static string CreateText(Audit audit)
|
||||
{
|
||||
switch (audit.Type)
|
||||
{
|
||||
case AuditType.SaveProfile:
|
||||
return "hat das eigene Profil gespeichert.";
|
||||
case AuditType.SetOwnPassword:
|
||||
return "hat das eigene Passwort geändert.";
|
||||
case AuditType.CreateUser:
|
||||
return $"hat den User {audit.Data1} erstellt.";
|
||||
case AuditType.UpdateUser:
|
||||
return $"hat den User {audit.Data1} gespeichert.";
|
||||
case AuditType.RemoveUser:
|
||||
return $"hat den User {audit.Data1} gelöscht.";
|
||||
case AuditType.SetUserPassword:
|
||||
return $"hat das Passwort von {audit.Data1} geändert.";
|
||||
case AuditType.CreateProspect:
|
||||
return $"hat den Neuling {audit.Data1} erstellt.";
|
||||
case AuditType.EditProspect:
|
||||
return $"hat den Neuling {audit.Data1} bearbeitet.";
|
||||
case AuditType.AddInteraction:
|
||||
return $"hat dem Neuling {audit.Data1} folgendes hinzugefügt: {audit.Data2}";
|
||||
case AuditType.RemoveInteraction:
|
||||
return $"hat eine Interaktion bei {audit.Data1} gelöscht.";
|
||||
break;
|
||||
case AuditType.None:
|
||||
default:
|
||||
return $"{audit.Data1}, {audit.Data2}";
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using FoodsharingSiegen.Contracts;
|
||||
using FoodsharingSiegen.Contracts.Entity;
|
||||
using FoodsharingSiegen.Server.Auth;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace FoodsharingSiegen.Server.Data.Service
|
||||
{
|
||||
@@ -36,6 +37,7 @@ namespace FoodsharingSiegen.Server.Data.Service
|
||||
{
|
||||
var audit = new Audit
|
||||
{
|
||||
Created = DateTime.Now,
|
||||
Type = type,
|
||||
UserID = CurrentUser?.Id,
|
||||
Data1 = data1,
|
||||
@@ -66,11 +68,11 @@ namespace FoodsharingSiegen.Server.Data.Service
|
||||
/// <param name="count">The count</param>
|
||||
/// <param name="type">The type</param>
|
||||
/// <returns>A task containing an operation result of list audit</returns>
|
||||
public async Task<OperationResult<List<Audit>>> Load(int count, AuditType? type)
|
||||
public async Task<OperationResult<List<Audit>>> Load(int count, AuditType? type = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var query = Context.Audits?.OrderBy(x => x.Created).AsQueryable();
|
||||
var query = Context.Audits?.Include(x => x.User).OrderByDescending(x => x.Created).AsQueryable();
|
||||
|
||||
if (count > 0)
|
||||
query = query?.Take(count);
|
||||
|
||||
@@ -46,6 +46,8 @@ namespace FoodsharingSiegen.Server.Data.Service
|
||||
|
||||
await Context.SaveChangesAsync();
|
||||
|
||||
await AuditService.Insert(AuditType.AddInteraction, targetProspect.Name, interaction.Type.ToString());
|
||||
|
||||
// Detatch entities
|
||||
Context.Entry(targetProspect).State = EntityState.Detached;
|
||||
Context.Entry(interaction).State = EntityState.Detached;
|
||||
@@ -130,6 +132,8 @@ namespace FoodsharingSiegen.Server.Data.Service
|
||||
Context.Interactions.Remove(new Interaction { Id = interactionId });
|
||||
await Context.SaveChangesAsync();
|
||||
|
||||
await AuditService.Insert(AuditType.RemoveInteraction, "?");
|
||||
|
||||
return new OperationResult();
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -161,6 +165,8 @@ namespace FoodsharingSiegen.Server.Data.Service
|
||||
var saveR = await Context.SaveChangesAsync();
|
||||
|
||||
if(saveR < 1) return new OperationResult(new Exception("Fehler beim speichern"));
|
||||
|
||||
await AuditService.Insert(AuditType.EditProspect, prospect.Name);
|
||||
return new OperationResult();
|
||||
}
|
||||
catch (Exception e)
|
||||
|
||||
Reference in New Issue
Block a user