Exemplo n.º 1
0
        public List <Message> GetAllMessagesForUser(DataAccessLayer.User user, DateTime?syncTime)
        {
            DateTime            now             = DateTime.UtcNow;
            DateTime            nonNullSyncTime = syncTime ?? DateTime.UtcNow - new TimeSpan(7, 0, 0, 0);
            List <SortCriteria> sorts           = new List <SortCriteria>();

            sorts.Add(new SortCriteria()
            {
                Column = MessageTable.LastUpdateTimeUtcTicksColumn, SortOrder = SortOrder.Descending
            });

            // Create a filter to say Select * from MessageTable where (Sender = @userId OR Recipient = @userId OR Recipient = @groupThatUserIsAMemberOf) AND LastUpdateTime > @syncTime
            QueryFilter filter = new SelectFilter(
                MessageTable.Instance,
                new AndFilter(
                    MessageStore.CreateUserFilter(user),
                    new ComparisonFilter(MessageTable.LastUpdateTimeUtcTicksColumn, nonNullSyncTime.Ticks, ComparisonOperator.Greater)),
                sorts);

            List <ITableRow> rows     = MessageTable.Instance.QueryRows(filter);
            List <Message>   messages = new List <Message>();

            if (rows != null)
            {
                for (int i = 0; i < rows.Count; i++)
                {
                    messages.Add(DataContractToTableRowConverter.ConvertToMessage(MessageTable.Instance, rows[i]));
                }
            }

            DataAccessLayer.UserService.UpdateUserLastSyncTime(user.Id, now);

            return(messages);
        }
Exemplo n.º 2
0
        public Message GetMessage(Guid conversationId, Guid messageId)
        {
            // Create a filter to say Select * from MessageTable where ConversationId = @conversationId AND MessageId = @messageId
            QueryFilter filter = new SelectFilter(
                MessageTable.Instance,
                new AndFilter(
                    new ComparisonFilter(MessageTable.ConversationIdColumn, conversationId, ComparisonOperator.Equal),
                    new ComparisonFilter(MessageTable.MessageIdColumn, messageId, ComparisonOperator.Equal)),
                null);

            List <ITableRow> rows = MessageTable.Instance.QueryRows(filter);

            if (rows.Count != 1)
            {
                return(null);
            }

            return(DataContractToTableRowConverter.ConvertToMessage(MessageTable.Instance, rows[0]));
        }
Exemplo n.º 3
0
        public List <Message> GetConversationMessages(Guid conversationId)
        {
            // Create a filter to say Select * from MessageTable where ConversationId = @conversationId AND MessageId = @messageId
            QueryFilter filter = new SelectFilter(
                MessageTable.Instance,
                new ComparisonFilter(MessageTable.ConversationIdColumn, conversationId, ComparisonOperator.Equal),
                null);

            List <ITableRow> rows     = MessageTable.Instance.QueryRows(filter);
            List <Message>   messages = new List <Message>();

            if (rows != null)
            {
                for (int i = 0; i < rows.Count; i++)
                {
                    messages.Add(DataContractToTableRowConverter.ConvertToMessage(MessageTable.Instance, rows[i]));
                }
            }

            return(messages);
        }