public async Task <ChatModel> GetChatAsync(string chatName) { ChatWithNestedObjects chatWithNestedObjects = await _chatRepository.GetByNameAsync(chatName); ChatModel chatModel = new ChatModel(chatWithNestedObjects); return(chatModel); }
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(); }