Ejemplo n.º 1
0
        private static ConversationWithMetaData MapConversation(IDataReader reader)
        {
            ConversationWithMetaData conversation = new ConversationWithMetaData();

            int startingIndex = 0;

            conversation.Id   = reader.GetSafeInt32(startingIndex++);
            conversation.Name = reader.GetSafeGuid(startingIndex++).ToString();

            int count = reader.GetSafeInt32(startingIndex++);

            conversation.TotalPages = (int)Math.Ceiling(count / (double)pageSize);
            conversation.Messages   = new List <Message>();

            return(conversation);
        }
Ejemplo n.º 2
0
        public List <ConversationWithMetaData> GetConversations(int userId)
        {
            List <ConversationWithMetaData> conversations = null;
            string procName = "[dbo].[Conversations_SelectByUserId]";

            _dataProvider.ExecuteCmd(procName
                                     , inputParamMapper : delegate(SqlParameterCollection paramCollection)
            {
                paramCollection.AddWithValue("@UserId", userId);
            }
                                     , singleRecordMapper : delegate(IDataReader reader, short set)
            {
                ConversationWithMetaData conversation = MapConversation(reader);

                if (conversations == null)
                {
                    conversations = new List <ConversationWithMetaData>();
                }

                conversations.Add(conversation);
            }
                                     );
            return(conversations);
        }
Ejemplo n.º 3
0
        public List <ConversationWithMetaData> GetConversationsWithMetaData(int userId)
        {
            List <ConversationWithMetaData> conversations = null;
            string procName = "[dbo].[Conversations_SelectWithMetaDataV4]";
            Dictionary <int, List <Message> > messageDict = null;
            Dictionary <int, List <int> >     userDict    = null;

            _dataProvider.ExecuteCmd(procName
                                     , inputParamMapper : delegate(SqlParameterCollection paramCollection)
            {
                paramCollection.AddWithValue("@UserId", userId);
            }
                                     , singleRecordMapper : delegate(IDataReader reader, short set)
            {
                switch (set)
                {
                case 0:
                    ConversationWithMetaData conversation = MapConversation(reader);

                    if (conversations == null)
                    {
                        conversations = new List <ConversationWithMetaData>();
                    }

                    conversations.Add(conversation);
                    break;

                case 1:
                    int conversationId = reader.GetInt32(1);
                    int assocUserId    = reader.GetInt32(0);

                    if (userDict == null)
                    {
                        userDict = new Dictionary <int, List <int> >();
                    }

                    if (!userDict.ContainsKey(conversationId))
                    {
                        List <int> assocUserIds = new List <int>();
                        assocUserIds.Add(assocUserId);

                        userDict[conversationId] = assocUserIds;
                    }
                    else
                    {
                        userDict[conversationId].Add(assocUserId);
                    }
                    break;

                case 2:
                    conversationId  = reader.GetInt32(2);
                    Message message = MapMessage(reader);

                    if (messageDict == null)
                    {
                        messageDict = new Dictionary <int, List <Message> >();
                    }

                    if (!messageDict.ContainsKey(conversationId))
                    {
                        List <Message> messages = new List <Message>();
                        messages.Add(message);

                        messageDict[conversationId] = messages;
                    }
                    else
                    {
                        messageDict[conversationId].Add(message);
                    }

                    break;
                }
            }
                                     );

            if (messageDict != null && userDict != null)
            {
                foreach (ConversationWithMetaData conversation in conversations)
                {
                    if (messageDict.ContainsKey(conversation.Id))
                    {
                        conversation.Messages = messageDict[conversation.Id];
                    }
                    if (userDict.ContainsKey(conversation.Id))
                    {
                        conversation.UserIds = userDict[conversation.Id];
                    }
                }
            }

            return(conversations);
        }
Ejemplo n.º 4
0
        public void MarkAsRead(ConversationWithMetaData currentConversation, int userId)
        {
            bool readStatus = true;

            _service.MarkAsRead(currentConversation.Id, userId, readStatus);
        }