Browse Source

#233 added standard auditing interfaces.

pull/272/head
Halil İbrahim Kalkan 9 years ago
parent
commit
e17b9cd30f
  1. 7
      Volo.Abp.sln
  2. 21
      src/Volo.Abp.Auditing/Volo.Abp.Auditing.csproj
  3. 15
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingModule.cs
  4. 19
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAudited.cs
  5. 25
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/ICreationAudited.cs
  6. 25
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/IDeletionAudited.cs
  7. 19
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/IFullAudited.cs
  8. 15
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/IHasCreationTime.cs
  9. 16
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/IHasDeletionTime.cs
  10. 15
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/IHasModificationTime.cs
  11. 25
      src/Volo.Abp.Auditing/Volo/Abp/Auditing/IModificationAudited.cs

7
Volo.Abp.sln

@ -306,6 +306,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{F33F
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Users", "src\Volo.Abp.Users\Volo.Abp.Users.csproj", "{DAE9088E-6E30-4D5D-9DF8-2188E8D386FE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Auditing", "src\Volo.Abp.Auditing\Volo.Abp.Auditing.csproj", "{03F51721-DA51-4BAE-9909-3FC88FAB7774}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -808,6 +810,10 @@ Global
{DAE9088E-6E30-4D5D-9DF8-2188E8D386FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DAE9088E-6E30-4D5D-9DF8-2188E8D386FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DAE9088E-6E30-4D5D-9DF8-2188E8D386FE}.Release|Any CPU.Build.0 = Release|Any CPU
{03F51721-DA51-4BAE-9909-3FC88FAB7774}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03F51721-DA51-4BAE-9909-3FC88FAB7774}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03F51721-DA51-4BAE-9909-3FC88FAB7774}.Release|Any CPU.ActiveCfg = Release|Any CPU
{03F51721-DA51-4BAE-9909-3FC88FAB7774}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -957,6 +963,7 @@ Global
{EBD87D3A-8130-4FBB-9A47-4A81717BB915} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{F33F751F-1260-40C0-8F76-E3D680605662} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{DAE9088E-6E30-4D5D-9DF8-2188E8D386FE} = {4C753F64-0C93-4D65-96C2-A40893AFC1E8}
{03F51721-DA51-4BAE-9909-3FC88FAB7774} = {4C753F64-0C93-4D65-96C2-A40893AFC1E8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}

21
src/Volo.Abp.Auditing/Volo.Abp.Auditing.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.Auditing</AssemblyName>
<PackageId>Volo.Abp.Auditing</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.Core\Volo.Abp.Core.csproj" />
<ProjectReference Include="..\Volo.Abp.Data\Volo.Abp.Data.csproj" />
</ItemGroup>
</Project>

15
src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingModule.cs

@ -0,0 +1,15 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
namespace Volo.Abp.Auditing
{
[DependsOn(typeof(AbpDataModule))] //TODO: Can we remove data module dependency since it only contains ISoftDelete related to auditing module!
public class AbpAuditingModule : AbpModule
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddAssemblyOf<AbpAuditingModule>();
}
}
}

19
src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAudited.cs

@ -0,0 +1,19 @@
namespace Volo.Abp.Auditing
{
/// <summary>
/// This interface can be implemented to add standard auditing properties to a class.
/// </summary>
public interface IAudited : ICreationAudited, IModificationAudited
{
}
/// <summary>
/// Extends <see cref="IAudited"/> to add user navigation properties.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IAudited<TUser> : IAudited, ICreationAudited<TUser>, IModificationAudited<TUser>
{
}
}

25
src/Volo.Abp.Auditing/Volo/Abp/Auditing/ICreationAudited.cs

@ -0,0 +1,25 @@
namespace Volo.Abp.Auditing
{
/// <summary>
/// This interface can be implemented to store creation information (who and when created).
/// </summary>
public interface ICreationAudited : IHasCreationTime
{
/// <summary>
/// Id of the creator user.
/// </summary>
long? CreatorUserId { get; set; }
}
/// <summary>
/// Adds navigation properties to <see cref="ICreationAudited"/> interface for user.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface ICreationAudited<TUser> : ICreationAudited
{
/// <summary>
/// Reference to the creator user.
/// </summary>
TUser CreatorUser { get; set; }
}
}

25
src/Volo.Abp.Auditing/Volo/Abp/Auditing/IDeletionAudited.cs

@ -0,0 +1,25 @@
namespace Volo.Abp.Auditing
{
/// <summary>
/// This interface can be implemented to store deletion information (who delete and when deleted).
/// </summary>
public interface IDeletionAudited : IHasDeletionTime
{
/// <summary>
/// Id of the deleter user.
/// </summary>
long? DeleterUserId { get; set; }
}
/// <summary>
/// Extends <see cref="IDeletionAudited"/> to add user navigation propery.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IDeletionAudited<TUser> : IDeletionAudited
{
/// <summary>
/// Reference to the deleter user.
/// </summary>
TUser DeleterUser { get; set; }
}
}

19
src/Volo.Abp.Auditing/Volo/Abp/Auditing/IFullAudited.cs

@ -0,0 +1,19 @@
namespace Volo.Abp.Auditing
{
/// <summary>
/// This interface adds <see cref="IDeletionAudited"/> to <see cref="IAudited"/>.
/// </summary>
public interface IFullAudited : IAudited, IDeletionAudited
{
}
/// <summary>
/// Adds user navigation properties to <see cref="IFullAudited"/> interface for user.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IFullAudited<TUser> : IAudited<TUser>, IFullAudited, IDeletionAudited<TUser>
{
}
}

15
src/Volo.Abp.Auditing/Volo/Abp/Auditing/IHasCreationTime.cs

@ -0,0 +1,15 @@
using System;
namespace Volo.Abp.Auditing
{
/// <summary>
/// A standard interface to add CreationTime property.
/// </summary>
public interface IHasCreationTime
{
/// <summary>
/// Creation time.
/// </summary>
DateTime CreationTime { get; set; }
}
}

16
src/Volo.Abp.Auditing/Volo/Abp/Auditing/IHasDeletionTime.cs

@ -0,0 +1,16 @@
using System;
namespace Volo.Abp.Auditing
{
/// <summary>
/// A standard interface to add DeletionTime property to a class.
/// It also makes the class soft delete (see <see cref="ISoftDelete"/>).
/// </summary>
public interface IHasDeletionTime : ISoftDelete
{
/// <summary>
/// Deletion time.
/// </summary>
DateTime? DeletionTime { get; set; }
}
}

15
src/Volo.Abp.Auditing/Volo/Abp/Auditing/IHasModificationTime.cs

@ -0,0 +1,15 @@
using System;
namespace Volo.Abp.Auditing
{
/// <summary>
/// A standard interface to add DeletionTime property to a class.
/// </summary>
public interface IHasModificationTime
{
/// <summary>
/// The last modified time for this entity.
/// </summary>
DateTime? LastModificationTime { get; set; }
}
}

25
src/Volo.Abp.Auditing/Volo/Abp/Auditing/IModificationAudited.cs

@ -0,0 +1,25 @@
namespace Volo.Abp.Auditing
{
/// <summary>
/// This interface can be implemented to store modification information (who and when modified lastly).
/// </summary>
public interface IModificationAudited : IHasModificationTime
{
/// <summary>
/// Last modifier user for this entity.
/// </summary>
long? LastModifierUserId { get; set; }
}
/// <summary>
/// Adds navigation properties to <see cref="IModificationAudited"/> interface for a user.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IModificationAudited<TUser> : IModificationAudited
{
/// <summary>
/// Reference to the last modifier user of this entity.
/// </summary>
TUser LastModifierUser { get; set; }
}
}
Loading…
Cancel
Save