Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        //--------------------------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);
        }
Exemplo n.º 4
0
 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);
     }
 }