Exemple #1
0
        public async Task <IActionResult> CreateMessage(int userId, MessageCreationDto messageCreationDto)
        {
            var sender = await _repo.GetUser(userId, false);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }
            messageCreationDto.IdSender = userId;
            var recipient = await _repo.GetUser(messageCreationDto.RecipientId, false);

            if (recipient == null)
            {
                return(BadRequest("nie znaleziono użytkownika"));
            }
            var message = _mapper.Map <Message>(messageCreationDto);

            _repo.Add(message);
            if (await _repo.SaveAll())
            {
                var messageToReturn = _mapper.Map <MessageDto>(message);
                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn));
            }
            throw new Exception("wiadomość nie została zapisana");
        }
Exemple #2
0
 public MessageDto AddNewMessage(int lobbyId, int userId, MessageCreationDto message)
 {
     try
     {
         var existingLobby = _lobbyRepository.GetLobbyWithJoinRequestById(lobbyId);
         if (existingLobby == null)
         {
             Logger.LogWarning(LoggingEvents.CustomServiceEvents.NewMessageAddError, "Lobby with id = {ID} was not found", lobbyId);
             return(null);
         }
         if (userId != existingLobby.HostId && existingLobby.JoinRequests.Where(u => u.UserId == userId).Count() == 0)
         {
             return(null);
         }
         var newMessage = Mapper.Map <Message>(message);
         newMessage.LobbyId  = lobbyId;
         newMessage.SenderId = userId;
         Repository.Add(newMessage);
         Repository.SaveChanges();
         return(Mapper.Map <MessageDto>(newMessage));
     }
     catch (Exception e)
     {
         Logger.LogError(LoggingEvents.CustomServiceEvents.NewMessageAddError, e,
                         "Error addind new message on the lobby with id = {LOBBYID}, by user with id = {USERID}", lobbyId, userId);
         return(null);
     }
 }
Exemple #3
0
        public IActionResult Post([FromBody] MessageCreationDto request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }


            var recipient = _repo.GetUser(request.RecipientId);
            var sender    = _repo.GetUser(request.SenderId);

            if (recipient == null)
            {
                return(BadRequest($"Could not find user {request.RecipientId}"));
            }

            var message = JObject.FromObject(request, new JsonSerializer {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            }).ToObject <Message>();

            message.Id = Guid.NewGuid().ToString();
            _repo.Add(message);

            _repo.CompleteAsync();

            _chatHub.Clients.User(message.RecipientId).SendAsync("MessageReceived", message);

            return(Ok());
        }
Exemple #4
0
        public async Task <IActionResult> CreateMessage(int userId, MessageCreationDto messageDto)
        {
            var sender = await this.repo.GetUser(userId);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageDto.SenderId = userId;

            var recipient = await this.repo.GetUser(messageDto.RecipientId);

            if (recipient == null)
            {
                return(BadRequest("Could not find user"));
            }

            var message = this.mapper.Map <Message>(messageDto);

            this.repo.Add(message);

            if (await this.repo.SaveAll())
            {
                var messageToReturn = this.mapper.Map <MessageToReturnDto>(message);
                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn));
            }

            throw new Exception("Creating the message failed on save");
        }
Exemple #5
0
        public async Task <IActionResult> CreateMessage(Guid userId, MessageCreationDto messageCreationDto)
        {
            User sender = await _repository.GetUser(userId, false);

            if (sender?.Id != Guid.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageCreationDto.SenderId = userId;

            User recipient = await _repository.GetUser(messageCreationDto.RecipientId, false);

            if (recipient == null)
            {
                return(BadRequest("Could not find user"));
            }

            Message message = _mapper.Map <Message>(messageCreationDto);

            _repository.Add(message);

            if (await _repository.SaveAll())
            {
                MessageReturnDto messageReturnDto = _mapper.Map <MessageReturnDto>(message);
                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageReturnDto));
            }

            throw new Exception("Creating the message failed on save");
        }
        public async Task <IActionResult> PostMessage([FromBody] MessageCreationDto MessageDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new { message = ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage) }));
            }

            var createMessage = _mapper.Map <Message>(MessageDto);

            try
            {
                var createdMessage = await _chatService.PostMessage(createMessage);

                return(Ok(createdMessage));
            }
            catch (UserNotFound)
            {
                return(NotFound(new MessageObj("User not found")));
            }
            catch (EnvironmentNotSet)
            {
                throw;
            }
            catch (Exception e)
            {
                return(BadRequest(new MessageObj(e.Message)));
            }
        }
        public IActionResult AddNewMessage(int?lobbyId, [FromBody] MessageCreationDto message)
        {
            if (!lobbyId.HasValue)
            {
                return(BadRequest());
            }
            int userId     = _authorizationService.GetUserId(User);
            var newMessage = _messageService.AddNewMessage(lobbyId.Value, userId, message);

            if (newMessage == null)
            {
                return(Unauthorized());
            }
            return(CreatedAtRoute("GetMessage", new { lobbyId, id = newMessage.Id }, newMessage));
        }
Exemple #8
0
        public async Task <IActionResult> CreateMessage(int userId, MessageCreationDto messageForCreation)
        {
            var sender = await _repo.GetUser(userId, false);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageForCreation.SenderId = userId;

            var recipient = await _repo.GetUser(messageForCreation.RecipientId, false);

            if (recipient == null)
            {
                return(BadRequest("User not found"));
            }

            var message = _mapper.Map <Message>(messageForCreation);

            _repo.Add(message);

            if (await _repo.SaveAll())
            {
                var messageToReturn = _mapper.Map <MessageToReturnDto>(message);

                try
                {
                    await _messageHub.Clients.User(messageToReturn.SenderId.ToString()).SendAsync("newMessage", messageToReturn);

                    await _messageHub.Clients.User(messageToReturn.RecipientId.ToString()).SendAsync("newMessage", messageToReturn);
                }
                catch (Exception e)
                {
                    throw new Exception(e.ToString());
                }

                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn));
            }

            throw new Exception("Could not save the message");
        }
 public IActionResult SendRequest([FromBody] MessageCreationDto msg)
 {
     _hubContext.Clients.All.SendAsync("MessageReceived", msg);
     return(Ok());
 }
Exemple #10
0
 public async Task SendMessage(MessageCreationDto msg)
 {
     await Clients.User(msg.RecipientId).SendAsync("MessageReceived", msg);
 }