Example #1
0
        public async Task <int> AddMessage(MessageItemRequest message, int userId)
        {
            var request = await _dbContext.Request.
                          FirstOrDefaultAsync(x => x.Id == message.RequestId);

            if (request.Status == RequestStatus.New)
            {
                request.Status = RequestStatus.Pending;
            }

            int messageId = await _messagesRepository.Create(message, userId);

            _dbContext.SaveChanges();

            return(messageId);
        }
        public async Task <Message> SendMessage(string text, string groupGuid, string userGuid, IClientProxy clients)
        {
            var sender = await _users.Get(userGuid);

            if (sender == null)
            {
                throw new ArgumentException("Login not found");
            }

            var group = await _groups.Get(groupGuid);

            if (group == null)
            {
                throw new ArgumentException("Group not found");
            }

            var participants = await _groups.GetGroupUsers(groupGuid);

            if (participants.Count(user => user.UserGuid == sender.UserGuid) < 1)
            {
                throw new ArgumentException("User is not in a group");
            }

            var message = new Message()
            {
                Group = group, Sender = sender, Text = text, Time = DateTime.Now
            };
            var m = await _messages.Create(message);

            var incoming = new GroupMessageDto(message);
            var users    = await _groups.GetGroupUsers(groupGuid);

            foreach (var user in users)
            {
                await _pusher.ChatMessage(incoming, user, group, clients);
            }
            return(message);
        }
Example #3
0
        public async Task <MessageDetailsResponse> Create(int userId, MessageCreationRequest request)
        {
            if (userId != _userAccessor.getCurrentUserId())
            {
                throw new RestException(HttpStatusCode.Forbidden);
            }

            request.SenderId = userId;
            var recipient = await _usersRepo.Get(request.RecipientId);

            if (recipient == null)
            {
                throw new RestException(HttpStatusCode.NotFound, new { Recipient = "Not found" });
            }

            var message = _mapper.Map <Message>(request);
            var sender  = await _usersRepo.Get(request.SenderId);

            message.Sender = sender;
            await _repo.Create(message);

            return(_mapper.Map <MessageDetailsResponse>(message));
        }