public async Task <SetPublishedMessageResponse> SetPublishedAsync([FromBody] SetPublishedMessageRequest request)
        {
            request.RequiredArgumentNotNull(nameof(request));
            request.RequiredArgumnetNotNullAndNotDefaultValue <SetPublishedMessageRequest, Guid>(() => request.Id);

            var message = await _messageRepository.GetByIdAsync(id : request.Id);

            message.RequiredNotNull(nameof(message));

            if (message.PublishedDateTime.HasValue == true)
            {
                return(new SetPublishedMessageResponse
                {
                    IsSetPublished = false,
                    PublishedDateTime = message.PublishedDateTime.Value,
                    RowVersion = message.RowVersion
                });
            }

            if (message.DateOfDelete.HasValue == true)
            {
                throw new InvalidOperationException($"message.DateOfDelete != null, message: {message.Serialize()}");
            }

            message.PublishedDateTime = _dateTimeService.GetDateTimeNow();
            await _messageRepository.UpdateAsync(message);

            return(new SetPublishedMessageResponse
            {
                IsSetPublished = true,
                RowVersion = message.RowVersion,
                PublishedDateTime = message.PublishedDateTime.Value
            });
        }
Пример #2
0
 public async Task <SetPublishedMessageResponse> SetPublishedAsync(SetPublishedMessageRequest request,
                                                                   [CallerMemberName] string callerMemberName = null)
 => await ExecutePostAsync <SetPublishedMessageResponse, SetPublishedMessageRequest>(
     path : "/api/message/set-published",
     request : request,
     callerMemberName : callerMemberName);