private void OnDataChange(DataChangeMessage msg) { var data = msg.Data as CommonData; if (data == null) { return; } lock (syncRoot) { if (msg.Action == DataAction.Delete) { // Clear the item from cache registry.RemoveAll(e => EntryMatches(e, data)); } else { // Update the item in cache if it is cached foreach (var entry in registry) { if (EntryMatches(entry, data)) { entry.Data.SetTarget(data); entry.Touch(); } } } } }
private void OnDataChange(DataChangeMessage msg) { var data = msg.Data as TimeEntryData; if (data == null) { return; } var isExcluded = msg.Action == DataAction.Delete || data.DeletedAt != null || data.UserId != currentUserId; var isRunning = !isExcluded && data.State == TimeEntryState.Running; var isDraft = !isExcluded && data.State == TimeEntryState.New; // Update running entries if (isRunning) { if (!runningEntries.UpdateData(data)) { runningEntries.Add(data); } } else { runningEntries.RemoveAll(e => e.Id == data.Id); } // Update draft entries if (isDraft) { if (!draftEntries.UpdateData(data)) { draftEntries.Add(data); } } else { var removed = draftEntries.RemoveAll(e => e.Id == data.Id); if (removed > 0 && draftEntries.Count < 1) { LoadNewDraft(); } } UpdateProperties(); }
private void SendMessage(DataChangeMessage message) { var bus = ServiceContainer.Resolve <MessageBus> (); bus.Send(message); }