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); }
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); }
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); }
public void MarkAsRead(ConversationWithMetaData currentConversation, int userId) { bool readStatus = true; _service.MarkAsRead(currentConversation.Id, userId, readStatus); }