public ChatSetting(Models.ChatSetting chatSetting, string requesterAddress = null, IEnumerable <Models.ChatUser> chatUsers = null, bool includeUsers = true) { Id = chatSetting.ChatId; Address = chatSetting.Address; Name = chatSetting.Name; Description = chatSetting.Description; Image = chatSetting.PictureUrl; PublicKey = chatSetting.PublicKey; PrivateKey = chatSetting.PrivateKey; IsPublic = chatSetting.IsPublic; if (chatUsers != null) { var chatUserArray = chatUsers as Models.ChatUser[] ?? chatUsers.ToArray(); if (!IsPublic && requesterAddress != null) { PrivateKey = chatUserArray.FirstOrDefault(cu => cu.Address == requesterAddress)?.PrivateKey; } if (includeUsers) { Users = new List <User>(); foreach (var chatUser in chatUserArray) { Users.Add(new Models.View.ChatUser(chatUser)); } } } }
private Chat CreateChat(IEnumerable <ChatUserSetting> chatUserSettings, bool isGroup, long userJoinedAt, ChatGroupInfo?chatGroupInfo) { if (isGroup && !chatGroupInfo.HasValue) { throw new ArgumentNullException(nameof(chatGroupInfo)); } var time = DateTimeOffset.FromUnixTimeMilliseconds(userJoinedAt).DateTime; var chat = new Chat() { IsGroup = isGroup, CreatedAt = time }; Chats.Add(chat); Models.ChatSetting chatSetting = null; if (isGroup) { chatSetting = new Models.ChatSetting() { Chat = chat, Address = chatGroupInfo.Value.Address, Name = chatGroupInfo.Value.Name, Description = chatGroupInfo.Value.Description, PictureUrl = chatGroupInfo.Value.Image, PublicKey = chatGroupInfo.Value.PublicKey, PrivateKey = chatGroupInfo.Value.PrivateKey, IsPublic = chatGroupInfo.Value.IsPublic, CreatedAt = time, }; ChatSettings.Add(chatSetting); } foreach (var userSetting in chatUserSettings) { CreateChatUser(chat, userSetting, userJoinedAt); } chat.Setting = chatSetting; return(chat); }