| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- using System.Linq;
 
- using Comal.Classes;
 
- using InABox.Core;
 
- using System;
 
- namespace Comal.Stores
 
- {
 
-     public class StockLocationStore : BaseStore<StockLocation>
 
-     {
 
-         protected override void BeforeSave(StockLocation entity)
 
-         {
 
-             base.BeforeSave(entity);
 
-             // If the Warehouse is not set, use the default one
 
-             if (!entity.Warehouse.IsValid())
 
-             {
 
-                 var warehouseid = Provider.Query(
 
-                     new Filter<StockWarehouse>(x => x.Default).IsEqualTo(true),
 
-                     Columns.None<StockWarehouse>().Add(x => x.ID)
 
-                 ).Rows.Select(r => r.Get<StockWarehouse, Guid>(c => c.ID)).FirstOrDefault();
 
-                 entity.Warehouse.ID = warehouseid;
 
-             }
 
-             // Try to make sure that there is one and one only default location for the warehouse
 
-             var otherdefaults = Provider.Query(
 
-                 new Filter<StockLocation>(x => x.ID).IsNotEqualTo(entity.ID).And(x => x.Warehouse.ID).IsEqualTo(entity.Warehouse.ID)
 
-                     .And(x => x.Default)
 
-                     .IsEqualTo(true),
 
-                 Columns.None<StockLocation>().Add(x => x.ID, x => x.Default)
 
-             ).Rows.Select(x => x.ToObject<StockLocation>()).ToArray();
 
-             if (!entity.Default)
 
-                 if (!otherdefaults.Any())
 
-                     entity.Default = true;
 
-             if (entity.Default)
 
-             {
 
-                 entity.Active = true;
 
-                 foreach (var otherdefault in otherdefaults)
 
-                     otherdefault.Default = false;
 
-                 Provider.Save(otherdefaults);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |