예제 #1
0
        public async Task CreateChats()
        {
            var    creator = fillTestDbHelper.Users.FirstOrDefault();
            var    users   = fillTestDbHelper.Users.Where(opt => !opt.BlackList.Any(p => p.BadUid == creator.Id) && !creator.BlackList.Any(p => p.BadUid == opt.Id)).Take(5).ToList();
            ChatVm newChat = new ChatVm
            {
                About = "Create chat test 2",
                Name  = "Chat",
                Users = users.Select(opt => new ChatUserVm
                {
                    UserId   = opt.Id,
                    UserRole = opt.Id == creator.Id ? ObjectsLibrary.Enums.UserRole.Creator : ObjectsLibrary.Enums.UserRole.Moderator
                }).ToList()
            };
            var userChats     = fillTestDbHelper.Chats.Where(opt => opt.ChatUsers.Any(p => p.UserId == creator.Id));
            var expectedChats = ChatConverter.GetChatsDto(userChats).Append(ChatConverter.GetChatDto(newChat)).ToList();
            var actualChats   = await createChatsService.CreateOrUpdateUserChatsAsync(expectedChats);

            Assert.Equal(expectedChats.Count, actualChats.Count);
        }
        public async Task <bool> SaveUserDataAsync(UserDto userData)
        {
            try
            {
                UserDto user = await updateUsersService.CreateOrUpdateUserAsync(userData).ConfigureAwait(false);

                IEnumerable <ChatDto> chats = await createChatsService.CreateOrUpdateUserChatsAsync(userData.Chats).ConfigureAwait(false);

                IEnumerable <ChannelDto> channels = await createChannelsService.CreateOrUpdateUserChannelsAsync(userData.Channels).ConfigureAwait(false);

                foreach (var chat in userData.Chats)
                {
                    await createMessagesService.SaveMessagesAsync(chat.Messages, user.Id).ConfigureAwait(false);
                }
                foreach (var channel in userData.Channels)
                {
                    await createMessagesService.SaveMessagesAsync(channel.Messages, user.Id).ConfigureAwait(false);
                }
                foreach (var dialog in userData.Dialogs)
                {
                    await createMessagesService.SaveMessagesAsync(dialog.Messages, user.Id).ConfigureAwait(false);
                }
                foreach (var contact in userData.Contacts)
                {
                    await contactsService.CreateOrEditContactAsync(contact).ConfigureAwait(false);
                }
                foreach (var group in userData.ContactGroups)
                {
                    await groupsService.CreateOrEditGroupAsync(group).ConfigureAwait(false);
                }
                await favoritesService.ChangeUserFavoritesAsync(userData.Favorites, userData.Id).ConfigureAwait(false);

                return(true);
            }
            catch (Exception ex)
            {
                Logger.WriteLog(ex);
                return(false);
            }
        }