| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | using System.Collections.Concurrent;using System.Collections.Generic;using System.Linq;using Comal.Classes;using InABox.Core;using System;namespace Comal.Stores{    internal class ModuleTrackingStore : BaseStore<ModuleTracking>    {        private static readonly ConcurrentBag<ModuleTracking> _cache = new();        protected override void BeforeSave(ModuleTracking entity)        {            base.BeforeSave(entity);            var tracking = _cache.FirstOrDefault(x =>                Equals(x.User.ID, entity.User.ID) && string.Equals(x.Module, entity.Module) && DateTime.Equals(x.Date, entity.Date));            if (tracking == null)            {                tracking = Provider.Load(                    new Filter<ModuleTracking>(x => x.User.ID).IsEqualTo(entity.User.ID)                        .And(x => x.Module).IsEqualTo(entity.Module)                        .And(x => x.Date).IsEqualTo(entity.Date)                ).FirstOrDefault();                if (tracking != null)                    _cache.Add(tracking);            }            if (tracking == null)            {                tracking = entity;                _cache.Add(tracking);            }            else            {                tracking.ActiveTime += entity.ActiveTime;                tracking.IdleTime += entity.IdleTime;                tracking.Clicks += entity.Clicks;                tracking.Keys += entity.Keys;            }            Provider.Save(tracking);        }        protected override void OnSave(ModuleTracking entity, ref string auditnote)        {            // Consolidated Saving happend in BeforeSave - nothing to see here            //base.OnSave(entity);        }        protected override void OnSave(ModuleTracking[] entities, ref string auditnote)        {            //base.OnSave(entities);        }    }}
 |