| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Threading.Tasks;
 
- using InABox.Clients;
 
- namespace InABox.Core
 
- {
 
-     public class MultiSave
 
-     {
 
-         private readonly Dictionary<Type, List<Entity>> _updates = new Dictionary<Type, List<Entity>>();
 
-         public void Clear()
 
-         {
 
-             _updates.Clear();
 
-         }
 
-         public void Add(Type type, params Entity[] entities)
 
-         {
 
-             if (!_updates.ContainsKey(type))
 
-                 _updates[type] = new List<Entity>();
 
-             _updates[type].AddRange(entities);
 
-         }
 
-         public void Save(Action<MultiSave>? callback = null, string audittrail = "")
 
-         {
 
-             var tasks = new List<Task>();
 
-             foreach (var type in _updates.Keys)
 
-             {
 
-                 var task = Task.Run(
 
-                     () =>
 
-                     {
 
-                         var client = ClientFactory.CreateClient(type);
 
-                         client.Save(_updates[type], audittrail);
 
-                     }
 
-                 );
 
-                 tasks.Add(task);
 
-             }
 
-             if (callback != null)
 
-                 Task.WhenAll(tasks.ToArray()).ContinueWith(t => { callback.Invoke(this); });
 
-             else
 
-                 Task.WaitAll(tasks.ToArray());
 
-         }
 
-     }
 
- }
 
 
  |