Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string UserName = System.Web.HttpContext.Current.User.Identity.Name
- public interface IAuditable{
- DateTime CreateDate{get;set;}
- string UserName{get;set;}
- }
- public class MyEntity:IAuditable{
- public int ID{get;set;}
- public string Name{get;set;}
- public string Information{get;set;}
- }
- public static class Auditor{
- public static IAuditable Stamp(IAuditable model){
- model.CreateDate=DateTime.UtcNow;
- model.CreatedBy=System.Web.HttpContext.Current.User.Identity.Name;
- return model;
- }
- }
- public sealed class MyService:IDisposable{
- MyDb db=new MyDb();
- public async Task<int> Create(MyEntity model){
- Auditor.Stamp(model);
- db.MyEntities.Add(model);
- return await db.SaveAsync();
- }
- public void Dispose(){
- db.Dispose();
- }
- }
- [HttpPost]
- [ValidateAntiForgeryToken]
- public async Task<IActionResult> Create(MyEntity model)
- {
- await service.Create(model);
- return RedirectToAction("Index")
- }
- public class UserResolverService
- {
- private readonly IHttpContextAccessor _context;
- public UserResolverService(IHttpContextAccessor context)
- {
- _context = context;
- }
- public string GetUser()
- {
- return await _context.HttpContext.User?.Identity?.Name;
- }
- }
- public interface IAuditor {
- IAuditable Stamp(IAuditable model);
- }
- public class Auditor : IAuditor {
- private readonly IHttpContextAccessor accessor;
- public Auditor(IHttpContextAccessor accessor) {
- this.accessor = accessor;
- }
- public IAuditable Stamp(IAuditable model){
- model.CreateDate = DateTime.UtcNow;
- model.CreatedBy = accessor.HttpContext.User?.Identity?.Name;
- return model;
- }
- }
- public sealed class MyService:IDisposable {
- MyDb db = new MyDb();
- private readonly IAuditor auditor;
- public MyService(IAuditor auditor) {
- this.auditor = auditor;
- }
- public async Task<int> Create(MyEntity model) {
- auditor.Stamp(model);
- db.MyEntities.Add(model);
- return await db.SaveAsync();
- }
- public void Dispose() {
- db.Dispose();
- }
- }
- public static IServiceCollection AddMyLibrary(this IServiceCollection services) {
- services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
- services.AddSingleton<IAuditor, Auditor>();
- services.AddScoped<IMyService, MyService>();
- //...add other services as needed
- return services.
- }
- public void ConfigureServices(IServiceCollection services) {
- //...
- services.AddMyLibrary();
- //...
- }
Add Comment
Please, Sign In to add comment