private void OnExpenseClaimUpdated(ExpenseClaimUpdated message)
        {
            foreach (var group in _groups)
            {
                for (int i = 0; i < group.Items.Count; i++)
                {
                    if (group.Items[i].RefNbr == message.ExpenseClaim.RefNbr)
                    {
                        if (message.ExpenseClaim.Status == group.GroupTitle)
                        {
                            // Same status, just swap item
                            group.Items[i] = message.ExpenseClaim;
                        }
                        else
                        {
                            // Different status, need to re-insert in another group
                            group.Items.RemoveAt(i);
                            AddExpenseClaimToGroup(message.ExpenseClaim.Status, message.ExpenseClaim);
                        }

                        return;
                    }
                }
            }

            AddExpenseClaimToGroup(message.ExpenseClaim.Status, message.ExpenseClaim);
        }
        private void OnExpenseClaimUpdated(ExpenseClaimUpdated message)
        {
            // Check if item is already in the list
            for (int i = 0; i < _items.Count; i++)
            {
                if (_items[i].RefNbr == message.ExpenseClaim.RefNbr)
                {
                    if (_items[i].Status == message.ExpenseClaim.Status)
                    {
                        _items[i] = message.ExpenseClaim;
                    }
                    else
                    {
                        // Status changed; we can't list the item anymore.
                        _items.RemoveAt(i);
                    }

                    return;
                }
            }

            // This is a new item, add it.
            if (message.ExpenseClaim.Status == _currentStatus)
            {
                _items.Insert(0, message.ExpenseClaim);
                OnPropertyChanged("IsEmpty");
            }
        }