public void JoinToChat(int clientId, string chatUniqueName, bool isAdmin, out ChatDTO newChat) { var chat = repositories.ChatRepos.Get().Where(c => c.UniqueName == chatUniqueName).FirstOrDefault(); if (chat != null && !IsThereClientInChat(clientId, chat.Id) && IsChatExist(chatUniqueName) && (chat.ChatMembers == null || chat.ChatMembers.Count() < chat.MaxUsers)) { var chatMember = new ChatMember() { ClientId = clientId, ChatId = chat.Id, IsAdmin = isAdmin, DateLastReadMessage = DateTime.Now }; repositories.ChatMemberRepos.Insert(chatMember); repositories.Save(); newChat = chatMapper.Map <ChatDTO>(chat); foreach (var item in TakeClients(chat.Id)) { foreach (var item2 in callbacks) { if (item2.ClientId == item.Client.Id && item2.ClientId != clientId) { try { item2.Callback.Joined(chatMemberMapper.Map <ChatMemberDTO>(chatMember), chat.Id, GetPhoto(clientId)); } catch (Exception) {} } } } } else { newChat = null; } }
public void SetChatProperties(ChatDTO chatDTO, out bool result) { if (!IsExistUniqueName(chatDTO.Id, chatDTO.UniqueName, false) && TakeClients(chatDTO.Id).Count() <= chatDTO.MaxUsers) { var chat = repositories.ChatRepos.Get().Where(c => c.Id == chatDTO.Id).FirstOrDefault(); chat.Name = chatDTO.Name; chat.UniqueName = chatDTO.UniqueName; chat.MaxUsers = chatDTO.MaxUsers; chat.IsPrivate = chatDTO.IsPrivate; repositories.ChatRepos.Update(chat); repositories.Save(); result = true; foreach (var item in TakeClients(chat.Id)) { foreach (var item2 in callbacks) { if (item.Client.Id == item2.ClientId) { item2.Callback.GetNewChatProperties(chatMapper.Map <ChatDTO>(chat)); } } } } else { result = false; } }
//--------------------------Chat Methods--------------------// #region public bool IsChatExist(ChatDTO chatDTO) { var result = repositories.ChatRepos.Get().Where(c => c.Id != chatDTO.Id && c.UniqueName == chatDTO.UniqueName).FirstOrDefault(); if (result == null) { return(false); } return(true); }
public ChatDTO CreateNewChat(ChatDTO newChatDTO) { if (!IsExistUniqueName(newChatDTO.Id, newChatDTO.UniqueName, false)) { var chat = chatMapper.Map <Chat>(newChatDTO); repositories.ChatRepos.Insert(chat); repositories.Save(); return(chatMapper.Map <ChatDTO>(chat)); } else { return(null); } }