public async Task <string> CreateGroup(GroupModel groupModel) { var user = await _userManager.FindByNameAsync(Thread.CurrentPrincipal.Identity.Name); List <string> userList = new List <string>(); userList.Add(user.Id); var chat = new Chat { ChatName = groupModel.Name, ChatType = ChatEnum.ChatForGroup, CreatorId = user.Id, Created = DateTime.Now }; _context.Chats.Add(chat); _context.Entry(chat).State = EntityState.Added; var chatForGroup = new ChatForGroup() { ChatId = chat.Id, IsPublic = groupModel.IsPublic, CreatorMode = groupModel.CreatorMode }; AddGroupPhoto(groupModel, chatForGroup); _context.ChatsForGroup.Add(chatForGroup); _context.Entry(chatForGroup).State = EntityState.Added; _context.GroupsUsers.Add(new GroupsUsers() { GroupId = chatForGroup.Id, UserId = user.Id }); foreach (var item in groupModel.Users) { var id = (await _userManager.FindByNameAsync(item)).Id; userList.Add(id); _context.GroupsUsers.Add(new GroupsUsers() { GroupId = chatForGroup.Id, UserId = id }); } await _context.SaveChangesAsync(); var newChat = new ChatListModel() { ChatId = chat.Id, ChatName = groupModel.Name, ChatEnum = ChatEnum.ChatForGroup, PhotoPath = groupModel.PhotoPath }; await _hubContext.Clients.Users(userList).SendAsync("NewChat", newChat); return(chat.Id); }
private async Task AddGroupPhoto(GroupModel group, ChatForGroup chatForGroup) { if (!String.IsNullOrEmpty(group.PhotoPath)) { if (chatForGroup.FileDb is null) { chatForGroup.FileDb = new FileDb(); chatForGroup.FileDb.IsImage = true; } chatForGroup.FileDb.FilePath = group.PhotoPath; } }