Exemple #1
0
        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);
        }
Exemple #2
0
 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;
     }
 }