Beispiel #1
0
 public MessageDetailsPage(Message item) : this()
 {
     BindingContext = model = new MessageDetailsViewModel()
     {
         _message    = item,
         Answered    = (item.Response == null ? false : true),
         AdminStatus = (APIService.Role == "Administrator" ? true : false),
         Response    = (item.Response != null ? item.Response : "No response yet.")
     };
 }
Beispiel #2
0
        public IActionResult MessageDetails(int id, MessageDetailsViewModel messageDetailsViewModel)
        {
            messageDetailsViewModel.Message = this.HomeService.GetContactMessageById(id);

            if (messageDetailsViewModel.Message == null)
            {
                return(RedirectToAction("Messages", "Home", new { area = "Administration" }));
            }

            return(this.View(messageDetailsViewModel));
        }
        public async Task CreateMessageAsync_WithValidData_ShouldCreateAMessage()
        {
            //Arrange
            var expected = new MessageDetailsViewModel
            {
                AdTitle = "Iphone 6s",
                Content = "Content for the message",
                Sender  = "Ivan",
                SentOn  = "31/01/2019"
            };

            var moqAdsService   = new Mock <IAdsService>();
            var moqUsersService = new Mock <IUsersService>();

            moqUsersService.Setup(x => x.GetUserByIdAsync("SenderId"))
            .ReturnsAsync(new SellMeUser
            {
                Id       = "SenderId",
                UserName = "******"
            });

            var moqMapper = new Mock <IMapper>();

            moqMapper.Setup(x => x.Map <MessageDetailsViewModel>(It.IsAny <Message>()))
            .Returns(new MessageDetailsViewModel
            {
                AdTitle = "Iphone 6s",
                Content = "Content for the message",
                Sender  = "Ivan",
                SentOn  = "31/01/2019"
            });

            var context = InitializeContext.CreateContextForInMemory();

            messagesService = new MessagesService(context, moqAdsService.Object, moqUsersService.Object, moqMapper.Object);

            var testingAd = CreateTestingAd();
            await context.Ads.AddAsync(testingAd);

            await context.SaveChangesAsync();

            //Act and assert
            var actual = await messagesService.CreateMessageAsync("SenderId", "RecipientId",
                                                                  1, "Content for the message");

            Assert.Equal(expected.AdTitle, actual.AdTitle);
            Assert.Equal(expected.Content, actual.Content);
            Assert.Equal(expected.Sender, actual.Sender);
            Assert.Equal(expected.SentOn, actual.SentOn);
        }
Beispiel #4
0
 /// <summary>
 /// 显示消息详情窗口
 /// </summary>
 /// <param name="model"></param>
 /// <param name="action"></param>
 internal static void ShowMessageDetailsDialog(MyMessageDto model, Action action = null)
 {
     Application.Current.Dispatcher.Invoke(new Action(() =>
     {
         var win = new MessageDetailsWindow {
             Owner = Application.Current.MainWindow
         };
         var vm          = new MessageDetailsViewModel(model);
         win.DataContext = vm;
         win.ShowDialog();
         if (action == null)
         {
             return;
         }
         action();
     }));
 }
        public async Task ConversationIsCorrectlyLoaded()
        {
            // Arrange
            var user1 = DummyGenerator.CreateDummyUser(1);
            var user2 = DummyGenerator.CreateDummyUser(2);
            var user3 = DummyGenerator.CreateDummyUser(3);

            var msg1 = DummyGenerator.CreateDummyMessage(user1, user2, 1);
            var msg2 = DummyGenerator.CreateDummyMessage(user2, user1, 2);
            var msg3 = DummyGenerator.CreateDummyMessage(user1, user3, 3);

            var messageList = new List <MessageCacheEntry>
            {
                new MessageCacheEntry(1, 1, 2, JsonConvert.SerializeObject(msg1)),
                new MessageCacheEntry(2, 2, 1, JsonConvert.SerializeObject(msg2)),
                new MessageCacheEntry(3, 1, 3, JsonConvert.SerializeObject(msg3))
            };

            var context = new Mock <IContextEntry>();

            context.SetupGet(c => c.UserId).Returns(1);

            var cache = new Mock <ICache>();

            cache.Setup(c => c.GetMessages()).Returns(Task.FromResult(messageList));

            var vm = new MessageDetailsViewModel
            {
                Cache      = cache.Object,
                Dispatcher = new SyncDispatcher(),
                Message    = new MessageViewModel(msg2, context.Object, null, null)
            };

            // Act
            await vm.OnLoad(null);

            // Assert
            Assert.AreEqual(1, vm.PreviousMessages.Count);
        }
Beispiel #6
0
        public async Task <ActionResult> Message(int advertisementId)
        {
            var userIdCurrent = User.Identity.GetUserId();

            var messages =
                await
                _messageService.Queryable()
                .Where(x => x.AdvertisementId == advertisementId && (x.FromUserId == userIdCurrent || x.ToUserId == userIdCurrent))
                .Include(x => x.Advertisement)
                .Include(x => x.Advertisement.Photos)
                .Include(x => x.Advertisement.Car)
                .Include(x => x.Advertisement.User.Address)
                .Include(x => x.FromUser)
                .Include(x => x.ToUser)
                .OrderByDescending(x => x.Id)
                .ToListAsync();



            if (!messages.Any())
            {
                return(RedirectToAction("Messages"));
            }

            var viewModel = new MessageDetailsViewModel();

            viewModel.Messages = messages;
            if (messages.First().Advertisement.Photos.Any())
            {
                var picturesModel = messages.First().Advertisement.Photos.Select(x =>
                                                                                 new PictureModel()
                {
                    ID              = x.Id,
                    Url             = string.Format("data:{0};base64,{1}", x.Extension, Convert.ToBase64String(x.Content)),
                    AdvertisementId = messages.First().Advertisement.Id
                }).ToList();

                viewModel.Url = picturesModel.FirstOrDefault().Url;
            }


            var messageNotifications = _userNotificationService.GetNewNotificationsFor(userIdCurrent).Select(x => x.Notification).OfType <MessageNotification>().Include(x => x.Message).ToList();

            foreach (var messageNotification in messageNotifications)
            {
                foreach (var message in messages)
                {
                    if (message.Id == messageNotification.MessageId)
                    {
                        var markAsRead = await _userNotificationService.Query(x => x.NotificationId == messageNotification.Id).SelectAsync();

                        foreach (var userNotification in markAsRead)
                        {
                            userNotification.IsRead      = true;
                            userNotification.ObjectState = ObjectState.Modified;
                        }
                    }
                }
            }


            await _unitOfWorkAsync.SaveChangesAsync();

            return(View(viewModel));
        }