Пример #1
0
        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();
                        }
                    }
                }
            }
        }
Пример #2
0
        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();
        }
Пример #3
0
        private void SendMessage(DataChangeMessage message)
        {
            var bus = ServiceContainer.Resolve <MessageBus> ();

            bus.Send(message);
        }