Merge pull request #87 from fileman/SoftDeletable

Add basic support for SoftDeletable
This commit is contained in:
Shaun Walker 2019-09-28 16:35:32 -04:00 committed by GitHub
commit f1b1b90bd1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 0 deletions

View File

@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Oqtane.Models;
using Oqtane.Shared;
using System;
using System.Linq;
@ -70,6 +71,22 @@ namespace Oqtane.Repository
item.CurrentValues[nameof(IAuditable.ModifiedBy)] = username;
item.CurrentValues[nameof(IAuditable.ModifiedOn)] = date;
}
if (item.Entity is IDeletable deleted && item.State != EntityState.Added)
{
if ((bool)item.CurrentValues[nameof(IDeletable.IsDeleted)]
&& !item.GetDatabaseValues().GetValue<bool>(nameof(IDeletable.IsDeleted)))
{
item.CurrentValues[nameof(IDeletable.DeletedBy)] = username;
item.CurrentValues[nameof(IDeletable.DeletedOn)] = date;
}
else if (!(bool)item.CurrentValues[nameof(IDeletable.IsDeleted)]
&& item.GetDatabaseValues().GetValue<bool>(nameof(IDeletable.IsDeleted)))
{
item.CurrentValues[nameof(IDeletable.DeletedBy)] = null;
item.CurrentValues[nameof(IDeletable.DeletedOn)] = null;
}
}
}
return base.SaveChanges();

View File

@ -0,0 +1,11 @@
using System;
namespace Oqtane.Shared
{
public interface IDeletable
{
string DeletedBy { get; set; }
DateTime? DeletedOn { get; set; }
bool IsDeleted { get; set; }
}
}