Browse Source

Added hardcoded filtering to CoreRepositories

Frank van den Bos 1 year ago
parent
commit
c7e38755e3

+ 7 - 4
InABox.Mobile/InABox.Mobile.Shared/DataModels/CoreRepository.cs

@@ -51,7 +51,9 @@ namespace InABox.Mobile
     {
         readonly MultiQuery _query = new();
         
-        protected Func<Filter<TEntity>> BaseFilter { get; set; }
+        protected Func<Filter<TEntity>> Filter { get; set; }
+
+        protected virtual Filter<TEntity> BaseFilter() => null;
         
         public IModelHost Host { get; set; }
         
@@ -60,7 +62,7 @@ namespace InABox.Mobile
         public String FileName { get; set; }
 
         
-        protected CoreRepository(IModelHost host, Func<Filter<TEntity>> baseFilter)
+        protected CoreRepository(IModelHost host, Func<Filter<TEntity>> filter)
         {
             _items = new CoreObservableCollection<TItem>();   
             BindingBase.EnableCollectionSynchronization(_items, null, 
@@ -75,7 +77,7 @@ namespace InABox.Mobile
             
             Reset();
             Host = host;
-            BaseFilter = baseFilter;
+            Filter = filter;
         }
         
         #region INotifyPropertyChanged
@@ -140,7 +142,8 @@ namespace InABox.Mobile
         protected Filter<TEntity> EffectiveFilter()
         {
             var filters = new Filters<TEntity>();
-            filters.Add(BaseFilter?.Invoke());
+            filters.Add(BaseFilter());
+            filters.Add(Filter?.Invoke());
             filters.Add(SelectedFilter);
             var result = filters.Combine();
             return result;

+ 2 - 1
InABox.Mobile/InABox.Mobile.Shared/DataModels/Shell.cs

@@ -51,7 +51,8 @@ namespace InABox.Mobile
 
         public virtual void Save(string auditmessage)
         {
-            new Client<TEntity>().Save(_entity, auditmessage);
+            if (_entity != null)
+                new Client<TEntity>().Save(_entity, auditmessage);
         }
 
         public void Cancel()