Esempio n. 1
0
        public Respbase <ChatUserDto> Login(LoginReq req)
        {
            ChatFacade  facade = new ChatFacade();
            ChatUserDto user   = facade.PXinLogin(req.Nodeid, req.Gtclientid, req.Devicetoken);

            return(new Respbase <ChatUserDto> {
                Data = user
            });
        }
        private async Task <IEnumerable <MessageDto> > GetChatMessagesAsync()
        {
            List <MessageDto> messages        = new List <MessageDto>();
            ChatUserDto       currentChatUser = (await loadChatsService.GetChatUsersAsync(new long[] { clientConnection.UserId.GetValueOrDefault() }, request.ConversationId).ConfigureAwait(false)).FirstOrDefault();

            if (request.MessagesId == null)
            {
                messages = await loadMessagesService.GetChatMessagesAsync(
                    request.ConversationId,
                    clientConnection.UserId.GetValueOrDefault(),
                    request.NavigationMessageId,
                    request.AttachmentsTypes,
                    request.Direction.GetValueOrDefault(true),
                    LIMIT).ConfigureAwait(false);
            }
            else
            {
                messages = await loadMessagesService.GetMessagesByIdAsync(
                    request.MessagesId,
                    ConversationType.Chat,
                    request.ConversationId,
                    clientConnection.UserId.GetValueOrDefault()).ConfigureAwait(false);
            }
            if (currentChatUser.LastReadedGlobalMessageId != null)
            {
                var lastMessage = (await loadMessagesService.GetMessagesByIdAsync(
                                       new List <Guid> {
                    currentChatUser.LastReadedGlobalMessageId.GetValueOrDefault()
                },
                                       ConversationType.Chat,
                                       request.ConversationId,
                                       clientConnection.UserId.GetValueOrDefault()).ConfigureAwait(false)).FirstOrDefault();
                if (lastMessage != null)
                {
                    messages.ForEach(message =>
                    {
                        if (message.SenderId != clientConnection.UserId.GetValueOrDefault())
                        {
                            if (message.SendingTime > lastMessage.SendingTime)
                            {
                                message.Read = false;
                            }
                            else
                            {
                                message.Read = true;
                            }
                        }
                    });
                }
            }
            return(messages);
        }
Esempio n. 3
0
        private async Task <ChatUserDto> GetUserByUserName(string username)
        {
            var user = await this.userRepository.GetUser(username);

            var chatUser = new ChatUserDto
            {
                UserName = user.UserName,
                NickName = user.NickName,
                Mobile   = user.Mobile
            };

            return(chatUser);
        }
Esempio n. 4
0
 private static ChatUser GetChatUser(ChatUserDto chatUser)
 {
     return(new ChatUser
     {
         Banned = chatUser.Banned,
         ChatId = chatUser.ChatId,
         Deleted = chatUser.Deleted,
         InviterId = chatUser.InviterId,
         Joined = chatUser.Joined,
         UserId = chatUser.UserId,
         UserRole = chatUser.UserRole,
         IsMuted = chatUser.IsMuted
     });
 }
Esempio n. 5
0
 public static ChatUserVm GetChatUserVm(ChatUserDto chatUser)
 {
     return(new ChatUserVm
     {
         Banned = chatUser.Banned,
         ChatId = chatUser.ChatId,
         Deleted = chatUser.Deleted,
         InviterId = chatUser.InviterId,
         Joined = chatUser.Joined,
         UserId = chatUser.UserId,
         UserRole = chatUser.UserRole,
         IsMuted = chatUser.IsMuted
     });
 }
Esempio n. 6
0
        public Respbase <ChatUserDto> AddFriendConfirm(AddFriendConfirmReq req)
        {
            ChatFacade  facade = new ChatFacade();
            ChatUserDto result = facade.AddFriendConfirm(req);

            if (result == null)
            {
                return(new Respbase <ChatUserDto> {
                    Result = facade.PromptInfo.Result, Message = facade.PromptInfo.Message, Data = null
                });
            }
            return(new Respbase <ChatUserDto> {
                Data = result
            });
        }
        public IActionResult AddUserToChat(int id, [FromBody] ChatUserDto chatUserDto, [FromHeader] int UserID, [FromHeader] string UserRole)
        {
            var chat = _context.Chats.Find(id);

            if (chat == null)
            {
                return(StatusCode(StatusCodes.Status404NotFound));
            }

            if (_user.GetUserById(UserID) == null)
            {
                return(StatusCode(StatusCodes.Status400BadRequest));
            }

            if (chat.CreatedBy != UserID && UserRole != "Admin")
            {
                return(StatusCode(StatusCodes.Status403Forbidden));
            }

            _context.Entry(chat).Collection(chat => chat.ChatUsers).Load();
            var newChatUser = new ChatUser()
            {
                Chat           = chat,
                RequestPending = true,
                UserId         = chatUserDto.UserId
            };

            chat.ChatUsers.Add(newChatUser);
            _context.Chats.Update(chat);

            try
            {
                var success = _context.SaveChanges();

                if (success < 1)
                {
                    return(StatusCode(StatusCodes.Status400BadRequest));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status400BadRequest, ex.Message));
            }

            this._loggerCommunication.logAction("Added a new user to a chat");

            return(StatusCode(StatusCodes.Status201Created, new JsonResult(chat.ChatUsers)));
        }
        public async Task <ActionResult> Post([FromBody] ChatUserDto newUser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            await this.userRepository.AddUser(new User
            {
                UserName  = newUser.UserName,
                CreatedOn = DateTime.Now,
                UpdatedOn = DateTime.Now,
                NickName  = newUser.NickName,
                Mobile    = newUser.Mobile
            });

            var user = await this.GetById(newUser.UserName);

            return(CreatedAtAction(nameof(GetById), new { userName = newUser.UserName }, user.Value));
        }
Esempio n. 9
0
        public Respbase <ChatUserDto> AddFriend(AddFriendReq req)
        {
            ChatFacade  facade = new ChatFacade();
            ChatUserDto result = facade.AddFriend(req);

            if (result == null)
            {
                return(new Respbase <ChatUserDto> {
                    Result = facade.PromptInfo.Result, Message = facade.PromptInfo.Message, Data = null
                });
            }
            if (facade.PromptInfo.Result == 2)
            {
                return(new Respbase <ChatUserDto> {
                    Result = 1, Message = facade.PromptInfo.Message, Data = result
                });
            }
            return(new Respbase <ChatUserDto> {
                Result = 1, Message = "添加好友请求发起成功,请等待对方验证通过", Data = result
            });
        }
        private async Task SendChatMessagesReadedNoticeAsync(IEnumerable <MessageDto> messages, long chatId, long requestorId)
        {
            List <ChatUserDto> chatUsers = await loadChatsService.GetChatUsersAsync(messages.Select(message => message.SenderId.GetValueOrDefault()).Append(requestorId), chatId).ConfigureAwait(false);

            ChatUserDto requestorChatUser = chatUsers.FirstOrDefault(chatUser => chatUser.UserId == requestorId);

            foreach (var groupBySender in messages.GroupBy(message => message.SenderId))
            {
                var clients = connectionsService.GetUserClientConnections(groupBySender.Key.GetValueOrDefault());
                if (clients != null && requestorId != groupBySender.Key)
                {
                    if (groupBySender.Any())
                    {
                        MessagesReadedNotice notice = new MessagesReadedNotice(
                            groupBySender.Select(opt => opt.GlobalId),
                            ConversationType.Chat,
                            chatId);
                        await SendNoticeToClientsAsync(clients, notice).ConfigureAwait(false);
                    }
                }
            }
        }