private IQueryable <T> SoftDeleteQueryFilter(IQueryable <T> query, DeleteStatusEnum deleteStatus)
        {
            if (deleteStatus == DeleteStatusEnum.NotDeleted)
            {
                query = query.Where(x => !x.IsDeleted);
            }
            else if (deleteStatus == DeleteStatusEnum.Deleted)
            {
                query = query.Where(x => x.IsDeleted);
            }

            return(query);
        }
 public virtual async Task <T> GetById(object id, DeleteStatusEnum deleteStatus = DeleteStatusEnum.NotDeleted)
 {
     return(await this.DbSet.FindAsync(id));
 }
        public virtual async Task <IEnumerable <T> > GetAll(DeleteStatusEnum deleteStatus = DeleteStatusEnum.NotDeleted)
        {
            var query = this.DbSet.AsQueryable();

            return(await SoftDeleteQueryFilter(query, deleteStatus).ToListAsync());
        }
        public virtual async Task <IList <T> > Find(Expression <Func <T, bool> > where, DeleteStatusEnum deleteStatus = DeleteStatusEnum.NotDeleted)
        {
            var query = this.DbSet.Where(where);

            return(await SoftDeleteQueryFilter(query, deleteStatus).ToListAsync());
        }