1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.Linq;
- using Comal.Classes;
- using InABox.Core;
- 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(IEnumerable<ModuleTracking> entities, ref string auditnote)
- {
- //base.OnSave(entities);
- }
- }
- }
|