Exemplo n.º 1
0
        public async Task <OutGoingMessageDTO> AddMessageToContact(AppUser user, IncomingMessageDTO message)
        {
            var outgoingMessage = new OutGoingMessageDTO
            {
                Message = message.Message, ContactID = message.ContactId, IsUserTab = message.IsUserTab
            };
            Contact contact = null;

            if (message.IsUserTab)
            {
                contact = user.Contacts.FirstOrDefault(x => x.ID == message.ContactId);
                if (contact == null)
                {
                    throw new Exception("This contact doesn't 'belong' to this user");
                }
                outgoingMessage.UserToSendId = contact.Vendor.UserID;
                outgoingMessage.Image        = user.Image;
            }
            else
            {
                user.Vendors.ToList().ForEach(x =>
                {
                    var c = x.Contacts.FirstOrDefault(y => y.ID == message.ContactId);
                    if (c != null)
                    {
                        contact = c;
                        outgoingMessage.UserToSendId = contact.UserID;
                        outgoingMessage.Image        = x.Image;
                    }
                });
            }

            try
            {
                contact.Messages.Add(new Message
                {
                    Text = message.Message, Contact = contact, IsUserSender = message.IsUserTab
                });
                contact.ReceiverRead = !message.IsUserTab;
                contact.UserRead     = message.IsUserTab;

                _context.Update(contact);
                await _context.SaveChangesAsync();

                outgoingMessage.VendorTitle = contact.Vendor.Title;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(outgoingMessage);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> CreateMessage([FromBody] IncomingMessageDTO incMessageDto)
        {
            OutGoingMessageDTO outgoingMessageDto;

            try
            {
                var user = await _userManager.GetUserAsync(User);

                outgoingMessageDto = await _chatService.AddMessageToContact(user, incMessageDto);
            }
            catch
            {
                return(BadRequest());
            }

            await _hubContext.Clients.User(outgoingMessageDto.UserToSendId).SendAsync("sendNewMessage", JsonConvert.SerializeObject(outgoingMessageDto));

            return(Ok(outgoingMessageDto));
        }