public async Task <BaseApiResponse> Edit(EditAnnouncementRequest request)
        {
            request.CheckNotNull(nameof(request));

            var command = new UpdateAnnouncementCommand(
                request.Title,
                request.Body
                )
            {
                AggregateRootId = request.Id
            };
            var result = await ExecuteCommandAsync(command);

            if (!result.IsSuccess())
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "命令没有执行成功:{0}".FormatWith(result.GetErrorMessage())
                });
            }

            //添加操作记录
            var currentAdmin = _contextService.GetCurrentAdmin(HttpContext.Current);

            RecordOperat(currentAdmin.AdminId.ToGuid(), "编辑公告", request.Id, request.Title);

            return(new BaseApiResponse());
        }
        public async Task <IActionResult> UpdateAnnouncementAsync([FromBody] UpdateAnnouncementRequest request)
        {
            if (GetAnnouncement(request.AnnouncementId).AuthorId != AuthorizedUser.Id)
            {
                Unauthorized();
            }

            var command = new UpdateAnnouncementCommand(request.AnnouncementId, request.Title, request.ShortDescription,
                                                        request.Description, request.Requirements, request.Tags);
            await commandBus.ExecuteAsync(command);

            return(Ok());
        }
        public async Task <BaseApiResponse> Edit(EditAnnouncementRequest request)
        {
            request.CheckNotNull(nameof(request));

            var command = new UpdateAnnouncementCommand(
                request.Title,
                request.Body
                )
            {
                AggregateRootId = request.Id
            };
            var result = await ExecuteCommandAsync(command);

            if (!result.IsSuccess())
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "命令没有执行成功:{0}".FormatWith(result.GetErrorMessage())
                });
            }
            return(new BaseApiResponse());
        }
        public async Task ShouldUpdateAnnouncementProperly()
        {
            //Arrange
            var tag     = "tag";
            var tagList = new List <string>
            {
                tag
            };
            var repository   = new Mock <IAnnouncementsRepository>();
            var announcement = new Announcement(new Guid(), new Guid(), string.Empty, string.Empty, string.Empty, new List <string>(),
                                                new List <string>());
            var dateUpdated = new DateTime();

            repository.Setup(x => x.Get(It.IsAny <Guid>())).Returns(announcement);
            repository.Setup(x => x.UpdateAsync(It.IsAny <Announcement>()))
            .Callback <Announcement>(x =>
            {
                dateUpdated  = x.ChangedAt;
                announcement = x;
            })
            .Returns(Task.CompletedTask);

            var updateAnnouncementHandler = new UpdateConversationHandler(repository.Object);
            var command = new UpdateAnnouncementCommand(new Guid(), "test", "test", "test", tags: tagList);

            //Act
            await updateAnnouncementHandler.HandleAsync(command);

            //Assert
            repository.Verify(x => x.Get(It.IsAny <Guid>()), Times.Once);
            repository.Verify(x => x.UpdateAsync(It.IsAny <Announcement>()), Times.Once);
            Assert.That(announcement.Description, Is.EqualTo((command.Description)));
            Assert.That(announcement.ShortDescription, Is.EqualTo(command.ShortDescription));
            Assert.That(dateUpdated, Is.EqualTo(announcement.ChangedAt));
            Assert.That(announcement.Tags.Any(x => x.Contains(tag)), Is.True);
        }
Beispiel #5
0
 public void Handle(ICommandContext context, UpdateAnnouncementCommand command)
 {
     context.Get <Announcement>(command.AggregateRootId).Update(command.Title, command.Body);
 }
 public async Task <ActionResult <string> > Update([FromBody] UpdateAnnouncementCommand command)
 {
     return(Ok(await Mediator.Send(command)));
 }