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); }
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)); }