예제 #1
0
        public async Task <IActionResult> CreateMessage(int userId, MessageForCreation messageFromCreation)
        {
            var sender = await _repo.GetUser(userId);

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

            messageFromCreation.SenderId = userId;
            var recipient = await _repo.GetUser(messageFromCreation.RecipientId);

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

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

            _repo.Add(message);



            if (await _repo.SaveAll())
            {
                var messageToReturn = _mapper.Map <MessageToReturn>(message);
                return(CreatedAtRoute("GetMessage", new{ id = message.Id }, messageToReturn));
            }

            throw new Exception("Creating the message failed on save");
        }
예제 #2
0
        public async Task <IActionResult> CreateMessage(int userId, MessageForCreation messageForCreation)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

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

            if (recipient == null)
            {
                return(NotFound());
            }

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

            message.SentDate = DateTime.UtcNow;
            message.SenderId = userId;

            _repo.Add(message);

            if (await _repo.SaveAll())
            {
                // Load the sender detail so that automapper can use it
                var sender = await _repo.GetUser(userId);

                var messageToReturn = _mapper.Map <MessageForList>(message);
                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn));
            }

            throw new Exception("Creation failed on save");
        }
예제 #3
0
        public IActionResult PostNewMessage([FromBody] MessageForCreation Message)
        {
            if (Message == null)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var MaxMessageId = 0;

            if (messageStorage.Messages.Count != 0)
            {
                MaxMessageId = messageStorage.Messages.Max(m => m.Id);
            }

            var FinalMessage = new Message()
            {
                Id      = ++MaxMessageId,
                Content = Message.Content,
                //Date = heure.ToString("D2") + ":" + minute.ToString("D2"),
                Date      = dateTimeProvider.Now,
                UserName  = Message.UserName,
                AvatarSrc = Message.AvatarSrc
            };

            messageStorage.Messages.Add(FinalMessage);

            return(CreatedAtRoute("GetMessage", new { id = FinalMessage.Id }, FinalMessage));
        }
예제 #4
0
        public async Task <IActionResult> CreateMessage(int userId, MessageForCreation messageForCreation)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized("Unauthorized"));
            }

            messageForCreation.SenderId = userId;

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

            if (recipient == null)
            {
                return(NotFound("NotFound"));
            }

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

            this.repo.Add(message);

            var messageToReturn = this.mapper.Map <MessageForCreation>(message);

            if (await this.repo.SaveAll())
            {
                return(CreatedAtRoute("GetMessage", new { userId, id = message.Id }, messageToReturn));
            }

            return(BadRequest("Created the message failed"));
        }
예제 #5
0
        public async Task <IActionResult> CreateMessage(int userId, [FromBody] MessageForCreation messageForCreation)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageForCreation.SenderId = userId;

            var messageToReturn = await _messageService.CreateMessage(messageForCreation);

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

            throw new Exception("Creating the message failed on save.");
        }
예제 #6
0
        public async Task <IActionResult> CreateMessage(string userId, MessageForCreation messageForCreation)
        {
            var sender = await _userService.GetUser(userId);

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

            messageForCreation.SenderId = userId;

            var recipient = await _userService.GetUser(messageForCreation.RecipientId);

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

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

            if (await _messageService.AddMessage(message))
            {
                var messageToReturn = _mapper.Map <MessageToReturn>(message);


                if (MessageHub._userConnections.ContainsKey(messageForCreation.RecipientId))
                {
                    await _hubContext.Clients.Clients(MessageHub._userConnections[messageForCreation.RecipientId])
                    .SendAsync("SignalMessageReceived", messageToReturn);
                }

                if (MessageHub._userConnections.ContainsKey(userId))
                {
                    await _hubContext.Clients.Clients(MessageHub._userConnections[userId])
                    .SendAsync("SignalMessageReceived", messageToReturn);
                }

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

            throw new Exception("Creating the message failed on save");
        }
예제 #7
0
        public void VerifyMessageAfterPost()
        {
            var Message = new MessageForCreation()
            {
                Content   = "contentTest",
                UserName  = "******",
                AvatarSrc = "#"
            };

            controller.PostNewMessage(Message);

            var id = messageStorage.Messages.Max(m => m.Id);

            var LastMessage = messageStorage.Messages.FirstOrDefault(m => m.Id == id);

            Assert.Equal(LastMessage.AvatarSrc, Message.AvatarSrc);
            Assert.Equal(LastMessage.Content, Message.Content);
            Assert.Equal(LastMessage.UserName, Message.UserName);
            Assert.Equal(LastMessage.Date, testDateTimeProvider.targetDateTime);
        }
예제 #8
0
        public async Task <MessageToReturn> CreateMessage(MessageForCreation messageForCreation)
        {
            var sender = await _userService.GetUser(messageForCreation.SenderId);

            var recipient = await _userService.GetUser(messageForCreation.RecipientId);

            var message = new Message
            {
                SenderId         = messageForCreation.SenderId,
                RecipientId      = messageForCreation.RecipientId,
                DateSent         = messageForCreation.DateSent,
                Content          = messageForCreation.Content,
                IsRead           = false,
                SenderDeleted    = false,
                RecipientDeleted = false,
            };

            _context.Add(message);

            if (!await SaveAll())
            {
                return(null);
            }

            return(new MessageToReturn
            {
                Id = message.Id,
                SenderId = message.SenderId,
                SenderKnownAs = message.Sender.KnownAs,
                SenderPhotoUrl = message.Sender.Photos.FirstOrDefault(p => p.IsMain).Url,
                RecipientId = message.RecipientId,
                RecipientKnownAs = message.Recipient.KnownAs,
                RecipientPhotoUrl = message.Recipient.Photos.FirstOrDefault(p => p.IsMain).Url,
                Content = message.Content,
                IsRead = message.IsRead,
                DateRead = message.DateRead,
                DateSent = message.DateSent
            });
        }