コード例 #1
0
        public ActionResult Create(PrivateMessageViewModel model)
        {
            if (ModelState.IsValid)
            {
                var message = new PrivateMessage()
                {
                    RecepientId = model.RecepientId,
                    SenderId    = WebSecurity.CurrentUserId,
                    Subject     = model.Subject,
                    Message     = model.Message
                };

                try
                {
                    _privateMessageRepository.Save(message);
                }
                catch (DataException)
                {
                    TempData["error"] = ProjectConfiguration.Get.DataErrorMessage;
                }

                TempData["notice"] = string.Format("Сообщение пользователю {0} успешно отправлено!", model.Recepient);
                return(RedirectToAction("Index", "Profile", new { id = model.RecepientId }));
            }

            return(View(model));
        }
コード例 #2
0
        public async Task UpdateOrDeletePrivateMessage_WhenDeletedBy_IsNull_CallsMediatorForEdit()
        {
            //Arrange
            var privateMessageViewModel = new PrivateMessageViewModel
            {
                Id       = 1,
                Title    = "title",
                Text     = "text",
                DateSent = DateTime.Now,
                DateRead = DateTime.Now,
                Sender   = new IdAndDisplayNameUserViewModel {
                    Id = 1, DisplayName = "user1"
                },
                Receiver = new IdAndDisplayNameUserViewModel {
                    Id = 2, DisplayName = "user2"
                },
                DeletedBy = null
            };

            _mockMediator
            .Setup(call => call.Send(It.IsAny <GetPrivateMessageByIdQuery>(), default(CancellationToken)))
            .Returns(Task.FromResult(privateMessageViewModel));

            //Act
            await _privateMessagesService.UpdateOrDeletePrivateMessage(privateMessageViewModel);

            //Assert
            _mockMediator.Verify(x => x.Send(It.IsAny <EditPrivateMessageCommand>(), default(CancellationToken)), Times.Once);
        }
コード例 #3
0
        public async Task SavePrivateMessageAsync_WhenIdIs0_CallsMediatorForAdd()
        {
            //Arrange
            var privateMessageViewModel = new PrivateMessageViewModel
            {
                Id       = 0,
                Title    = "title",
                Text     = "text",
                DateSent = DateTime.Now,
                DateRead = null,
                Sender   = new IdAndDisplayNameUserViewModel {
                    Id = 1, DisplayName = "user1"
                },
                Receiver = new IdAndDisplayNameUserViewModel {
                    Id = 2, DisplayName = "user2"
                }
            };

            //Act
            await _privateMessagesService.SavePrivateMessageAsync(privateMessageViewModel);

            //Assert
            _mockMediator.Verify(x =>
                                 x.Send(It.IsAny <AddPrivateMessageCommand>(), default(CancellationToken)), Times.Once);
        }
コード例 #4
0
        public async Task <ActionResult> AddPrivateMessageAsync(PrivateMessageViewModel privateMessage)
        {
            privateMessage.Sender.Id = _claimsGetter.UserId(User?.Claims);
            await _privateMessagesService.SavePrivateMessageAsync(privateMessage);

            return(NoContent());
        }
コード例 #5
0
 public async Task <IEnumerable <PrivateMessageViewModel> > GetPrivateMessages(Guid userId, Guid recipientId)
 {
     return(DbContext.PrivateMessages
            .Where(x => x.SenderId == userId && x.RecipientId == recipientId)
            .Select(y => PrivateMessageViewModel.FromPrivateMessage(y))
            .AsEnumerable());
 }
コード例 #6
0
 private Task AddPrivateMessageAsync(PrivateMessageViewModel viewModel)
 => _mediator.Send(new AddPrivateMessageCommand
 {
     Title      = viewModel.Title,
     Text       = viewModel.Text,
     DateSent   = viewModel.DateSent,
     DateRead   = viewModel.DateRead,
     SenderId   = viewModel.Sender.Id,
     ReceiverId = viewModel.Receiver.Id
 });
コード例 #7
0
        public async Task UpdatePrivateMessageStatusAsync_WithGivenPrivateMessage_ReturnsNoContent()
        {
            //Arrange
            var privateMessage = new PrivateMessageViewModel();

            //Act
            var result = await _privateMessagesController.UpdatePrivateMessageStatusAsync(privateMessage);

            //Asert
            result.Should().BeOfType <NoContentResult>();
        }
コード例 #8
0
        public async Task EditPrivateMessageAsync_WithGivenPrivateMessage_ReturnsNoContent()
        {
            //Arrange
            var privateMessage = new PrivateMessageViewModel();

            //Act
            await _privateMessagesController.EditPrivateMessageAsync(privateMessage);

            //Asert
            _mockPrivateMessagesService.Verify(x => x.SavePrivateMessageAsync(privateMessage), Times.Once);
        }
コード例 #9
0
        public async Task UpdatePrivateMessageStatusAsync_WithGivenPrivateMessage_CallsPrivateMessagesService()
        {
            //Arrange
            var privateMessage = new PrivateMessageViewModel();

            //Act
            await _privateMessagesController.UpdatePrivateMessageStatusAsync(privateMessage);

            //Asert
            _mockPrivateMessagesService.Verify(x => x.UpdateOrDeletePrivateMessage(privateMessage), Times.Once);
        }
コード例 #10
0
 private Task EditPrivateMessageAsync(PrivateMessageViewModel viewModel)
 => _mediator.Send(new EditPrivateMessageCommand
 {
     Id         = viewModel.Id,
     Title      = viewModel.Title,
     Text       = viewModel.Text,
     DateSent   = viewModel.DateSent,
     DateRead   = viewModel.DateRead,
     SenderId   = viewModel.Sender.Id,
     ReceiverId = viewModel.Receiver.Id,
     DeletedBy  = viewModel.DeletedBy
 });
コード例 #11
0
        public async Task UpdateOrDeletePrivateMessage(PrivateMessageViewModel viewModel)
        {
            var existingMessage = await GetPrivateMessageByIdAsync(viewModel.Id);

            if (existingMessage.DeletedBy != null && existingMessage.DeletedBy != viewModel.DeletedBy)
            {
                await DeletePrivateMessageAsync(existingMessage.Id);
            }
            else
            {
                await EditPrivateMessageAsync(viewModel);
            }
        }
コード例 #12
0
        public IActionResult CreateMessage2(string receiverId, string content)
        {
            PrivateMessageViewModel message = new PrivateMessageViewModel();

            message.Id         = Guid.NewGuid().ToString();
            message.From       = _userService.GetCurrentUser(User.Identity.Name).Username;
            message.Created    = DateTime.Now;
            message.receiverId = receiverId;
            message.Content    = content;

            _messageService.CreatePrivateMessage(message);

            return(RedirectToAction("Profile", "User"));
        }
コード例 #13
0
        public ActionResult Create(int recepientId)
        {
            var recepient = _profileRepository.Read(recepientId);

            if (recepient == null)
            {
                return(HttpNotFound());
            }

            var viewModel = new PrivateMessageViewModel()
            {
                RecepientId = recepientId,
                Recepient   = recepient.Email,
                Sender      = User.Identity.Name
            };

            return(View(viewModel));
        }
コード例 #14
0
        public async Task AddPrivateMessageAsync_WithGivenPrivateMessage_ReturnsNoContent()
        {
            //Arrange
            var privateMessage = new PrivateMessageViewModel
            {
                Title    = "Titlu",
                Text     = "Text",
                Sender   = new IdAndDisplayNameUserViewModel(),
                Receiver = new IdAndDisplayNameUserViewModel(),
                DateSent = DateTime.Now
            };

            _mockClaimsGetter
            .Setup(x => x.UserId(It.IsAny <IEnumerable <Claim> >()))
            .Returns(privateMessage.Sender.Id);

            //Act
            var result = await _privateMessagesController.AddPrivateMessageAsync(privateMessage);

            //Asert
            result.Should().BeOfType <NoContentResult>();
        }
コード例 #15
0
        public async Task AddPrivateMessageAsync_WithGivenPrivateMessage_CallsPrivateMessagesService()
        {
            //Arrange
            var privateMessage = new PrivateMessageViewModel
            {
                Title    = "Titlu",
                Text     = "Text",
                Sender   = new IdAndDisplayNameUserViewModel(),
                Receiver = new IdAndDisplayNameUserViewModel(),
                DateSent = DateTime.Now
            };

            _mockClaimsGetter
            .Setup(x => x.UserId(It.IsAny <IEnumerable <Claim> >()))
            .Returns(privateMessage.Sender.Id);

            //Act
            await _privateMessagesController.AddPrivateMessageAsync(privateMessage);

            //Asert
            _mockPrivateMessagesService.Verify(x => x.SavePrivateMessageAsync(privateMessage), Times.Once);
        }
コード例 #16
0
        public async Task <ActionResult> UpdatePrivateMessageStatusAsync(PrivateMessageViewModel privateMessage)
        {
            await _privateMessagesService.UpdateOrDeletePrivateMessage(privateMessage);

            return(NoContent());
        }
コード例 #17
0
 public void CreatePrivateMessage(PrivateMessageViewModel privateMessage)
 {
     _privateMessageRepository.Insert(_mapper.Map <PrivateMessage>(privateMessage));
 }
コード例 #18
0
 public void Send(PrivateMessageViewModel privateMessageViewModel)
 {
 }
コード例 #19
0
        public async Task <ActionResult> EditPrivateMessageAsync(PrivateMessageViewModel privateMessage)
        {
            await _privateMessagesService.SavePrivateMessageAsync(privateMessage);

            return(NoContent());
        }
コード例 #20
0
 /// The methods provided in this section are simply used to allow
 /// NavigationHelper to respond to the page's navigation methods.
 ///
 /// Page specific logic should be placed in event handlers for the
 /// <see cref="GridCS.Common.NavigationHelper.LoadState" />
 /// and
 /// <see cref="GridCS.Common.NavigationHelper.SaveState" />
 /// .
 /// The navigation parameter is available in the LoadState method
 /// in addition to page state preserved during an earlier session.
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     _vm = (PrivateMessageViewModel)DataContext;
     _navigationHelper.OnNavigatedTo(e);
 }
コード例 #21
0
 public Task SavePrivateMessageAsync(PrivateMessageViewModel viewModel)
 => viewModel.Id == 0 ? AddPrivateMessageAsync(viewModel) : EditPrivateMessageAsync(viewModel);