Browse Source

#233 Created audited entities.

pull/272/head
Halil İbrahim Kalkan 9 years ago
parent
commit
2339fab337
  1. 2
      src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj
  2. 2
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs
  3. 13
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/AggregateRoot.cs
  4. 32
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRoot.cs
  5. 36
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRootWithUser.cs
  6. 32
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedEntity.cs
  7. 36
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedEntityWithUser.cs
  8. 32
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRoot.cs
  9. 28
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRootWithUser.cs
  10. 32
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntity.cs
  11. 28
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntityWithUser.cs
  12. 38
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedAggregateRoot.cs
  13. 42
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedAggregateRootWithUser.cs
  14. 38
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntity.cs
  15. 42
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntityWithUser.cs
  16. 2
      src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Entity.cs

2
src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj

@ -14,7 +14,7 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.Core\Volo.Abp.Core.csproj" />
<ProjectReference Include="..\Volo.Abp.Auditing\Volo.Abp.Auditing.csproj" />
<ProjectReference Include="..\Volo.Abp.Data\Volo.Abp.Data.csproj" />
<ProjectReference Include="..\Volo.Abp.EventBus\Volo.Abp.EventBus.csproj" />
<ProjectReference Include="..\Volo.Abp.Guids\Volo.Abp.Guids.csproj" />

2
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Auditing;
using Volo.Abp.Data;
using Volo.Abp.EventBus;
using Volo.Abp.Guids;
@ -11,6 +12,7 @@ using Volo.Abp.Uow;
namespace Volo.Abp.Domain
{
[DependsOn(
typeof(AbpAuditingModule),
typeof(AbpDataModule),
typeof(AbpEventBusModule),
typeof(AbpGuidsModule),

13
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/AggregateRoot.cs

@ -1,22 +1,23 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations.Schema;
namespace Volo.Abp.Domain.Entities
{
/// <inheritdoc cref="IAggregateRoot" />
public abstract class AggregateRoot : IAggregateRoot
[Serializable]
public abstract class AggregateRoot : Entity, IAggregateRoot
{
[NotMapped] //TODO: Better to handle in EF Core layer?
[NotMapped] //TODO: Better to handle in EF Core layer, or just use get/set methods instead of a property?
public virtual ICollection<object> DomainEvents => _domainEvents ?? (_domainEvents = new Collection<object>());
private ICollection<object> _domainEvents;
}
/// <inheritdoc cref="IAggregateRoot{TKey}" />
[Serializable]
public abstract class AggregateRoot<TKey> : Entity<TKey>, IAggregateRoot<TKey>
{
[NotMapped] //TODO: Better to handle in EF Core layer?
[NotMapped] //TODO: Better to handle in EF Core layer, or just use get/set methods instead of a property??
public virtual ICollection<object> DomainEvents => _domainEvents ?? (_domainEvents = new Collection<object>());
private ICollection<object> _domainEvents;

32
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRoot.cs

@ -0,0 +1,32 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited"/> for aggregate roots.
/// </summary>
[Serializable]
public abstract class AuditedAggregateRoot : CreationAuditedAggregateRoot, IAudited
{
/// <inheritdoc />
public virtual DateTime? LastModificationTime { get; set; }
/// <inheritdoc />
public virtual long? LastModifierUserId { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited"/> for aggregate roots.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class AuditedAggregateRoot<TPrimaryKey> : CreationAuditedAggregateRoot<TPrimaryKey>, IAudited
{
/// <inheritdoc />
public virtual DateTime? LastModificationTime { get; set; }
/// <inheritdoc />
public virtual long? LastModifierUserId { get; set; }
}
}

36
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRootWithUser.cs

@ -0,0 +1,36 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited{TUser}"/> for aggregate roots.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class AuditedAggregateRootWithUser<TUser> : AuditedAggregateRoot, IAudited<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
public virtual TUser CreatorUser { get; set; }
/// <inheritdoc />
public virtual TUser LastModifierUser { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited{TUser}"/> for aggregate roots.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class AuditedAggregateRootWithUser<TPrimaryKey, TUser> : AuditedAggregateRoot<TPrimaryKey>, IAudited<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
public virtual TUser CreatorUser { get; set; }
/// <inheritdoc />
public virtual TUser LastModifierUser { get; set; }
}
}

32
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedEntity.cs

@ -0,0 +1,32 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited"/>.
/// </summary>
[Serializable]
public abstract class AuditedEntity : CreationAuditedEntity, IAudited
{
/// <inheritdoc />
public virtual DateTime? LastModificationTime { get; set; }
/// <inheritdoc />
public virtual long? LastModifierUserId { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited"/>.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class AuditedEntity<TPrimaryKey> : CreationAuditedEntity<TPrimaryKey>, IAudited
{
/// <inheritdoc />
public virtual DateTime? LastModificationTime { get; set; }
/// <inheritdoc />
public virtual long? LastModifierUserId { get; set; }
}
}

36
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedEntityWithUser.cs

@ -0,0 +1,36 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited{TUser}"/>.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class AuditedEntityWithUser<TUser> : AuditedEntity, IAudited<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
public virtual TUser CreatorUser { get; set; }
/// <inheritdoc />
public virtual TUser LastModifierUser { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited{TUser}"/>.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class AuditedEntityWithUser<TPrimaryKey, TUser> : AuditedEntity<TPrimaryKey>, IAudited<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
public virtual TUser CreatorUser { get; set; }
/// <inheritdoc />
public virtual TUser LastModifierUser { get; set; }
}
}

32
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRoot.cs

@ -0,0 +1,32 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited"/> for aggregate roots.
/// </summary>
[Serializable]
public abstract class CreationAuditedAggregateRoot : AggregateRoot, ICreationAudited
{
/// <inheritdoc />
public virtual DateTime CreationTime { get; set; }
/// <inheritdoc />
public virtual long? CreatorUserId { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited"/> for aggregate roots.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class CreationAuditedAggregateRoot<TPrimaryKey> : AggregateRoot<TPrimaryKey>, ICreationAudited
{
/// <inheritdoc />
public virtual DateTime CreationTime { get; set; }
/// <inheritdoc />
public virtual long? CreatorUserId { get; set; }
}
}

28
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRootWithUser.cs

@ -0,0 +1,28 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited{TUser}"/> for aggregate roots.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class CreationAuditedAggregateRootWithUser<TUser> : CreationAuditedAggregateRoot, ICreationAudited<TUser>
{
/// <inheritdoc />
public virtual TUser CreatorUser { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited{TUser}"/> for aggregate roots.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class CreationAuditedAggregateRootWithUser<TPrimaryKey, TUser> : CreationAuditedAggregateRoot<TPrimaryKey>, ICreationAudited<TUser>
{
/// <inheritdoc />
public virtual TUser CreatorUser { get; set; }
}
}

32
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntity.cs

@ -0,0 +1,32 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="T:Volo.Abp.Auditing.ICreationAudited" /> for an entity.
/// </summary>
[Serializable]
public abstract class CreationAuditedEntity : Entity, ICreationAudited
{
/// <inheritdoc />
public virtual DateTime CreationTime { get; set; }
/// <inheritdoc />
public virtual long? CreatorUserId { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited"/> for an entity.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class CreationAuditedEntity<TPrimaryKey> : Entity<TPrimaryKey>, ICreationAudited
{
/// <inheritdoc />
public virtual DateTime CreationTime { get; set; }
/// <inheritdoc />
public virtual long? CreatorUserId { get; set; }
}
}

28
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntityWithUser.cs

@ -0,0 +1,28 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited{TUser}"/>.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class CreationAuditedEntityWithUser<TUser> : CreationAuditedEntity, ICreationAudited<TUser>
{
/// <inheritdoc />
public virtual TUser CreatorUser { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited{TUser}"/>.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class CreationAuditedEntityWithUser<TPrimaryKey, TUser> : CreationAuditedEntity<TPrimaryKey>, ICreationAudited<TUser>
{
/// <inheritdoc />
public virtual TUser CreatorUser { get; set; }
}
}

38
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedAggregateRoot.cs

@ -0,0 +1,38 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// Implements <see cref="IFullAudited"/> to be a base class for full-audited aggregate roots.
/// </summary>
[Serializable]
public abstract class FullAuditedAggregateRoot : AuditedAggregateRoot, IFullAudited
{
/// <inheritdoc />
public virtual bool IsDeleted { get; set; }
/// <inheritdoc />
public virtual long? DeleterUserId { get; set; }
/// <inheritdoc />
public virtual DateTime? DeletionTime { get; set; }
}
/// <summary>
/// Implements <see cref="IFullAudited"/> to be a base class for full-audited aggregate roots.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class FullAuditedAggregateRoot<TPrimaryKey> : AuditedAggregateRoot<TPrimaryKey>, IFullAudited
{
/// <inheritdoc />
public virtual bool IsDeleted { get; set; }
/// <inheritdoc />
public virtual long? DeleterUserId { get; set; }
/// <inheritdoc />
public virtual DateTime? DeletionTime { get; set; }
}
}

42
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedAggregateRootWithUser.cs

@ -0,0 +1,42 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// Implements <see cref="IFullAudited{TUser}"/> to be a base class for full-audited aggregate roots.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class FullAuditedAggregateRootWithUser<TUser> : FullAuditedAggregateRoot, IFullAudited<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
public virtual TUser DeleterUser { get; set; }
/// <inheritdoc />
public TUser CreatorUser { get; set; }
/// <inheritdoc />
public TUser LastModifierUser { get; set; }
}
/// <summary>
/// Implements <see cref="IFullAudited{TUser}"/> to be a base class for full-audited aggregate roots.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class FullAuditedAggregateRootWithUser<TPrimaryKey, TUser> : FullAuditedAggregateRoot<TPrimaryKey>, IFullAudited<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
public virtual TUser DeleterUser { get; set; }
/// <inheritdoc />
public TUser CreatorUser { get; set; }
/// <inheritdoc />
public TUser LastModifierUser { get; set; }
}
}

38
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntity.cs

@ -0,0 +1,38 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// Implements <see cref="IFullAudited"/> to be a base class for full-audited entities.
/// </summary>
[Serializable]
public abstract class FullAuditedEntity : AuditedEntity, IFullAudited
{
/// <inheritdoc />
public virtual bool IsDeleted { get; set; }
/// <inheritdoc />
public virtual long? DeleterUserId { get; set; }
/// <inheritdoc />
public virtual DateTime? DeletionTime { get; set; }
}
/// <summary>
/// Implements <see cref="IFullAudited"/> to be a base class for full-audited entities.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class FullAuditedEntity<TPrimaryKey> : AuditedEntity<TPrimaryKey>, IFullAudited
{
/// <inheritdoc />
public virtual bool IsDeleted { get; set; }
/// <inheritdoc />
public virtual long? DeleterUserId { get; set; }
/// <inheritdoc />
public virtual DateTime? DeletionTime { get; set; }
}
}

42
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntityWithUser.cs

@ -0,0 +1,42 @@
using System;
using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// Implements <see cref="IFullAudited{TUser}"/> to be a base class for full-audited entities.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class FullAuditedEntityWithUser<TUser> : FullAuditedEntity, IFullAudited<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
public virtual TUser DeleterUser { get; set; }
/// <inheritdoc />
public TUser CreatorUser { get; set; }
/// <inheritdoc />
public TUser LastModifierUser { get; set; }
}
/// <summary>
/// Implements <see cref="IFullAudited{TUser}"/> to be a base class for full-audited entities.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class FullAuditedEntityWithUser<TPrimaryKey, TUser> : FullAuditedEntity<TPrimaryKey>, IFullAudited<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
public virtual TUser DeleterUser { get; set; }
/// <inheritdoc />
public TUser CreatorUser { get; set; }
/// <inheritdoc />
public TUser LastModifierUser { get; set; }
}
}

2
src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Entity.cs

@ -5,6 +5,7 @@ using Volo.Abp.MultiTenancy;
namespace Volo.Abp.Domain.Entities
{
/// <inheritdoc/>
[Serializable]
public abstract class Entity : IEntity
{
/// <inheritdoc/>
@ -15,6 +16,7 @@ namespace Volo.Abp.Domain.Entities
}
/// <inheritdoc cref="IEntity{TKey}" />
[Serializable]
public abstract class Entity<TKey> : Entity, IEntity<TKey>
{
/// <inheritdoc/>

Loading…
Cancel
Save