public async Task <ChatModel> GetChatAsync(string chatName)
        {
            ChatWithNestedObjects chatWithNestedObjects = await _chatRepository.GetByNameAsync(chatName);

            ChatModel chatModel = new ChatModel(chatWithNestedObjects);

            return(chatModel);
        }
Example #2
0
        public async Task <ChatWithNestedObjects> GetByNameAsync(string userName)
        {
            IQueryable <ChatWithNestedObjects> chatsWithNestedObjects = _dbSet.Include(item => item.Message).GroupJoin(_context.Messages.Include(message => message.ApplicationUser),
                                                                                                                       outerKeySelector => outerKeySelector.Id,
                                                                                                                       innerKeySelector => innerKeySelector.ChatId,
                                                                                                                       (chat, message) => new ChatWithNestedObjects
            {
                Chat     = chat,
                Messages = message.ToList()
            });
            ChatWithNestedObjects chatWithNestedObjects = await chatsWithNestedObjects.FirstOrDefaultAsync(item => item.Chat.Name == userName);

            return(chatWithNestedObjects);
        }
        public async Task <string> GetChatNameAsync(string userName)
        {
            ChatWithNestedObjects chatWithNestedObjects = await _chatRepository.GetByNameAsync(userName);

            if (chatWithNestedObjects is null)
            {
                Chat chat = new Chat {
                    Name = userName
                };
                await _chatRepository.CreateAsync(chat);

                return(chat.Name);
            }
            return(chatWithNestedObjects.Chat.Name);
        }
 internal ChatModel(ChatWithNestedObjects item) : this(item.Chat)
 {
     MessageModels = item.Messages.Select(message => new MessageModel(message)).ToList();
 }